blob: 7689193014380f19067332db56b3cef6b41ce7f8 [file] [log] [blame]
# Copyright 2015 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.
"""Tests the chroot_util module."""
from __future__ import print_function
import itertools
from chromite.lib import chroot_util
from chromite.lib import cros_build_lib
from chromite.lib import cros_test_lib
if cros_build_lib.IsInsideChroot():
from chromite.scripts import cros_list_modified_packages as workon
# pylint: disable=protected-access
class ChrootUtilTest(cros_test_lib.MockTempDirTestCase):
"""Test class for the chroot_util functions."""
def setUp(self):
self.last_rc_cmd = None
self.last_rc_kwargs = None
self.PatchObject(cros_build_lib, 'RunCommand',
side_effect=self.OnRunCommand)
def OnRunCommand(self, cmd, **kwargs):
self.last_rc_cmd = cmd
self.last_rc_kwargs = kwargs
def testGetToolchainPackages(self):
"""Test GetToolchainPackages function without mocking."""
packages = chroot_util._GetToolchainPackages()
self.assertTrue(packages)
def testEmerge(self):
"""Tests correct invocation of emerge."""
packages = ['foo-app/bar', 'sys-baz/clap']
self.PatchObject(workon, 'ListModifiedWorkonPackages',
return_value=[packages[0]])
toolchain_packages = chroot_util._GetToolchainPackages()
self.PatchObject(chroot_util, '_GetToolchainPackages',
return_value=toolchain_packages)
toolchain_package_list = ' '.join(toolchain_packages)
board = 'fooboard'
input_values = [
[True, False], # host
[True, False], # with_deps
[True, False], # rebuild_deps
[True, False], # use_binary
[0, 1, 2, 3], # jobs
[True, False], # debug_output
]
inputs = itertools.product(*input_values)
for host, with_deps, rebuild_deps, use_binary, jobs, debug_output in inputs:
chroot_util.Emerge(packages, board=board, host=host,
with_deps=with_deps, rebuild_deps=rebuild_deps,
use_binary=use_binary, jobs=jobs,
debug_output=debug_output)
cmd = self.last_rc_cmd
self.assertEquals(not host, '--board=%s' % board in cmd)
self.assertEquals(with_deps, '--deep' in cmd)
self.assertEquals(not with_deps, '--nodeps' in cmd)
self.assertEquals(rebuild_deps, '--rebuild-if-unbuilt' in cmd)
self.assertEquals(use_binary, '-g' in cmd)
self.assertEquals(use_binary, '--with-bdeps=y' in cmd)
self.assertEquals(use_binary and host,
'--useoldpkg-atoms=%s' % toolchain_package_list in cmd)
self.assertEquals(bool(jobs), '--jobs=%d' % jobs in cmd)
self.assertEquals(debug_output, '--show-output' in cmd)