#!/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()