diff options
Diffstat (limited to 'llvm_tools/chroot_unittest.py')
-rwxr-xr-x | llvm_tools/chroot_unittest.py | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/llvm_tools/chroot_unittest.py b/llvm_tools/chroot_unittest.py new file mode 100755 index 00000000..5eec5675 --- /dev/null +++ b/llvm_tools/chroot_unittest.py @@ -0,0 +1,66 @@ +#!/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() |