blob: 5eec56756666cb015d224b3ae1ce64a277153e37 [file] [log] [blame]
#!/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()