Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(294)

Unified Diff: prebuilt_unittest.py

Issue 3452032: First submission of prebuilt upload script. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/crosutils
Patch Set: Last round of updates change a few variables and update where I am printing to Created 10 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « prebuilt.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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()
« no previous file with comments | « prebuilt.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698