annotate tests/test_startrev.py @ 881:ce5837c64b12

svn verify: display extra and missing files separately
author Patrick Mezard <patrick@mezard.eu>
date Fri, 20 Apr 2012 17:58:55 +0200
parents d4312a6f7a87
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
653
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
1 import test_util
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
2
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
3 import os
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
4 import unittest
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
5
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
6 def _do_case(self, name, subdir, stupid):
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
7 wc_base = self.wc_path
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
8 self.wc_path = wc_base + '_full'
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
9 headclone = self._load_fixture_and_fetch(name, subdir=subdir, stupid=stupid,
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
10 layout='single', startrev='HEAD')
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
11 self.wc_path = wc_base + '_head'
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
12 fullclone = self._load_fixture_and_fetch(name, subdir=subdir, stupid=stupid,
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
13 layout='single')
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
14
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
15 fulltip = fullclone['tip']
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
16 headtip = headclone['tip']
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
17 # viewing diff's of lists of files is easier on the eyes
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
18 self.assertMultiLineEqual('\n'.join(fulltip), '\n'.join(headtip))
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
19
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
20 for f in fulltip:
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
21 self.assertMultiLineEqual(fulltip[f].data(), headtip[f].data())
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
22
658
d101b39f6c51 test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 657
diff changeset
23 self.assertNotEqual(len(fullclone), 0, "full clone shouldn't be empty")
d101b39f6c51 test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 657
diff changeset
24 self.assertEqual(len(headclone), 1,
d101b39f6c51 test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 657
diff changeset
25 "shallow clone should have just one revision, not %d"
d101b39f6c51 test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 657
diff changeset
26 % len(headclone))
d101b39f6c51 test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 657
diff changeset
27
653
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
28 def buildmethod(case, name, subdir, stupid):
657
9cf547fc36e8 pull: fix shallow clone when lastest change isn't HEAD.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 653
diff changeset
29 m = lambda self: self._do_case(case, subdir.strip('/'), stupid)
653
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
30 m.__name__ = name
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
31 m.__doc__ = ('Test clone with startrev on %s%s with %s replay.' %
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
32 (case, subdir, (stupid and 'stupid') or 'real'))
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
33 return m
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
34
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
35
658
d101b39f6c51 test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 657
diff changeset
36 # these fixtures contain no files at HEAD and would result in empty clones
d101b39f6c51 test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 657
diff changeset
37 nofiles = set([
d101b39f6c51 test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 657
diff changeset
38 'binaryfiles.svndump',
880
d4312a6f7a87 test_utility_commands: test verify command
Patrick Mezard <patrick@mezard.eu>
parents: 833
diff changeset
39 'binaryfiles-broken.svndump',
658
d101b39f6c51 test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 657
diff changeset
40 'emptyrepo.svndump',
d101b39f6c51 test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 657
diff changeset
41 ])
d101b39f6c51 test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 657
diff changeset
42
d101b39f6c51 test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 657
diff changeset
43 # these fixtures contain no files in trunk at HEAD and would result in an empty
d101b39f6c51 test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 657
diff changeset
44 # shallow clone if cloning trunk, so we use another subdirectory
d101b39f6c51 test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 657
diff changeset
45 subdirmap = {
d101b39f6c51 test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 657
diff changeset
46 'commit-to-tag.svndump': '/branches/magic',
d101b39f6c51 test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 657
diff changeset
47 'pushexternals.svndump': '',
d101b39f6c51 test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 657
diff changeset
48 'tag_name_same_as_branch.svndump': '/branches/magic',
d101b39f6c51 test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 657
diff changeset
49 }
d101b39f6c51 test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 657
diff changeset
50
653
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
51 attrs = {'_do_case': _do_case,
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
52 }
658
d101b39f6c51 test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 657
diff changeset
53
653
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
54 for case in [f for f in os.listdir(test_util.FIXTURES) if f.endswith('.svndump')]:
658
d101b39f6c51 test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 657
diff changeset
55 if case in nofiles:
d101b39f6c51 test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 657
diff changeset
56 continue
d101b39f6c51 test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 657
diff changeset
57
d101b39f6c51 test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 657
diff changeset
58 subdir = test_util.subdir.get(case, '') + subdirmap.get(case, '/trunk')
653
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
59
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
60 bname = 'test_' + case[:-len('.svndump')]
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
61 attrs[bname] = buildmethod(case, bname, subdir, False)
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
62 name = bname + '_stupid'
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
63 attrs[name] = buildmethod(case, name, subdir, True)
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
64
832
e9af7eba88db globally: clean up whitespace around operators and commas to conform with PEP8
Yonggang Luo <luoyonggang@gmail.com>
parents: 658
diff changeset
65 StartRevTests = type('StartRevTests', (test_util.TestBase,), attrs)
653
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
66
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
67
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
68 def suite():
833
312b37bc5e20 tests: avoid shadowing Python builtin all()
Yonggang Luo <luoyonggang@gmail.com>
parents: 832
diff changeset
69 all_tests = [unittest.TestLoader().loadTestsFromTestCase(StartRevTests),
653
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
70 ]
833
312b37bc5e20 tests: avoid shadowing Python builtin all()
Yonggang Luo <luoyonggang@gmail.com>
parents: 832
diff changeset
71 return unittest.TestSuite(all_tests)