# 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_build_lib_unittest if cros_build_lib.IsInsideChroot(): from chromite.scripts import cros_list_modified_packages # pylint: disable=protected-access class ChrootUtilTest(cros_build_lib_unittest.RunCommandTempDirTestCase): """Test class for the chroot_util functions.""" def testEmerge(self): """Tests correct invocation of emerge.""" packages = ['foo-app/bar', 'sys-baz/clap'] self.PatchObject(cros_list_modified_packages, 'ListModifiedWorkonPackages', return_value=[packages[0]]) toolchain_packages = [ 'sys-devel/binutils', 'sys-devel/gcc', 'sys-kernel/linux-headers', 'sys-libs/glibc', 'sys-devel/gdb' ] self.PatchObject(chroot_util, '_GetToolchainPackages', return_value=toolchain_packages) toolchain_package_list = ' '.join(toolchain_packages) input_values = [ ['/', '/build/thesysrootname'], # sysroot [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 (sysroot, with_deps, rebuild_deps, use_binary, jobs, debug_output) in inputs: chroot_util.Emerge(packages, sysroot=sysroot, with_deps=with_deps, rebuild_deps=rebuild_deps, use_binary=use_binary, jobs=jobs, debug_output=debug_output) cmd = self.rc.call_args_list[-1][0][-1] self.assertEquals(sysroot != '/', any(p.startswith('--sysroot') for p 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 sysroot == '/', '--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)