| #!/usr/bin/env python3 |
| # -*- coding: utf-8 -*- |
| # Copyright 2020 The Chromium OS Authors. All rights reserved. |
| # 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.""" |
| |
| from __future__ import print_function |
| |
| 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() |