Mercurial > hgsubversion
comparison tests/test_utility_commands.py @ 892:3bfb7e985c47
svn verify: add a test for corrupt repositories.
This case contains a couple of unlikely (but not impossible) failure
cases that the code previously did not handle. The verifier is updated
to address these, and the output made a bit more consistent.
author | Dan Villiom Podlaski Christiansen <danchr@gmail.com> |
---|---|
date | Wed, 14 Dec 2011 00:07:58 +0100 |
parents | f95c429124f3 |
children | 6bc8046e3d0a |
comparison
equal
deleted
inserted
replaced
889:7a98fbadcae9 | 892:3bfb7e985c47 |
---|---|
258 output = u.popbuffer() | 258 output = u.popbuffer() |
259 self.assertEqual(1, ret) | 259 self.assertEqual(1, ret) |
260 output = re.sub(r'file://\S+', 'file://', output) | 260 output = re.sub(r'file://\S+', 'file://', output) |
261 self.assertMultiLineEqual("""\ | 261 self.assertMultiLineEqual("""\ |
262 verifying d51f46a715a1 against file:// | 262 verifying d51f46a715a1 against file:// |
263 difference in file binary2 | 263 difference in: binary2 |
264 unexpected files: | 264 unexpected file: binary1 |
265 binary1 | 265 missing file: binary3 |
266 missing files: | |
267 binary3 | |
268 """, output) | 266 """, output) |
267 | |
268 def test_svnverify_corruption(self): | |
269 SUCCESS = 0 | |
270 FAILURE = 1 | |
271 | |
272 repo, repo_path = self.load_and_fetch('correct.svndump', layout='single', | |
273 subdir='') | |
274 | |
275 ui = self.ui() | |
276 | |
277 self.assertEqual(SUCCESS, svncommands.verify(ui, self.repo, rev='tip')) | |
278 | |
279 corrupt_source = test_util.fileurl(self.load_svndump('corrupt.svndump')) | |
280 | |
281 repo.ui.setconfig('paths', 'default', corrupt_source) | |
282 | |
283 ui.pushbuffer() | |
284 code = svncommands.verify(ui, repo, rev='tip') | |
285 actual = ui.popbuffer() | |
286 | |
287 actual = actual.replace(corrupt_source, '$REPO') | |
288 actual = set(actual.splitlines()) | |
289 | |
290 expected = set([ | |
291 'verifying 78e965230a13 against $REPO@1', | |
292 'missing file: missing-file', | |
293 'wrong flags for: executable-file', | |
294 'wrong flags for: symlink', | |
295 'wrong flags for: regular-file', | |
296 'difference in: another-regular-file', | |
297 'difference in: regular-file', | |
298 'unexpected file: empty-file', | |
299 ]) | |
300 | |
301 self.assertEqual((FAILURE, expected), (code, actual)) | |
269 | 302 |
270 def suite(): | 303 def suite(): |
271 all_tests = [unittest.TestLoader().loadTestsFromTestCase(UtilityTests), | 304 all_tests = [unittest.TestLoader().loadTestsFromTestCase(UtilityTests), |
272 ] | 305 ] |
273 return unittest.TestSuite(all_tests) | 306 return unittest.TestSuite(all_tests) |