blob: f1a6a626d999744198d9faeb3d95947dfed68f42 [file] [log] [blame]
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright 2020 The ChromiumOS Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Unit tests for chroot helper functions."""
import subprocess
import unittest
import unittest.mock as mock
import chroot
# These are unittests; protected access is OK to a point.
# pylint: disable=protected-access
class HelperFunctionsTest(unittest.TestCase):
"""Test class for updating LLVM hashes of packages."""
@mock.patch.object(subprocess, "check_output")
def testSucceedsToGetChrootEbuildPathForPackage(self, mock_chroot_command):
package_chroot_path = "/chroot/path/to/package.ebuild"
# Emulate ChrootRunCommandWOutput behavior when a chroot path is found for
# a valid package.
mock_chroot_command.return_value = package_chroot_path
chroot_path = "/test/chroot/path"
package_list = ["new-test/package"]
self.assertEqual(
chroot.GetChrootEbuildPaths(chroot_path, package_list),
[package_chroot_path],
)
mock_chroot_command.assert_called_once()
def testFailedToConvertChrootPathWithInvalidPrefix(self):
chroot_path = "/path/to/chroot"
chroot_file_path = "/src/package.ebuild"
# Verify the exception is raised when a chroot path does not have the prefix
# '/mnt/host/source/'.
with self.assertRaises(ValueError) as err:
chroot.ConvertChrootPathsToAbsolutePaths(
chroot_path, [chroot_file_path]
)
self.assertEqual(
str(err.exception),
"Invalid prefix for the chroot path: " "%s" % chroot_file_path,
)
def testSucceedsToConvertChrootPathToAbsolutePath(self):
chroot_path = "/path/to/chroot"
chroot_file_paths = ["/mnt/host/source/src/package.ebuild"]
expected_abs_path = "/path/to/chroot/src/package.ebuild"
self.assertEqual(
chroot.ConvertChrootPathsToAbsolutePaths(
chroot_path, chroot_file_paths
),
[expected_abs_path],
)
if __name__ == "__main__":
unittest.main()