blob: f49865b5d9744256f0069a394cc514285b0242c6 [file] [log] [blame]
# Copyright (c) 2014 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.
"""Unittests for prebuilts."""
from __future__ import print_function
import mock
import os
from chromite.cbuildbot import constants
from chromite.cbuildbot import prebuilts
from chromite.lib import cros_build_lib_unittest
from chromite.lib import osutils
# pylint: disable=W0212
class PrebuiltTest(cros_build_lib_unittest.RunCommandTempDirTestCase):
"""Test general cbuildbot command methods."""
def setUp(self):
self._board = 'test-board'
self._buildroot = self.tempdir
self._overlays = ['%s/src/third_party/chromiumos-overlay' % self._buildroot]
self._chroot = os.path.join(self._buildroot, 'chroot')
os.makedirs(os.path.join(self._buildroot, '.repo'))
def testUploadPrebuilts(self, builder_type=constants.PFQ_TYPE, private=False,
chrome_rev=None, version=None):
"""Test UploadPrebuilts with a public location."""
prebuilts.UploadPrebuilts(builder_type, chrome_rev, private,
buildroot=self._buildroot, board=self._board,
version=version)
self.assertCommandContains([builder_type, 'gs://chromeos-prebuilt'])
def testUploadPrivatePrebuilts(self):
"""Test UploadPrebuilts with a private location."""
self.testUploadPrebuilts(private=True)
def testChromePrebuilts(self):
"""Test UploadPrebuilts for Chrome prebuilts."""
self.testUploadPrebuilts(builder_type=constants.CHROME_PFQ_TYPE,
chrome_rev='tot')
def testSdkPrebuilts(self):
"""Test UploadPrebuilts for SDK builds."""
# A magical date for a magical time.
version = '1994.04.02.000000'
# Fake out toolchains overlay tarballs.
tarball_dir = os.path.join(self._buildroot, constants.DEFAULT_CHROOT_DIR,
constants.SDK_OVERLAYS_OUTPUT)
osutils.SafeMakedirs(tarball_dir)
toolchain_overlay_tarball_args = []
# Sample toolchain combos, corresponding to x86-alex and daisy.
toolchain_combos = (
('i686-pc-linux-gnu',),
('armv7a-cros-linux-gnueabi', 'arm-none-eabi'),
)
for toolchains in ['-'.join(sorted(combo)) for combo in toolchain_combos]:
tarball = 'built-sdk-overlay-toolchains-%s.tar.xz' % toolchains
tarball_path = os.path.join(tarball_dir, tarball)
osutils.Touch(tarball_path)
tarball_arg = '%s:%s' % (toolchains, tarball_path)
toolchain_overlay_tarball_args.append(['--toolchains-overlay-tarball',
tarball_arg])
# Fake out toolchain tarballs.
tarball_dir = os.path.join(self._buildroot, constants.DEFAULT_CHROOT_DIR,
constants.SDK_TOOLCHAINS_OUTPUT)
osutils.SafeMakedirs(tarball_dir)
toolchain_tarball_args = []
for tarball_base in ('i686', 'arm-none-eabi'):
tarball = '%s.tar.xz' % tarball_base
tarball_path = os.path.join(tarball_dir, tarball)
osutils.Touch(tarball_path)
tarball_arg = '%s:%s' % (tarball_base, tarball_path)
toolchain_tarball_args.append(['--toolchain-tarball', tarball_arg])
self.testUploadPrebuilts(builder_type=constants.CHROOT_BUILDER_TYPE,
version=version)
self.assertCommandContains([
'--toolchains-overlay-upload-path',
'1994/04/cros-sdk-overlay-toolchains-%%(toolchains)s-'
'%(version)s.tar.xz'])
self.assertCommandContains(['--toolchain-upload-path',
'1994/04/%%(target)s-%(version)s.tar.xz'])
for args in toolchain_overlay_tarball_args + toolchain_tarball_args:
self.assertCommandContains(args)
self.assertCommandContains(['--set-version', version])
self.assertCommandContains(['--prepackaged-tarball',
os.path.join(self._buildroot,
'built-sdk.tar.xz')])
def testDevInstallerPrebuilts(self, packages=('package1', 'package2')):
"""Test UploadDevInstallerPrebuilts."""
args = ['gs://dontcare', 'some_path_to_key', 'https://my_test/location']
with mock.patch.object(prebuilts, '_AddPackagesForPrebuilt',
return_value=packages):
prebuilts.UploadDevInstallerPrebuilts(*args, buildroot=self._buildroot,
board=self._board)
self.assertCommandContains([constants.CANARY_TYPE] + args[2:] + args[0:2])
def testAddPackagesForPrebuilt(self):
"""Test AddPackagesForPrebuilt."""
self.assertEqual(prebuilts._AddPackagesForPrebuilt('/'), None)
data = """# comment!
cat/pkg-0
ca-t2/pkg2-123
ca-t3/pk-g4-4.0.1-r333
"""
pkgs = [
'cat/pkg',
'ca-t2/pkg2',
'ca-t3/pk-g4',
]
cmds = ['--packages=' + x for x in pkgs]
f = os.path.join(self.tempdir, 'package.provided')
osutils.WriteFile(f, data)
self.assertEqual(prebuilts._AddPackagesForPrebuilt(f), cmds)
def testMissingDevInstallerFile(self):
"""Test that we raise an exception when the installer file is missing."""
self.assertRaises(prebuilts.PackageFileMissing,
self.testDevInstallerPrebuilts, packages=())