annotate tests/test_startrev.py @ 882:07234759a3f7 1.4

svnexternals: fix handling of subrepo pinned to HEAD in hg 2.2 hg 2.2 is trying harder to see through our lies but we will prevail. Override subrepo.basestate() so we can pretend the svn revision number is HEAD, honest.
author Patrick Mezard <patrick@mezard.eu>
date Thu, 26 Apr 2012 16:54:03 +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)