You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.2 KiB
74 lines
2.2 KiB
#!/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()
|