Index: prebuilt_unittest.py |
diff --git a/prebuilt_unittest.py b/prebuilt_unittest.py |
new file mode 100755 |
index 0000000000000000000000000000000000000000..f5cd97f7ed3bfc6f19b0111e0c3303bcd423da71 |
--- /dev/null |
+++ b/prebuilt_unittest.py |
@@ -0,0 +1,131 @@ |
+#!/usr/bin/python |
+# Copyright (c) 2010 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. |
+ |
+import mox |
+import os |
+import prebuilt |
+import tempfile |
+import unittest |
+from chromite.lib import cros_build_lib |
+ |
+class TestUpdateFile(unittest.TestCase): |
+ |
+ def setUp(self): |
+ self.contents_str = ['stage 20100309/stage3-amd64-20100309.tar.bz2', |
+ 'portage portage-20100310.tar.bz2'] |
+ temp_fd, self.version_file = tempfile.mkstemp() |
+ os.write(temp_fd, '\n'.join(self.contents_str)) |
+ os.close(temp_fd) |
+ |
+ def tearDown(self): |
+ os.remove(self.version_file) |
+ |
+ def _read_version_file(self): |
+ """Read the contents of self.version_file and return as a list.""" |
+ version_fh = open(self.version_file) |
+ try: |
+ return [line.strip() for line in version_fh.readlines()] |
+ finally: |
+ version_fh.close() |
+ |
+ def _verify_key_pair(self, key, val): |
+ file_contents = self._read_version_file() |
+ for entry in file_contents: |
+ file_key, file_val = entry.split() |
+ if file_key == key: |
+ if val == file_val: |
+ break |
+ else: |
+ self.fail('Could not find "%s %s" in version file' % (key, val)) |
+ |
+ def testAddVariableThatDoesNotExist(self): |
+ """Add in a new variable that was no present in the file.""" |
+ key = 'x86-testcase' |
+ value = '1234567' |
+ prebuilt.UpdateLocalFile(self.version_file, key, value) |
+ current_version_str = self._read_version_file() |
+ self._verify_key_pair(key, value) |
+ |
+ def testUpdateVariable(self): |
+ """Test updating a variable that already exists.""" |
+ # take first entry in contents |
+ key, val = self.contents_str[0].split() |
+ new_val = 'test_update' |
+ self._verify_key_pair(key, val) |
+ prebuilt.UpdateLocalFile(self.version_file, key, new_val) |
+ self._verify_key_pair(key, new_val) |
+ |
+ |
+class TestPrebuiltFilters(unittest.TestCase): |
+ |
+ def setUp(self): |
+ self.FAUX_FILTERS = set(['oob', 'bibby', 'bob']) |
+ temp_fd, self.filter_filename = tempfile.mkstemp() |
+ os.write(temp_fd, '\n'.join(self.FAUX_FILTERS)) |
+ os.close(temp_fd) |
+ |
+ def tearDown(self): |
+ os.remove(self.filter_filename) |
+ |
+ def testLoadFilterFile(self): |
+ """ |
+ Call filter packages with a list of packages that should be filtered |
+ and ensure they are. |
+ """ |
+ loaded_filters = prebuilt.LoadFilterFile(self.filter_filename) |
+ self.assertEqual(self.FAUX_FILTERS, loaded_filters) |
+ |
+ def testFilterPattern(self): |
+ """Check that particular packages are filtered properly.""" |
+ prebuilt.LoadFilterFile(self.filter_filename) |
+ file_list = ['/usr/local/package/oob', |
+ '/usr/local/package/other/path/valid', |
+ '/var/tmp/bibby.file', |
+ '/tmp/b/o/b'] |
+ expected_list = ['/usr/local/package/other/path/valid', |
+ '/tmp/b/o/b'] |
+ filtered_list = [file for file in file_list if not |
+ prebuilt.ShouldFilterPackage(file)] |
+ self.assertEqual(expected_list, filtered_list) |
+ |
+ |
+class TestPrebuilt(unittest.TestCase): |
+ fake_path = '/b/cbuild/build/chroot/build/x86-dogfood/' |
+ bin_package_mock = ['packages/x11-misc/shared-mime-info-0.70.tbz2', |
+ 'packages/x11-misc/util-macros-1.5.0.tbz2', |
+ 'packages/x11-misc/xbitmaps-1.1.0.tbz2', |
+ 'packages/x11-misc/read-edid-1.4.2.tbz2', |
+ 'packages/x11-misc/xdg-utils-1.0.2-r3.tbz2'] |
+ |
+ files_to_sync = [os.path.join(fake_path, file) for file in bin_package_mock] |
+ |
+ def setUp(self): |
+ self.mox = mox.Mox() |
+ |
+ def tearDown(self): |
+ self.mox.UnsetStubs() |
+ self.mox.VerifyAll() |
+ |
+ def _generate_dict_results(self, gs_bucket_path): |
+ """ |
+ Generate a dictionary result similar to GenerateUploadDict |
+ """ |
+ results = {} |
+ for entry in self.files_to_sync: |
+ results[entry] = os.path.join( |
+ gs_bucket_path, entry.replace(self.fake_path, '').lstrip('/')) |
+ return results |
+ |
+ def testGenerateUploadDict(self): |
+ gs_bucket_path = 'gs://chromeos-prebuilt/host/version' |
+ self.mox.StubOutWithMock(cros_build_lib, 'ListFiles') |
+ cros_build_lib.ListFiles(' ').AndReturn(self.files_to_sync) |
+ self.mox.ReplayAll() |
+ result = prebuilt.GenerateUploadDict(' ', gs_bucket_path, self.fake_path) |
+ self.assertEqual(result, self._generate_dict_results(gs_bucket_path)) |
+ |
+ |
+if __name__ == '__main__': |
+ unittest.main() |