Mercurial > hgsubversion
annotate tests/test_startrev.py @ 847:0de18c5c2e35
Respect filemap rule order (rules that come first are overridden by rules that come later)
author | Vitaliy Filippov <vitalif@yourcmc.ru> |
---|---|
date | Sat, 28 Jan 2012 02:18:25 +0400 |
parents | 312b37bc5e20 |
children | d4312a6f7a87 |
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', |
d101b39f6c51
test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
657
diff
changeset
|
39 'emptyrepo.svndump', |
d101b39f6c51
test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
657
diff
changeset
|
40 ]) |
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 # 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
|
43 # 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
|
44 subdirmap = { |
d101b39f6c51
test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
657
diff
changeset
|
45 '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
|
46 'pushexternals.svndump': '', |
d101b39f6c51
test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
657
diff
changeset
|
47 '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
|
48 } |
d101b39f6c51
test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
657
diff
changeset
|
49 |
653
ab454ee515d4
test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
50 attrs = {'_do_case': _do_case, |
ab454ee515d4
test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
51 } |
658
d101b39f6c51
test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
657
diff
changeset
|
52 |
653
ab454ee515d4
test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
53 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
|
54 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
|
55 continue |
d101b39f6c51
test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
657
diff
changeset
|
56 |
d101b39f6c51
test_startrev: add a few assertions about clone lengths
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
657
diff
changeset
|
57 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
|
58 |
ab454ee515d4
test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
59 bname = 'test_' + case[:-len('.svndump')] |
ab454ee515d4
test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
60 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
|
61 name = bname + '_stupid' |
ab454ee515d4
test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
62 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
|
63 |
832
e9af7eba88db
globally: clean up whitespace around operators and commas to conform with PEP8
Yonggang Luo <luoyonggang@gmail.com>
parents:
658
diff
changeset
|
64 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
|
65 |
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 def suite(): |
833
312b37bc5e20
tests: avoid shadowing Python builtin all()
Yonggang Luo <luoyonggang@gmail.com>
parents:
832
diff
changeset
|
68 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
|
69 ] |
833
312b37bc5e20
tests: avoid shadowing Python builtin all()
Yonggang Luo <luoyonggang@gmail.com>
parents:
832
diff
changeset
|
70 return unittest.TestSuite(all_tests) |