OLD | NEW |
(Empty) | |
| 1 #!/usr/bin/python |
| 2 # Copyright (c) 2010 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 import mox |
| 7 import os |
| 8 import prebuilt |
| 9 import tempfile |
| 10 import unittest |
| 11 from chromite.lib import cros_build_lib |
| 12 |
| 13 class TestUpdateFile(unittest.TestCase): |
| 14 |
| 15 def setUp(self): |
| 16 self.contents_str = ['stage 20100309/stage3-amd64-20100309.tar.bz2', |
| 17 'portage portage-20100310.tar.bz2'] |
| 18 temp_fd, self.version_file = tempfile.mkstemp() |
| 19 os.write(temp_fd, '\n'.join(self.contents_str)) |
| 20 os.close(temp_fd) |
| 21 |
| 22 def tearDown(self): |
| 23 os.remove(self.version_file) |
| 24 |
| 25 def _read_version_file(self): |
| 26 """Read the contents of self.version_file and return as a list.""" |
| 27 version_fh = open(self.version_file) |
| 28 try: |
| 29 return [line.strip() for line in version_fh.readlines()] |
| 30 finally: |
| 31 version_fh.close() |
| 32 |
| 33 def _verify_key_pair(self, key, val): |
| 34 file_contents = self._read_version_file() |
| 35 for entry in file_contents: |
| 36 file_key, file_val = entry.split() |
| 37 if file_key == key: |
| 38 if val == file_val: |
| 39 break |
| 40 else: |
| 41 self.fail('Could not find "%s %s" in version file' % (key, val)) |
| 42 |
| 43 def testAddVariableThatDoesNotExist(self): |
| 44 """Add in a new variable that was no present in the file.""" |
| 45 key = 'x86-testcase' |
| 46 value = '1234567' |
| 47 prebuilt.UpdateLocalFile(self.version_file, key, value) |
| 48 current_version_str = self._read_version_file() |
| 49 self._verify_key_pair(key, value) |
| 50 |
| 51 def testUpdateVariable(self): |
| 52 """Test updating a variable that already exists.""" |
| 53 # take first entry in contents |
| 54 key, val = self.contents_str[0].split() |
| 55 new_val = 'test_update' |
| 56 self._verify_key_pair(key, val) |
| 57 prebuilt.UpdateLocalFile(self.version_file, key, new_val) |
| 58 self._verify_key_pair(key, new_val) |
| 59 |
| 60 |
| 61 class TestPrebuiltFilters(unittest.TestCase): |
| 62 |
| 63 def setUp(self): |
| 64 self.FAUX_FILTERS = set(['oob', 'bibby', 'bob']) |
| 65 temp_fd, self.filter_filename = tempfile.mkstemp() |
| 66 os.write(temp_fd, '\n'.join(self.FAUX_FILTERS)) |
| 67 os.close(temp_fd) |
| 68 |
| 69 def tearDown(self): |
| 70 os.remove(self.filter_filename) |
| 71 |
| 72 def testLoadFilterFile(self): |
| 73 """ |
| 74 Call filter packages with a list of packages that should be filtered |
| 75 and ensure they are. |
| 76 """ |
| 77 loaded_filters = prebuilt.LoadFilterFile(self.filter_filename) |
| 78 self.assertEqual(self.FAUX_FILTERS, loaded_filters) |
| 79 |
| 80 def testFilterPattern(self): |
| 81 """Check that particular packages are filtered properly.""" |
| 82 prebuilt.LoadFilterFile(self.filter_filename) |
| 83 file_list = ['/usr/local/package/oob', |
| 84 '/usr/local/package/other/path/valid', |
| 85 '/var/tmp/bibby.file', |
| 86 '/tmp/b/o/b'] |
| 87 expected_list = ['/usr/local/package/other/path/valid', |
| 88 '/tmp/b/o/b'] |
| 89 filtered_list = [file for file in file_list if not |
| 90 prebuilt.ShouldFilterPackage(file)] |
| 91 self.assertEqual(expected_list, filtered_list) |
| 92 |
| 93 |
| 94 class TestPrebuilt(unittest.TestCase): |
| 95 fake_path = '/b/cbuild/build/chroot/build/x86-dogfood/' |
| 96 bin_package_mock = ['packages/x11-misc/shared-mime-info-0.70.tbz2', |
| 97 'packages/x11-misc/util-macros-1.5.0.tbz2', |
| 98 'packages/x11-misc/xbitmaps-1.1.0.tbz2', |
| 99 'packages/x11-misc/read-edid-1.4.2.tbz2', |
| 100 'packages/x11-misc/xdg-utils-1.0.2-r3.tbz2'] |
| 101 |
| 102 files_to_sync = [os.path.join(fake_path, file) for file in bin_package_mock] |
| 103 |
| 104 def setUp(self): |
| 105 self.mox = mox.Mox() |
| 106 |
| 107 def tearDown(self): |
| 108 self.mox.UnsetStubs() |
| 109 self.mox.VerifyAll() |
| 110 |
| 111 def _generate_dict_results(self, gs_bucket_path): |
| 112 """ |
| 113 Generate a dictionary result similar to GenerateUploadDict |
| 114 """ |
| 115 results = {} |
| 116 for entry in self.files_to_sync: |
| 117 results[entry] = os.path.join( |
| 118 gs_bucket_path, entry.replace(self.fake_path, '').lstrip('/')) |
| 119 return results |
| 120 |
| 121 def testGenerateUploadDict(self): |
| 122 gs_bucket_path = 'gs://chromeos-prebuilt/host/version' |
| 123 self.mox.StubOutWithMock(cros_build_lib, 'ListFiles') |
| 124 cros_build_lib.ListFiles(' ').AndReturn(self.files_to_sync) |
| 125 self.mox.ReplayAll() |
| 126 result = prebuilt.GenerateUploadDict(' ', gs_bucket_path, self.fake_path) |
| 127 self.assertEqual(result, self._generate_dict_results(gs_bucket_path)) |
| 128 |
| 129 |
| 130 if __name__ == '__main__': |
| 131 unittest.main() |
OLD | NEW |