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

Side by Side Diff: cros_mark_as_stable_unittest.py

Issue 5513012: Be more selective about what packages we remove so that we can detect conflicts. (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/crosutils.git@master
Patch Set: Re-upload Created 10 years 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 | Annotate | Revision Log
« no previous file with comments | « cros_mark_as_stable.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
1 #!/usr/bin/python 1 #!/usr/bin/python
2 2
3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved. 3 # Copyright (c) 2010 The Chromium OS Authors. All rights reserved.
4 # Use of this source code is governed by a BSD-style license that can be 4 # Use of this source code is governed by a BSD-style license that can be
5 # found in the LICENSE file. 5 # found in the LICENSE file.
6 6
7 """Unit tests for cros_mark_as_stable.py.""" 7 """Unit tests for cros_mark_as_stable.py."""
8 8
9 import fileinput 9 import fileinput
10 import mox 10 import mox
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 mox.MoxTestBase.setUp(self) 122 mox.MoxTestBase.setUp(self)
123 123
124 def testParseEBuildPath(self): 124 def testParseEBuildPath(self):
125 # Test with ebuild with revision number. 125 # Test with ebuild with revision number.
126 fake_ebuild_path = '/path/to/test_package/test_package-0.0.1-r1.ebuild' 126 fake_ebuild_path = '/path/to/test_package/test_package-0.0.1-r1.ebuild'
127 self.mox.StubOutWithMock(fileinput, 'input') 127 self.mox.StubOutWithMock(fileinput, 'input')
128 fileinput.input(fake_ebuild_path).AndReturn('') 128 fileinput.input(fake_ebuild_path).AndReturn('')
129 self.mox.ReplayAll() 129 self.mox.ReplayAll()
130 fake_ebuild = cros_mark_as_stable.EBuild(fake_ebuild_path) 130 fake_ebuild = cros_mark_as_stable.EBuild(fake_ebuild_path)
131 self.mox.VerifyAll() 131 self.mox.VerifyAll()
132 self.assertEquals(fake_ebuild.version_no_rev, '0.0.1')
132 self.assertEquals(fake_ebuild.ebuild_path_no_revision, 133 self.assertEquals(fake_ebuild.ebuild_path_no_revision,
133 '/path/to/test_package/test_package-0.0.1') 134 '/path/to/test_package/test_package-0.0.1')
134 self.assertEquals(fake_ebuild.ebuild_path_no_version, 135 self.assertEquals(fake_ebuild.ebuild_path_no_version,
135 '/path/to/test_package/test_package') 136 '/path/to/test_package/test_package')
136 self.assertEquals(fake_ebuild.current_revision, 1) 137 self.assertEquals(fake_ebuild.current_revision, 1)
137 138
138 def testParseEBuildPathNoRevisionNumber(self): 139 def testParseEBuildPathNoRevisionNumber(self):
139 # Test with ebuild without revision number. 140 # Test with ebuild without revision number.
140 fake_ebuild_path = '/path/to/test_package/test_package-9999.ebuild' 141 fake_ebuild_path = '/path/to/test_package/test_package-9999.ebuild'
141 self.mox.StubOutWithMock(fileinput, 'input') 142 self.mox.StubOutWithMock(fileinput, 'input')
142 fileinput.input(fake_ebuild_path).AndReturn('') 143 fileinput.input(fake_ebuild_path).AndReturn('')
143 self.mox.ReplayAll() 144 self.mox.ReplayAll()
144 fake_ebuild = cros_mark_as_stable.EBuild(fake_ebuild_path) 145 fake_ebuild = cros_mark_as_stable.EBuild(fake_ebuild_path)
145 self.mox.VerifyAll() 146 self.mox.VerifyAll()
146 147
148 self.assertEquals(fake_ebuild.version_no_rev, '9999')
147 self.assertEquals(fake_ebuild.ebuild_path_no_revision, 149 self.assertEquals(fake_ebuild.ebuild_path_no_revision,
148 '/path/to/test_package/test_package-9999') 150 '/path/to/test_package/test_package-9999')
149 self.assertEquals(fake_ebuild.ebuild_path_no_version, 151 self.assertEquals(fake_ebuild.ebuild_path_no_version,
150 '/path/to/test_package/test_package') 152 '/path/to/test_package/test_package')
151 self.assertEquals(fake_ebuild.current_revision, 0) 153 self.assertEquals(fake_ebuild.current_revision, 0)
152 154
153 155
154 class EBuildStableMarkerTest(mox.MoxTestBase): 156 class EBuildStableMarkerTest(mox.MoxTestBase):
155 157
156 def setUp(self): 158 def setUp(self):
157 mox.MoxTestBase.setUp(self) 159 mox.MoxTestBase.setUp(self)
158 self.mox.StubOutWithMock(cros_mark_as_stable, '_SimpleRunCommand') 160 self.mox.StubOutWithMock(cros_mark_as_stable, '_SimpleRunCommand')
159 self.mox.StubOutWithMock(cros_mark_as_stable, 'RunCommand') 161 self.mox.StubOutWithMock(cros_mark_as_stable, 'RunCommand')
160 self.mox.StubOutWithMock(os, 'unlink') 162 self.mox.StubOutWithMock(os, 'unlink')
161 self.m_ebuild = self.mox.CreateMock(cros_mark_as_stable.EBuild) 163 self.m_ebuild = self.mox.CreateMock(cros_mark_as_stable.EBuild)
162 self.m_ebuild.is_stable = True 164 self.m_ebuild.is_stable = True
163 self.m_ebuild.package = 'test_package' 165 self.m_ebuild.package = 'test_package/test_package'
166 self.m_ebuild.version_no_rev = '0.0.1'
164 self.m_ebuild.current_revision = 1 167 self.m_ebuild.current_revision = 1
165 self.m_ebuild.ebuild_path_no_revision = '/path/test_package-0.0.1' 168 self.m_ebuild.ebuild_path_no_revision = '/path/test_package-0.0.1'
166 self.m_ebuild.ebuild_path_no_version = '/path/test_package' 169 self.m_ebuild.ebuild_path_no_version = '/path/test_package'
167 self.m_ebuild.ebuild_path = '/path/test_package-0.0.1-r1.ebuild' 170 self.m_ebuild.ebuild_path = '/path/test_package-0.0.1-r1.ebuild'
168 self.revved_ebuild_path = '/path/test_package-0.0.1-r2.ebuild' 171 self.revved_ebuild_path = '/path/test_package-0.0.1-r2.ebuild'
172 self.unstable_ebuild_path = '/path/test_package-9999.ebuild'
169 173
170 def testRevWorkOnEBuild(self): 174 def testRevWorkOnEBuild(self):
171 self.mox.StubOutWithMock(cros_mark_as_stable.fileinput, 'input') 175 self.mox.StubOutWithMock(cros_mark_as_stable.fileinput, 'input')
172 self.mox.StubOutWithMock(cros_mark_as_stable.os.path, 'exists') 176 self.mox.StubOutWithMock(cros_mark_as_stable.os.path, 'exists')
173 self.mox.StubOutWithMock(cros_mark_as_stable.shutil, 'copyfile') 177 self.mox.StubOutWithMock(cros_mark_as_stable.shutil, 'copyfile')
174 m_file = self.mox.CreateMock(file) 178 m_file = self.mox.CreateMock(file)
175 179
176 # Prepare mock fileinput. This tests to make sure both the commit id 180 # Prepare mock fileinput. This tests to make sure both the commit id
177 # and keywords are changed correctly. 181 # and keywords are changed correctly.
178 mock_file = ['EAPI=2', 'CROS_WORKON_COMMIT=old_id', 182 mock_file = ['EAPI=2', 'CROS_WORKON_COMMIT=old_id',
(...skipping 11 matching lines...) Expand all
190 diff_cmd = ['diff', '-Bu', self.m_ebuild.ebuild_path, 194 diff_cmd = ['diff', '-Bu', self.m_ebuild.ebuild_path,
191 self.revved_ebuild_path] 195 self.revved_ebuild_path]
192 cros_mark_as_stable.RunCommand(diff_cmd, exit_code=True, 196 cros_mark_as_stable.RunCommand(diff_cmd, exit_code=True,
193 print_cmd=False, redirect_stderr=True, 197 print_cmd=False, redirect_stderr=True,
194 redirect_stdout=True).AndReturn(1) 198 redirect_stdout=True).AndReturn(1)
195 cros_mark_as_stable._SimpleRunCommand('git add ' + self.revved_ebuild_path) 199 cros_mark_as_stable._SimpleRunCommand('git add ' + self.revved_ebuild_path)
196 cros_mark_as_stable._SimpleRunCommand('git rm ' + self.m_ebuild.ebuild_path) 200 cros_mark_as_stable._SimpleRunCommand('git rm ' + self.m_ebuild.ebuild_path)
197 201
198 self.mox.ReplayAll() 202 self.mox.ReplayAll()
199 marker = cros_mark_as_stable.EBuildStableMarker(self.m_ebuild) 203 marker = cros_mark_as_stable.EBuildStableMarker(self.m_ebuild)
200 marker.RevWorkOnEBuild('my_id', redirect_file=m_file) 204 result = marker.RevWorkOnEBuild('my_id', redirect_file=m_file)
201 self.mox.VerifyAll() 205 self.mox.VerifyAll()
206 self.assertEqual(result, 'test_package/test_package-0.0.1-r2')
202 207
203 def testRevUnchangedEBuild(self): 208 def testRevUnchangedEBuild(self):
204 self.mox.StubOutWithMock(cros_mark_as_stable.fileinput, 'input') 209 self.mox.StubOutWithMock(cros_mark_as_stable.fileinput, 'input')
205 self.mox.StubOutWithMock(cros_mark_as_stable.os.path, 'exists') 210 self.mox.StubOutWithMock(cros_mark_as_stable.os.path, 'exists')
206 self.mox.StubOutWithMock(cros_mark_as_stable.shutil, 'copyfile') 211 self.mox.StubOutWithMock(cros_mark_as_stable.shutil, 'copyfile')
207 m_file = self.mox.CreateMock(file) 212 m_file = self.mox.CreateMock(file)
208 213
209 # Prepare mock fileinput. This tests to make sure both the commit id 214 # Prepare mock fileinput. This tests to make sure both the commit id
210 # and keywords are changed correctly. 215 # and keywords are changed correctly.
211 mock_file = ['EAPI=2', 'CROS_WORKON_COMMIT=old_id', 216 mock_file = ['EAPI=2', 'CROS_WORKON_COMMIT=old_id',
(...skipping 10 matching lines...) Expand all
222 m_file.write('src_unpack(){}') 227 m_file.write('src_unpack(){}')
223 diff_cmd = ['diff', '-Bu', self.m_ebuild.ebuild_path, 228 diff_cmd = ['diff', '-Bu', self.m_ebuild.ebuild_path,
224 self.revved_ebuild_path] 229 self.revved_ebuild_path]
225 cros_mark_as_stable.RunCommand(diff_cmd, exit_code=True, 230 cros_mark_as_stable.RunCommand(diff_cmd, exit_code=True,
226 print_cmd=False, redirect_stderr=True, 231 print_cmd=False, redirect_stderr=True,
227 redirect_stdout=True).AndReturn(0) 232 redirect_stdout=True).AndReturn(0)
228 cros_mark_as_stable.os.unlink(self.revved_ebuild_path) 233 cros_mark_as_stable.os.unlink(self.revved_ebuild_path)
229 234
230 self.mox.ReplayAll() 235 self.mox.ReplayAll()
231 marker = cros_mark_as_stable.EBuildStableMarker(self.m_ebuild) 236 marker = cros_mark_as_stable.EBuildStableMarker(self.m_ebuild)
232 marker.RevWorkOnEBuild('my_id', redirect_file=m_file) 237 result = marker.RevWorkOnEBuild('my_id', redirect_file=m_file)
233 self.mox.VerifyAll() 238 self.mox.VerifyAll()
239 self.assertEqual(result, None)
234 240
235 def testRevMissingEBuild(self): 241 def testRevMissingEBuild(self):
236 self.mox.StubOutWithMock(cros_mark_as_stable.fileinput, 'input') 242 self.mox.StubOutWithMock(cros_mark_as_stable.fileinput, 'input')
237 self.mox.StubOutWithMock(cros_mark_as_stable.os.path, 'exists') 243 self.mox.StubOutWithMock(cros_mark_as_stable.os.path, 'exists')
238 self.mox.StubOutWithMock(cros_mark_as_stable.shutil, 'copyfile') 244 self.mox.StubOutWithMock(cros_mark_as_stable.shutil, 'copyfile')
239 self.mox.StubOutWithMock(cros_mark_as_stable, 'Die') 245 self.mox.StubOutWithMock(cros_mark_as_stable, 'Die')
240 m_file = self.mox.CreateMock(file) 246 m_file = self.mox.CreateMock(file)
241 247
248 revved_ebuild_path = self.m_ebuild.ebuild_path
249 self.m_ebuild.ebuild_path = self.unstable_ebuild_path
250 self.m_ebuild.is_stable = False
251 self.m_ebuild.current_revision = 0
252
242 # Prepare mock fileinput. This tests to make sure both the commit id 253 # Prepare mock fileinput. This tests to make sure both the commit id
243 # and keywords are changed correctly. 254 # and keywords are changed correctly.
244 mock_file = ['EAPI=2', 'CROS_WORKON_COMMIT=old_id', 255 mock_file = ['EAPI=2', 'CROS_WORKON_COMMIT=old_id',
245 'KEYWORDS=\"~x86 ~arm\"', 'src_unpack(){}'] 256 'KEYWORDS=\"~x86 ~arm\"', 'src_unpack(){}']
246 257
247 ebuild_9999 = self.m_ebuild.ebuild_path_no_version + '-9999.ebuild' 258 ebuild_9999 = self.m_ebuild.ebuild_path_no_version + '-9999.ebuild'
248 cros_mark_as_stable.os.path.exists(ebuild_9999).AndReturn(False) 259 cros_mark_as_stable.os.path.exists(ebuild_9999).AndReturn(False)
249 cros_mark_as_stable.Die("Missing unstable ebuild: %s" % ebuild_9999) 260 cros_mark_as_stable.Die("Missing unstable ebuild: %s" % ebuild_9999)
250 cros_mark_as_stable.shutil.copyfile(ebuild_9999, self.revved_ebuild_path) 261 cros_mark_as_stable.shutil.copyfile(ebuild_9999, revved_ebuild_path)
251 cros_mark_as_stable.fileinput.input(self.revved_ebuild_path, 262 cros_mark_as_stable.fileinput.input(revved_ebuild_path,
252 inplace=1).AndReturn(mock_file) 263 inplace=1).AndReturn(mock_file)
253 m_file.write('EAPI=2') 264 m_file.write('EAPI=2')
254 m_file.write('CROS_WORKON_COMMIT="my_id"\n') 265 m_file.write('CROS_WORKON_COMMIT="my_id"\n')
255 m_file.write('KEYWORDS="x86 arm"') 266 m_file.write('KEYWORDS="x86 arm"')
256 m_file.write('src_unpack(){}') 267 m_file.write('src_unpack(){}')
257 diff_cmd = ['diff', '-Bu', self.m_ebuild.ebuild_path, 268 diff_cmd = ['diff', '-Bu', self.unstable_ebuild_path, revved_ebuild_path]
258 self.revved_ebuild_path]
259 cros_mark_as_stable.RunCommand(diff_cmd, exit_code=True, 269 cros_mark_as_stable.RunCommand(diff_cmd, exit_code=True,
260 print_cmd=False, redirect_stderr=True, 270 print_cmd=False, redirect_stderr=True,
261 redirect_stdout=True).AndReturn(1) 271 redirect_stdout=True).AndReturn(1)
262 cros_mark_as_stable._SimpleRunCommand('git add ' + self.revved_ebuild_path) 272 cros_mark_as_stable._SimpleRunCommand('git add ' + revved_ebuild_path)
263 cros_mark_as_stable._SimpleRunCommand('git rm ' + self.m_ebuild.ebuild_path)
264 273
265 self.mox.ReplayAll() 274 self.mox.ReplayAll()
266 marker = cros_mark_as_stable.EBuildStableMarker(self.m_ebuild) 275 marker = cros_mark_as_stable.EBuildStableMarker(self.m_ebuild)
267 marker.RevWorkOnEBuild('my_id', redirect_file=m_file) 276 result = marker.RevWorkOnEBuild('my_id', redirect_file=m_file)
268 self.mox.VerifyAll() 277 self.mox.VerifyAll()
278 self.assertEqual(result, 'test_package/test_package-0.0.1-r1')
269 279
270 280
271 def testCommitChange(self): 281 def testCommitChange(self):
272 mock_message = 'Commit me' 282 mock_message = 'Commit me'
273 cros_mark_as_stable._SimpleRunCommand( 283 cros_mark_as_stable._SimpleRunCommand(
274 'git commit -am "%s"' % mock_message) 284 'git commit -am "%s"' % mock_message)
275 self.mox.ReplayAll() 285 self.mox.ReplayAll()
276 marker = cros_mark_as_stable.EBuildStableMarker(self.m_ebuild) 286 marker = cros_mark_as_stable.EBuildStableMarker(self.m_ebuild)
277 marker.CommitChange(mock_message) 287 marker.CommitChange(mock_message)
278 self.mox.VerifyAll() 288 self.mox.VerifyAll()
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 cros_mark_as_stable._FindUprevCandidates([]).AndReturn(package) 323 cros_mark_as_stable._FindUprevCandidates([]).AndReturn(package)
314 self.mox.ReplayAll() 324 self.mox.ReplayAll()
315 cros_mark_as_stable._BuildEBuildDictionary(overlays, False, []) 325 cros_mark_as_stable._BuildEBuildDictionary(overlays, False, [])
316 self.assertEquals(len(overlays), 1) 326 self.assertEquals(len(overlays), 1)
317 self.assertEquals(overlays["/overlay"], []) 327 self.assertEquals(overlays["/overlay"], [])
318 self.mox.VerifyAll() 328 self.mox.VerifyAll()
319 329
320 330
321 if __name__ == '__main__': 331 if __name__ == '__main__':
322 unittest.main() 332 unittest.main()
OLDNEW
« no previous file with comments | « cros_mark_as_stable.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698