2 # Copyright (c) 2014 The Chromium OS Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file.
6 """Unittests for prebuilts."""
8 from __future__ import print_function
14 sys.path.insert(0, constants.SOURCE_ROOT)
15 from chromite.cbuildbot import prebuilts
16 from chromite.lib import cros_build_lib_unittest
17 from chromite.lib import cros_test_lib
18 from chromite.lib import osutils
20 # TODO(build): Finish test wrapper (http://crosbug.com/37517).
21 # Until then, this has to be after the chromite imports.
25 # pylint: disable=W0212
26 class PrebuiltTest(cros_build_lib_unittest.RunCommandTempDirTestCase):
27 """Test general cbuildbot command methods."""
30 self._board = 'test-board'
31 self._buildroot = self.tempdir
32 self._overlays = ['%s/src/third_party/chromiumos-overlay' % self._buildroot]
33 self._chroot = os.path.join(self._buildroot, 'chroot')
34 os.makedirs(os.path.join(self._buildroot, '.repo'))
36 def testUploadPrebuilts(self, builder_type=constants.PFQ_TYPE, private=False,
38 """Test UploadPrebuilts with a public location."""
39 prebuilts.UploadPrebuilts(builder_type, chrome_rev, private,
40 buildroot=self._buildroot, board=self._board)
41 self.assertCommandContains([builder_type, 'gs://chromeos-prebuilt'])
43 def testUploadPrivatePrebuilts(self):
44 """Test UploadPrebuilts with a private location."""
45 self.testUploadPrebuilts(private=True)
47 def testChromePrebuilts(self):
48 """Test UploadPrebuilts for Chrome prebuilts."""
49 self.testUploadPrebuilts(builder_type=constants.CHROME_PFQ_TYPE,
52 def testSdkPrebuilts(self):
53 """Test UploadPrebuilts for SDK builds."""
54 # A magical date for a magical time.
55 version = '1994.04.02.000000'
57 # Fake out toolchain tarballs.
58 tarball_dir = os.path.join(self._buildroot, constants.DEFAULT_CHROOT_DIR,
59 constants.SDK_TOOLCHAINS_OUTPUT)
60 osutils.SafeMakedirs(tarball_dir)
63 for tarball_base in ('i686', 'arm-none-eabi'):
64 tarball = '%s.tar.xz' % tarball_base
65 tarball_path = os.path.join(tarball_dir, tarball)
66 osutils.Touch(tarball_path)
67 tarball_arg = '%s:%s' % (tarball_base, tarball_path)
68 tarball_args.append(['--toolchain-tarball', tarball_arg])
70 with mock.patch.object(prebuilts, '_GenerateSdkVersion',
71 return_value=version):
72 self.testUploadPrebuilts(builder_type=constants.CHROOT_BUILDER_TYPE)
73 self.assertCommandContains(['--toolchain-upload-path',
74 '1994/04/%%(target)s-%(version)s.tar.xz'])
75 for args in tarball_args:
76 self.assertCommandContains(args)
77 self.assertCommandContains(['--set-version', version])
78 self.assertCommandContains(['--prepackaged-tarball',
79 os.path.join(self._buildroot,
82 def testDevInstallerPrebuilts(self, packages=('package1', 'package2')):
83 """Test UploadDevInstallerPrebuilts."""
84 args = ['gs://dontcare', 'some_path_to_key', 'https://my_test/location']
85 with mock.patch.object(prebuilts, '_AddPackagesForPrebuilt',
86 return_value=packages):
87 prebuilts.UploadDevInstallerPrebuilts(*args, buildroot=self._buildroot,
89 self.assertCommandContains([constants.CANARY_TYPE] + args[2:] + args[0:2])
91 def testAddPackagesForPrebuilt(self):
92 """Test AddPackagesForPrebuilt."""
93 self.assertEqual(prebuilts._AddPackagesForPrebuilt('/'), None)
98 ca-t3/pk-g4-4.0.1-r333
105 cmds = ['--packages=' + x for x in pkgs]
106 f = os.path.join(self.tempdir, 'package.provided')
107 osutils.WriteFile(f, data)
108 self.assertEqual(prebuilts._AddPackagesForPrebuilt(f), cmds)
110 def testMissingDevInstallerFile(self):
111 """Test that we raise an exception when the installer file is missing."""
112 self.assertRaises(prebuilts.PackageFileMissing,
113 self.testDevInstallerPrebuilts, packages=())
116 if __name__ == '__main__':