blob: e66d7ed4d00ab2a11675360ec4896cc692ab815b [file] [log] [blame]
# Copyright 2021 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.
"""Test the kernel_builder module."""
import os
from chromite.lib import constants
from chromite.lib import cros_test_lib
from chromite.lib import kernel_builder
class BuilderTest(cros_test_lib.RunCommandTestCase):
"""Test Builder."""
def setUp(self):
"""Sets up common objects for testing."""
self._kb = kernel_builder.Builder('foo-board', 'foo-tmp', 'foo-root')
def testCreateCustomKernel(self):
"""Tests CreateCustomKernel()."""
self.PatchObject(os.environ, 'get', return_value='z')
self.rc.AddCmdResult(['portageq-foo-board', 'expand_virtual',
'/build/foo-board', 'virtual/linux-sources'],
stdout='kernel')
self._kb.CreateCustomKernel(['x', 'y'])
emerge_board = 'emerge-foo-board'
extra_env = {
'PKGDIR': os.path.join('foo-tmp', 'packages'),
'USE': 'z x y'
}
self.assertCommandCalled(
[emerge_board, 'chromeos-base/chromeos-initramfs'],
enter_chroot=True, extra_env=extra_env)
self.assertCommandCalled(
[emerge_board, '--onlydeps', 'kernel'],
enter_chroot=True, extra_env=extra_env)
self.assertCommandCalled(
[emerge_board, '--buildpkgonly', 'kernel'],
enter_chroot=True, extra_env=extra_env)
self.assertCommandCalled(
[emerge_board, '--usepkgonly', '--root=foo-root', 'kernel'],
enter_chroot=True, extra_env=extra_env)
def testCreateCustomKernelOverrideUseFlag(self):
"""Tests CreateCustomKernel()."""
self.rc.AddCmdResult(['portageq-foo-board', 'expand_virtual',
'/build/foo-board', 'virtual/linux-sources'],
stdout='kernel')
self._kb.CreateCustomKernel(['x', 'y'], ['foo'])
emerge_board = 'emerge-foo-board'
extra_env = {
'PKGDIR': os.path.join('foo-tmp', 'packages'),
'USE': 'foo x y'
}
self.assertCommandCalled(
[emerge_board, 'chromeos-base/chromeos-initramfs'],
enter_chroot=True, extra_env=extra_env)
self.assertCommandCalled(
[emerge_board, '--onlydeps', 'kernel'],
enter_chroot=True, extra_env=extra_env)
self.assertCommandCalled(
[emerge_board, '--buildpkgonly', 'kernel'],
enter_chroot=True, extra_env=extra_env)
self.assertCommandCalled(
[emerge_board, '--usepkgonly', '--root=foo-root', 'kernel'],
enter_chroot=True, extra_env=extra_env)
def testCreateKernelImageDefaultArgs(self):
"""Tests CreateKernelImage() with default arguments."""
self.rc.AddCmdResult(['portageq-foo-board', 'envvar', 'ARCH'],
stdout='foo-arch')
self._kb.CreateKernelImage('output')
self.assertCommandCalled([
os.path.join(constants.CROSUTILS_DIR, 'build_kernel_image.sh'),
'--board=foo-board',
'--arch=foo-arch',
'--to=output',
'--vmlinuz=foo-root/boot/vmlinuz',
'--working_dir=foo-tmp',
'--keep_work',
f'--keys_dir={constants.VBOOT_DEVKEYS_DIR}',
f'--public={constants.KERNEL_PUBLIC_SUBKEY}',
f'--private={constants.KERNEL_DATA_PRIVATE_KEY}',
f'--keyblock={constants.KERNEL_KEYBLOCK}',
], enter_chroot=True)
def testCreateKernelImageWithArgs(self):
"""Tests CreateKernelImage() with default arguments."""
self.rc.AddCmdResult(['portageq-foo-board', 'envvar', 'ARCH'],
stdout='foo-arch')
self._kb.CreateKernelImage(
'output',
keys_dir=constants.VBOOT_DEVKEYS_DIR,
public_key=constants.RECOVERY_PUBLIC_KEY,
private_key=constants.RECOVERY_DATA_PRIVATE_KEY,
keyblock=constants.RECOVERY_KEYBLOCK,
boot_args='x y=foo',
serial='ttyfoo',
disable_rootfs_verification=True)
self.assertCommandCalled([
os.path.join(constants.CROSUTILS_DIR, 'build_kernel_image.sh'),
'--board=foo-board',
'--arch=foo-arch',
'--to=output',
'--vmlinuz=foo-root/boot/vmlinuz',
'--working_dir=foo-tmp',
'--keep_work',
f'--keys_dir={constants.VBOOT_DEVKEYS_DIR}',
f'--public={constants.RECOVERY_PUBLIC_KEY}',
f'--private={constants.RECOVERY_DATA_PRIVATE_KEY}',
f'--keyblock={constants.RECOVERY_KEYBLOCK}',
'--noenable_rootfs_verification',
'--boot_args="x y=foo"',
'--enable_serial=ttyfoo',
], enter_chroot=True)