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

Side by Side 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, 2 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 unified diff | Download patch
« no previous file with comments | « prebuilt.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(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()
OLDNEW
« 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