Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / chromite / cbuildbot / prebuilts_unittest.py
1 #!/usr/bin/python
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.
5
6 """Unittests for prebuilts."""
7
8 from __future__ import print_function
9
10 import os
11 import sys
12
13 import constants
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
19
20 # TODO(build): Finish test wrapper (http://crosbug.com/37517).
21 # Until then, this has to be after the chromite imports.
22 import mock
23
24
25 # pylint: disable=W0212
26 class PrebuiltTest(cros_build_lib_unittest.RunCommandTempDirTestCase):
27   """Test general cbuildbot command methods."""
28
29   def setUp(self):
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'))
35
36   def testUploadPrebuilts(self, builder_type=constants.PFQ_TYPE, private=False,
37                           chrome_rev=None):
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'])
42
43   def testUploadPrivatePrebuilts(self):
44     """Test UploadPrebuilts with a private location."""
45     self.testUploadPrebuilts(private=True)
46
47   def testChromePrebuilts(self):
48     """Test UploadPrebuilts for Chrome prebuilts."""
49     self.testUploadPrebuilts(builder_type=constants.CHROME_PFQ_TYPE,
50                              chrome_rev='tot')
51
52   def testSdkPrebuilts(self):
53     """Test UploadPrebuilts for SDK builds."""
54     # A magical date for a magical time.
55     version = '1994.04.02.000000'
56
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)
61
62     tarball_args = []
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])
69
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,
80                                              'built-sdk.tar.xz')])
81
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,
88                                             board=self._board)
89     self.assertCommandContains([constants.CANARY_TYPE] + args[2:] + args[0:2])
90
91   def testAddPackagesForPrebuilt(self):
92     """Test AddPackagesForPrebuilt."""
93     self.assertEqual(prebuilts._AddPackagesForPrebuilt('/'), None)
94
95     data = """# comment!
96 cat/pkg-0
97 ca-t2/pkg2-123
98 ca-t3/pk-g4-4.0.1-r333
99 """
100     pkgs = [
101         'cat/pkg',
102         'ca-t2/pkg2',
103         'ca-t3/pk-g4',
104     ]
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)
109
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=())
114
115
116 if __name__ == '__main__':
117   cros_test_lib.main()