annotate tests/test_startrev.py @ 657:9cf547fc36e8

pull: fix shallow clone when lastest change isn't HEAD. Previously, using `hg clone --startrev HEAD` when the actual HEAD revision didn't touch the prefix, would cause it to report that no changes were found. Using last_changed_rev instead of HEAD fixes this. In order to better test this scenario, we now clone the trunk subdirectory of all the fixtures.
author Dan Villiom Podlaski Christiansen <danchr@gmail.com>
date Wed, 11 Aug 2010 19:57:34 +0200
parents ab454ee515d4
children d101b39f6c51
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
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
23 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
24 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
25 m.__name__ = name
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
26 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
27 (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
28 return m
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
29
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
30
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
31 attrs = {'_do_case': _do_case,
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
32 }
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
33 for case in [f for f in os.listdir(test_util.FIXTURES) if f.endswith('.svndump')]:
657
9cf547fc36e8 pull: fix shallow clone when lastest change isn't HEAD.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 653
diff changeset
34 subdir = test_util.subdir.get(case, '') + '/trunk'
653
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
35
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
36 bname = 'test_' + case[:-len('.svndump')]
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
37 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
38 name = bname + '_stupid'
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
39 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
40
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
41 StartRevTests = type('StartRevTests', (test_util.TestBase, ), attrs)
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
42
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
43
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
44 def suite():
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
45 all = [unittest.TestLoader().loadTestsFromTestCase(StartRevTests),
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
46 ]
ab454ee515d4 test_startrev: new tests inspired by test_rebuildmeta
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff changeset
47 return unittest.TestSuite(all)