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.
67 lines
2.0 KiB
67 lines
2.0 KiB
4 months ago
|
#!/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()
|