Mercurial > hgsubversion
annotate tests/test_externals.py @ 787:4bbc6bf947f5 1.2.1
replay: fetch full revision at most once per run (issue252)
Before this change, hgsubversion was fetching full revisions from the first
revision the project was created to the first revision containing converted
data. Unfortunately, some projects exhibits such spans longer than 500
revisions, during which hgsubversion was uselessly scanning the whole tree. The
fix is not technically perfect, we could record somewhere that while no data
was converted we scanned the project already, instead of scanning once at every
hgsubversion run until a revision is converted. But it should be good enough
unless someone runs hgsubversion once for every target revision.
One repository exhibiting this behaviour:
svn://svn.zankasoftware.com/zanka
author | Patrick Mezard <pmezard@gmail.com> |
---|---|
date | Sun, 13 Feb 2011 20:10:52 +0100 |
parents | 40ddf8213fa2 |
children | a5be5ca638de |
rev | line source |
---|---|
643
d2ef7220a079
tests: import test_util as the first module in all relevant tests
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
576
diff
changeset
|
1 import test_util |
d2ef7220a079
tests: import test_util as the first module in all relevant tests
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
576
diff
changeset
|
2 |
763
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
3 import os, unittest, sys |
291
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
4 |
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
5 from mercurial import commands |
763
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
6 from mercurial import util as hgutil |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
7 try: |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
8 from mercurial import subrepo |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
9 # require svnsubrepo and hg >= 1.7.1 |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
10 subrepo.svnsubrepo |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
11 hgutil.checknlink |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
12 except (ImportError, AttributeError), e: |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
13 print >>sys.stderr, 'test_externals: skipping .hgsub tests' |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
14 subrepo = None |
174
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
15 |
337
46e69be8e2c8
Reorganize to have a more conventional module structure.
Augie Fackler <durin42@gmail.com>
parents:
315
diff
changeset
|
16 from hgsubversion import svnexternals |
174
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
17 |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
18 class TestFetchExternals(test_util.TestBase): |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
19 def test_externalsfile(self): |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
20 f = svnexternals.externalsfile() |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
21 f['t1'] = 'dir1 -r10 svn://foobar' |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
22 f['t 2'] = 'dir2 -r10 svn://foobar' |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
23 f['t3'] = ['dir31 -r10 svn://foobar', 'dir32 -r10 svn://foobar'] |
215
b5ef9a404f5d
Stopped idiotic filtering of revisions that did not edit something branches/tags/trunk.
Augie Fackler <durin42@gmail.com>
parents:
195
diff
changeset
|
24 |
b5ef9a404f5d
Stopped idiotic filtering of revisions that did not edit something branches/tags/trunk.
Augie Fackler <durin42@gmail.com>
parents:
195
diff
changeset
|
25 refext = """[t 2] |
174
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
26 dir2 -r10 svn://foobar |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
27 [t1] |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
28 dir1 -r10 svn://foobar |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
29 [t3] |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
30 dir31 -r10 svn://foobar |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
31 dir32 -r10 svn://foobar |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
32 """ |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
33 value = f.write() |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
34 self.assertEqual(refext, value) |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
35 |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
36 f2 = svnexternals.externalsfile() |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
37 f2.read(value) |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
38 self.assertEqual(sorted(f), sorted(f2)) |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
39 for t in f: |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
40 self.assertEqual(f[t], f2[t]) |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
41 |
291
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
42 def test_parsedefinitions(self): |
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
43 # Taken from svn book |
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
44 samples = [ |
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
45 ('third-party/sounds http://svn.example.com/repos/sounds', |
761
979148947967
svnexternals: generate externals with a revision placeholder
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
46 ('third-party/sounds', None, 'http://svn.example.com/repos/sounds', None, |
979148947967
svnexternals: generate externals with a revision placeholder
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
47 'third-party/sounds http://svn.example.com/repos/sounds')), |
979148947967
svnexternals: generate externals with a revision placeholder
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
48 |
291
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
49 ('third-party/skins -r148 http://svn.example.com/skinproj', |
761
979148947967
svnexternals: generate externals with a revision placeholder
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
50 ('third-party/skins', '148', 'http://svn.example.com/skinproj', None, |
979148947967
svnexternals: generate externals with a revision placeholder
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
51 'third-party/skins -r{REV} http://svn.example.com/skinproj')), |
979148947967
svnexternals: generate externals with a revision placeholder
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
52 |
291
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
53 ('third-party/skins -r 148 http://svn.example.com/skinproj', |
761
979148947967
svnexternals: generate externals with a revision placeholder
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
54 ('third-party/skins', '148', 'http://svn.example.com/skinproj', None, |
979148947967
svnexternals: generate externals with a revision placeholder
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
55 'third-party/skins -r {REV} http://svn.example.com/skinproj')), |
979148947967
svnexternals: generate externals with a revision placeholder
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
56 |
291
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
57 ('http://svn.example.com/repos/sounds third-party/sounds', |
761
979148947967
svnexternals: generate externals with a revision placeholder
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
58 ('third-party/sounds', None, 'http://svn.example.com/repos/sounds', None, |
979148947967
svnexternals: generate externals with a revision placeholder
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
59 'http://svn.example.com/repos/sounds third-party/sounds')), |
979148947967
svnexternals: generate externals with a revision placeholder
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
60 |
291
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
61 ('-r148 http://svn.example.com/skinproj third-party/skins', |
761
979148947967
svnexternals: generate externals with a revision placeholder
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
62 ('third-party/skins', '148', 'http://svn.example.com/skinproj', None, |
979148947967
svnexternals: generate externals with a revision placeholder
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
63 '-r{REV} http://svn.example.com/skinproj third-party/skins')), |
979148947967
svnexternals: generate externals with a revision placeholder
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
64 |
291
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
65 ('-r 148 http://svn.example.com/skinproj third-party/skins', |
761
979148947967
svnexternals: generate externals with a revision placeholder
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
66 ('third-party/skins', '148', 'http://svn.example.com/skinproj', None, |
979148947967
svnexternals: generate externals with a revision placeholder
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
67 '-r {REV} http://svn.example.com/skinproj third-party/skins')), |
979148947967
svnexternals: generate externals with a revision placeholder
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
68 |
291
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
69 ('http://svn.example.com/skin-maker@21 third-party/skins/toolkit', |
761
979148947967
svnexternals: generate externals with a revision placeholder
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
70 ('third-party/skins/toolkit', None, 'http://svn.example.com/skin-maker', '21', |
979148947967
svnexternals: generate externals with a revision placeholder
Patrick Mezard <pmezard@gmail.com>
parents:
643
diff
changeset
|
71 'http://svn.example.com/skin-maker@21 third-party/skins/toolkit')), |
291
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
72 ] |
337
46e69be8e2c8
Reorganize to have a more conventional module structure.
Augie Fackler <durin42@gmail.com>
parents:
315
diff
changeset
|
73 |
291
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
74 for line, expected in samples: |
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
75 self.assertEqual(expected, svnexternals.parsedefinition(line)) |
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
76 |
174
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
77 def test_externals(self, stupid=False): |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
78 repo = self._load_fixture_and_fetch('externals.svndump', stupid=stupid) |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
79 |
215
b5ef9a404f5d
Stopped idiotic filtering of revisions that did not edit something branches/tags/trunk.
Augie Fackler <durin42@gmail.com>
parents:
195
diff
changeset
|
80 ref0 = """[.] |
183
1c46ad3f56aa
test_externals: test branch copy, use absolute externals
Patrick Mezard <pmezard@gmail.com>
parents:
176
diff
changeset
|
81 ^/externals/project1 deps/project1 |
174
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
82 """ |
218
a360ddc97719
branches: change handling again, but this time a little less magic.
Augie Fackler <durin42@gmail.com>
parents:
215
diff
changeset
|
83 self.assertEqual(ref0, repo[0]['.hgsvnexternals'].data()) |
215
b5ef9a404f5d
Stopped idiotic filtering of revisions that did not edit something branches/tags/trunk.
Augie Fackler <durin42@gmail.com>
parents:
195
diff
changeset
|
84 ref1 = """[.] |
183
1c46ad3f56aa
test_externals: test branch copy, use absolute externals
Patrick Mezard <pmezard@gmail.com>
parents:
176
diff
changeset
|
85 ^/externals/project1 deps/project1 |
315
963d27a0b1c2
svnexternals: do not use peg revisions as --rev replacements
Patrick Mezard <pmezard@gmail.com>
parents:
291
diff
changeset
|
86 -r2 ^/externals/project2@2 deps/project2 |
174
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
87 """ |
218
a360ddc97719
branches: change handling again, but this time a little less magic.
Augie Fackler <durin42@gmail.com>
parents:
215
diff
changeset
|
88 self.assertEqual(ref1, repo[1]['.hgsvnexternals'].data()) |
174
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
89 |
215
b5ef9a404f5d
Stopped idiotic filtering of revisions that did not edit something branches/tags/trunk.
Augie Fackler <durin42@gmail.com>
parents:
195
diff
changeset
|
90 ref2 = """[.] |
315
963d27a0b1c2
svnexternals: do not use peg revisions as --rev replacements
Patrick Mezard <pmezard@gmail.com>
parents:
291
diff
changeset
|
91 -r2 ^/externals/project2@2 deps/project2 |
174
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
92 [subdir] |
183
1c46ad3f56aa
test_externals: test branch copy, use absolute externals
Patrick Mezard <pmezard@gmail.com>
parents:
176
diff
changeset
|
93 ^/externals/project1 deps/project1 |
174
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
94 [subdir2] |
183
1c46ad3f56aa
test_externals: test branch copy, use absolute externals
Patrick Mezard <pmezard@gmail.com>
parents:
176
diff
changeset
|
95 ^/externals/project1 deps/project1 |
174
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
96 """ |
218
a360ddc97719
branches: change handling again, but this time a little less magic.
Augie Fackler <durin42@gmail.com>
parents:
215
diff
changeset
|
97 actual = repo[2]['.hgsvnexternals'].data() |
215
b5ef9a404f5d
Stopped idiotic filtering of revisions that did not edit something branches/tags/trunk.
Augie Fackler <durin42@gmail.com>
parents:
195
diff
changeset
|
98 self.assertEqual(ref2, actual) |
174
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
99 |
215
b5ef9a404f5d
Stopped idiotic filtering of revisions that did not edit something branches/tags/trunk.
Augie Fackler <durin42@gmail.com>
parents:
195
diff
changeset
|
100 ref3 = """[.] |
315
963d27a0b1c2
svnexternals: do not use peg revisions as --rev replacements
Patrick Mezard <pmezard@gmail.com>
parents:
291
diff
changeset
|
101 -r2 ^/externals/project2@2 deps/project2 |
183
1c46ad3f56aa
test_externals: test branch copy, use absolute externals
Patrick Mezard <pmezard@gmail.com>
parents:
176
diff
changeset
|
102 [subdir] |
1c46ad3f56aa
test_externals: test branch copy, use absolute externals
Patrick Mezard <pmezard@gmail.com>
parents:
176
diff
changeset
|
103 ^/externals/project1 deps/project1 |
174
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
104 """ |
218
a360ddc97719
branches: change handling again, but this time a little less magic.
Augie Fackler <durin42@gmail.com>
parents:
215
diff
changeset
|
105 self.assertEqual(ref3, repo[3]['.hgsvnexternals'].data()) |
174
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
106 |
215
b5ef9a404f5d
Stopped idiotic filtering of revisions that did not edit something branches/tags/trunk.
Augie Fackler <durin42@gmail.com>
parents:
195
diff
changeset
|
107 ref4 = """[subdir] |
183
1c46ad3f56aa
test_externals: test branch copy, use absolute externals
Patrick Mezard <pmezard@gmail.com>
parents:
176
diff
changeset
|
108 ^/externals/project1 deps/project1 |
174
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
109 """ |
218
a360ddc97719
branches: change handling again, but this time a little less magic.
Augie Fackler <durin42@gmail.com>
parents:
215
diff
changeset
|
110 self.assertEqual(ref4, repo[4]['.hgsvnexternals'].data()) |
174
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
111 |
215
b5ef9a404f5d
Stopped idiotic filtering of revisions that did not edit something branches/tags/trunk.
Augie Fackler <durin42@gmail.com>
parents:
195
diff
changeset
|
112 ref5 = """[.] |
315
963d27a0b1c2
svnexternals: do not use peg revisions as --rev replacements
Patrick Mezard <pmezard@gmail.com>
parents:
291
diff
changeset
|
113 -r2 ^/externals/project2@2 deps/project2 |
184
d3ea6c98a086
Do not recurse for externals on copied directory in stupid mode
Patrick Mezard <pmezard@gmail.com>
parents:
183
diff
changeset
|
114 [subdir2] |
d3ea6c98a086
Do not recurse for externals on copied directory in stupid mode
Patrick Mezard <pmezard@gmail.com>
parents:
183
diff
changeset
|
115 ^/externals/project1 deps/project1 |
183
1c46ad3f56aa
test_externals: test branch copy, use absolute externals
Patrick Mezard <pmezard@gmail.com>
parents:
176
diff
changeset
|
116 """ |
218
a360ddc97719
branches: change handling again, but this time a little less magic.
Augie Fackler <durin42@gmail.com>
parents:
215
diff
changeset
|
117 self.assertEqual(ref5, repo[5]['.hgsvnexternals'].data()) |
183
1c46ad3f56aa
test_externals: test branch copy, use absolute externals
Patrick Mezard <pmezard@gmail.com>
parents:
176
diff
changeset
|
118 |
215
b5ef9a404f5d
Stopped idiotic filtering of revisions that did not edit something branches/tags/trunk.
Augie Fackler <durin42@gmail.com>
parents:
195
diff
changeset
|
119 ref6 = """[.] |
315
963d27a0b1c2
svnexternals: do not use peg revisions as --rev replacements
Patrick Mezard <pmezard@gmail.com>
parents:
291
diff
changeset
|
120 -r2 ^/externals/project2@2 deps/project2 |
184
d3ea6c98a086
Do not recurse for externals on copied directory in stupid mode
Patrick Mezard <pmezard@gmail.com>
parents:
183
diff
changeset
|
121 """ |
218
a360ddc97719
branches: change handling again, but this time a little less magic.
Augie Fackler <durin42@gmail.com>
parents:
215
diff
changeset
|
122 self.assertEqual(ref6, repo[6]['.hgsvnexternals'].data()) |
184
d3ea6c98a086
Do not recurse for externals on copied directory in stupid mode
Patrick Mezard <pmezard@gmail.com>
parents:
183
diff
changeset
|
123 |
174
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
124 def test_externals_stupid(self): |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
125 self.test_externals(True) |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
126 |
291
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
127 def test_updateexternals(self): |
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
128 def checkdeps(deps, nodeps, repo, rev=None): |
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
129 svnexternals.updateexternals(ui, [rev], repo) |
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
130 for d in deps: |
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
131 p = os.path.join(repo.root, d) |
337
46e69be8e2c8
Reorganize to have a more conventional module structure.
Augie Fackler <durin42@gmail.com>
parents:
315
diff
changeset
|
132 self.assertTrue(os.path.isdir(p), |
291
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
133 'missing: %s@%r' % (d, rev)) |
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
134 for d in nodeps: |
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
135 p = os.path.join(repo.root, d) |
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
136 self.assertTrue(not os.path.isdir(p), |
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
137 'unexpected: %s@%r' % (d, rev)) |
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
138 |
576
d96aa92d9ad9
tests: silence test suite by using quiet UIs everywhere
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
337
diff
changeset
|
139 ui = self.ui() |
291
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
140 repo = self._load_fixture_and_fetch('externals.svndump', stupid=0) |
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
141 commands.update(ui, repo) |
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
142 checkdeps(['deps/project1'], [], repo, 0) |
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
143 checkdeps(['deps/project1', 'deps/project2'], [], repo, 1) |
337
46e69be8e2c8
Reorganize to have a more conventional module structure.
Augie Fackler <durin42@gmail.com>
parents:
315
diff
changeset
|
144 checkdeps(['subdir/deps/project1', 'subdir2/deps/project1', |
46e69be8e2c8
Reorganize to have a more conventional module structure.
Augie Fackler <durin42@gmail.com>
parents:
315
diff
changeset
|
145 'deps/project2'], |
291
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
146 ['deps/project1'], repo, 2) |
337
46e69be8e2c8
Reorganize to have a more conventional module structure.
Augie Fackler <durin42@gmail.com>
parents:
315
diff
changeset
|
147 checkdeps(['subdir/deps/project1', 'deps/project2'], |
291
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
148 ['subdir2/deps/project1'], repo, 3) |
ba8e91a7c077
Add 'updateexternals' to synchronize externals with remote repo.
Patrick Mezard <pmezard@gmail.com>
parents:
218
diff
changeset
|
149 checkdeps(['subdir/deps/project1'], ['deps/project2'], repo, 4) |
175
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
150 |
762
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
151 def test_hgsub(self, stupid=False): |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
152 repo = self._load_fixture_and_fetch('externals.svndump', |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
153 externals='subrepos', |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
154 stupid=stupid) |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
155 self.assertEqual("""\ |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
156 deps/project1 = [hgsubversion] :^/externals/project1 deps/project1 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
157 """, repo[0]['.hgsub'].data()) |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
158 self.assertEqual("""\ |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
159 HEAD deps/project1 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
160 """, repo[0]['.hgsubstate'].data()) |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
161 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
162 self.assertEqual("""\ |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
163 deps/project1 = [hgsubversion] :^/externals/project1 deps/project1 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
164 deps/project2 = [hgsubversion] :-r{REV} ^/externals/project2@2 deps/project2 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
165 """, repo[1]['.hgsub'].data()) |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
166 self.assertEqual("""\ |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
167 HEAD deps/project1 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
168 2 deps/project2 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
169 """, repo[1]['.hgsubstate'].data()) |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
170 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
171 self.assertEqual("""\ |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
172 deps/project2 = [hgsubversion] :-r{REV} ^/externals/project2@2 deps/project2 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
173 subdir/deps/project1 = [hgsubversion] subdir:^/externals/project1 deps/project1 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
174 subdir2/deps/project1 = [hgsubversion] subdir2:^/externals/project1 deps/project1 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
175 """, repo[2]['.hgsub'].data()) |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
176 self.assertEqual("""\ |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
177 2 deps/project2 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
178 HEAD subdir/deps/project1 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
179 HEAD subdir2/deps/project1 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
180 """, repo[2]['.hgsubstate'].data()) |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
181 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
182 self.assertEqual("""\ |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
183 deps/project2 = [hgsubversion] :-r{REV} ^/externals/project2@2 deps/project2 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
184 subdir/deps/project1 = [hgsubversion] subdir:^/externals/project1 deps/project1 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
185 """, repo[3]['.hgsub'].data()) |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
186 self.assertEqual("""\ |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
187 2 deps/project2 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
188 HEAD subdir/deps/project1 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
189 """, repo[3]['.hgsubstate'].data()) |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
190 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
191 self.assertEqual("""\ |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
192 subdir/deps/project1 = [hgsubversion] subdir:^/externals/project1 deps/project1 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
193 """, repo[4]['.hgsub'].data()) |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
194 self.assertEqual("""\ |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
195 HEAD subdir/deps/project1 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
196 """, repo[4]['.hgsubstate'].data()) |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
197 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
198 self.assertEqual("""\ |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
199 deps/project2 = [hgsubversion] :-r{REV} ^/externals/project2@2 deps/project2 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
200 subdir2/deps/project1 = [hgsubversion] subdir2:^/externals/project1 deps/project1 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
201 """, repo[5]['.hgsub'].data()) |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
202 self.assertEqual("""\ |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
203 2 deps/project2 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
204 HEAD subdir2/deps/project1 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
205 """, repo[5]['.hgsubstate'].data()) |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
206 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
207 self.assertEqual("""\ |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
208 deps/project2 = [hgsubversion] :-r{REV} ^/externals/project2@2 deps/project2 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
209 """, repo[6]['.hgsub'].data()) |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
210 self.assertEqual("""\ |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
211 2 deps/project2 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
212 """, repo[6]['.hgsubstate'].data()) |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
213 |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
214 def test_hgsub_stupid(self): |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
215 self.test_hgsub(True) |
c31a1f92e1c6
svnexternals: preliminary support for subrepos based externals
Patrick Mezard <pmezard@gmail.com>
parents:
761
diff
changeset
|
216 |
776
f025d00bfc4a
svnexternals: add 'ignore' mode to avoid converting externals
Patrick Mezard <pmezard@gmail.com>
parents:
764
diff
changeset
|
217 def test_ignore(self): |
f025d00bfc4a
svnexternals: add 'ignore' mode to avoid converting externals
Patrick Mezard <pmezard@gmail.com>
parents:
764
diff
changeset
|
218 repo = self._load_fixture_and_fetch('externals.svndump', |
f025d00bfc4a
svnexternals: add 'ignore' mode to avoid converting externals
Patrick Mezard <pmezard@gmail.com>
parents:
764
diff
changeset
|
219 externals='ignore') |
f025d00bfc4a
svnexternals: add 'ignore' mode to avoid converting externals
Patrick Mezard <pmezard@gmail.com>
parents:
764
diff
changeset
|
220 for rev in repo: |
f025d00bfc4a
svnexternals: add 'ignore' mode to avoid converting externals
Patrick Mezard <pmezard@gmail.com>
parents:
764
diff
changeset
|
221 ctx = repo[rev] |
f025d00bfc4a
svnexternals: add 'ignore' mode to avoid converting externals
Patrick Mezard <pmezard@gmail.com>
parents:
764
diff
changeset
|
222 self.assertTrue('.hgsvnexternals' not in ctx) |
f025d00bfc4a
svnexternals: add 'ignore' mode to avoid converting externals
Patrick Mezard <pmezard@gmail.com>
parents:
764
diff
changeset
|
223 self.assertTrue('.hgsub' not in ctx) |
f025d00bfc4a
svnexternals: add 'ignore' mode to avoid converting externals
Patrick Mezard <pmezard@gmail.com>
parents:
764
diff
changeset
|
224 self.assertTrue('.hgsubstate' not in ctx) |
f025d00bfc4a
svnexternals: add 'ignore' mode to avoid converting externals
Patrick Mezard <pmezard@gmail.com>
parents:
764
diff
changeset
|
225 |
763
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
226 def test_updatehgsub(self): |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
227 def checkdeps(ui, repo, rev, deps, nodeps): |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
228 commands.update(ui, repo, node=str(rev)) |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
229 for d in deps: |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
230 p = os.path.join(repo.root, d) |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
231 self.assertTrue(os.path.isdir(p), |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
232 'missing: %s@%r' % (d, repo[None].rev())) |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
233 for d in nodeps: |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
234 p = os.path.join(repo.root, d) |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
235 self.assertTrue(not os.path.isdir(p), |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
236 'unexpected: %s@%r' % (d, repo[None].rev())) |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
237 |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
238 if subrepo is None: |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
239 return |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
240 |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
241 ui = self.ui() |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
242 repo = self._load_fixture_and_fetch('externals.svndump', |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
243 stupid=0, externals='subrepos') |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
244 checkdeps(ui, repo, 0, ['deps/project1'], []) |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
245 checkdeps(ui, repo, 1, ['deps/project1', 'deps/project2'], []) |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
246 checkdeps(ui, repo, 2, ['subdir/deps/project1', 'subdir2/deps/project1', |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
247 'deps/project2'], |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
248 ['deps/project1']) |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
249 checkdeps(ui, repo, 3, ['subdir/deps/project1', 'deps/project2'], |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
250 ['subdir2/deps/project1']) |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
251 checkdeps(ui, repo, 4, ['subdir/deps/project1'], ['deps/project2']) |
6463b34bbcb6
svnexternals: support subrepos based externals checkout
Patrick Mezard <pmezard@gmail.com>
parents:
762
diff
changeset
|
252 |
784
f214fb3f92cd
svnexternals: handle new overwrite argument of subrepo.get()
Patrick Mezard <pmezard@gmail.com>
parents:
776
diff
changeset
|
253 # Test update --clean, used to crash |
f214fb3f92cd
svnexternals: handle new overwrite argument of subrepo.get()
Patrick Mezard <pmezard@gmail.com>
parents:
776
diff
changeset
|
254 repo.wwrite('subdir/deps/project1/a', 'foobar', '') |
f214fb3f92cd
svnexternals: handle new overwrite argument of subrepo.get()
Patrick Mezard <pmezard@gmail.com>
parents:
776
diff
changeset
|
255 commands.update(ui, repo, node='4', clean=True) |
f214fb3f92cd
svnexternals: handle new overwrite argument of subrepo.get()
Patrick Mezard <pmezard@gmail.com>
parents:
776
diff
changeset
|
256 |
175
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
257 class TestPushExternals(test_util.TestBase): |
764
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
258 def test_push_externals(self, stupid=False): |
175
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
259 test_util.load_fixture_and_fetch('pushexternals.svndump', |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
260 self.repo_path, |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
261 self.wc_path) |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
262 # Add a new reference on an existing and non-existing directory |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
263 changes = [ |
215
b5ef9a404f5d
Stopped idiotic filtering of revisions that did not edit something branches/tags/trunk.
Augie Fackler <durin42@gmail.com>
parents:
195
diff
changeset
|
264 ('.hgsvnexternals', '.hgsvnexternals', |
b5ef9a404f5d
Stopped idiotic filtering of revisions that did not edit something branches/tags/trunk.
Augie Fackler <durin42@gmail.com>
parents:
195
diff
changeset
|
265 """[dir] |
175
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
266 ../externals/project2 deps/project2 |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
267 [subdir1] |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
268 ../externals/project1 deps/project1 |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
269 [subdir2] |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
270 ../externals/project2 deps/project2 |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
271 """), |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
272 ('subdir1/a', 'subdir1/a', 'a'), |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
273 ('subdir2/a', 'subdir2/a', 'a'), |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
274 ] |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
275 self.commitchanges(changes) |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
276 self.pushrevisions(stupid) |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
277 self.assertchanges(changes, self.repo['tip']) |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
278 |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
279 # Remove all references from one directory, add a new one |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
280 # to the other (test multiline entries) |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
281 changes = [ |
215
b5ef9a404f5d
Stopped idiotic filtering of revisions that did not edit something branches/tags/trunk.
Augie Fackler <durin42@gmail.com>
parents:
195
diff
changeset
|
282 ('.hgsvnexternals', '.hgsvnexternals', |
b5ef9a404f5d
Stopped idiotic filtering of revisions that did not edit something branches/tags/trunk.
Augie Fackler <durin42@gmail.com>
parents:
195
diff
changeset
|
283 """[subdir1] |
175
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
284 ../externals/project1 deps/project1 |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
285 ../externals/project2 deps/project2 |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
286 """), |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
287 # This removal used to trigger the parent directory removal |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
288 ('subdir1/a', None, None), |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
289 ] |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
290 self.commitchanges(changes) |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
291 self.pushrevisions(stupid) |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
292 self.assertchanges(changes, self.repo['tip']) |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
293 # Check subdir2/a is still there even if the externals were removed |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
294 self.assertTrue('subdir2/a' in self.repo['tip']) |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
295 self.assertTrue('subdir1/a' not in self.repo['tip']) |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
296 |
176
c4115b3918e9
Really delete the .hgsvnexternals file when explicitely removed
Patrick Mezard <pmezard@gmail.com>
parents:
175
diff
changeset
|
297 # Test externals removal |
c4115b3918e9
Really delete the .hgsvnexternals file when explicitely removed
Patrick Mezard <pmezard@gmail.com>
parents:
175
diff
changeset
|
298 changes = [ |
c4115b3918e9
Really delete the .hgsvnexternals file when explicitely removed
Patrick Mezard <pmezard@gmail.com>
parents:
175
diff
changeset
|
299 ('.hgsvnexternals', None, None), |
c4115b3918e9
Really delete the .hgsvnexternals file when explicitely removed
Patrick Mezard <pmezard@gmail.com>
parents:
175
diff
changeset
|
300 ] |
c4115b3918e9
Really delete the .hgsvnexternals file when explicitely removed
Patrick Mezard <pmezard@gmail.com>
parents:
175
diff
changeset
|
301 self.commitchanges(changes) |
c4115b3918e9
Really delete the .hgsvnexternals file when explicitely removed
Patrick Mezard <pmezard@gmail.com>
parents:
175
diff
changeset
|
302 self.pushrevisions(stupid) |
c4115b3918e9
Really delete the .hgsvnexternals file when explicitely removed
Patrick Mezard <pmezard@gmail.com>
parents:
175
diff
changeset
|
303 self.assertchanges(changes, self.repo['tip']) |
c4115b3918e9
Really delete the .hgsvnexternals file when explicitely removed
Patrick Mezard <pmezard@gmail.com>
parents:
175
diff
changeset
|
304 |
175
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
305 def test_push_externals_stupid(self): |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
306 self.test_push_externals(True) |
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
307 |
764
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
308 def test_push_hgsub(self, stupid=False): |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
309 if subrepo is None: |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
310 return |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
311 |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
312 test_util.load_fixture_and_fetch('pushexternals.svndump', |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
313 self.repo_path, |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
314 self.wc_path, |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
315 externals='subrepos') |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
316 # Add a new reference on an existing and non-existing directory |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
317 changes = [ |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
318 ('.hgsub', '.hgsub', """\ |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
319 dir/deps/project2 = [hgsubversion] dir:^/externals/project2 deps/project2 |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
320 subdir1/deps/project1 = [hgsubversion] subdir1:^/externals/project1 deps/project1 |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
321 subdir2/deps/project2 = [hgsubversion] subdir2:^/externals/project2 deps/project2 |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
322 """), |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
323 ('.hgsubstate', '.hgsubstate', """\ |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
324 HEAD dir/deps/project2 |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
325 HEAD subdir1/deps/project1 |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
326 HEAD subdir2/deps/project2 |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
327 """), |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
328 ('subdir1/a', 'subdir1/a', 'a'), |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
329 ('subdir2/a', 'subdir2/a', 'a'), |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
330 ] |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
331 self.svnco('externals/project2', '2', 'dir/deps/project2') |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
332 self.svnco('externals/project1', '2', 'subdir1/deps/project1') |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
333 self.svnco('externals/project2', '2', 'subdir2/deps/project2') |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
334 self.commitchanges(changes) |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
335 self.pushrevisions(stupid) |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
336 self.assertchanges(changes, self.repo['tip']) |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
337 |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
338 # Check .hgsub and .hgsubstate were not pushed |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
339 self.assertEqual(['dir', 'subdir1', 'subdir1/a','subdir2', |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
340 'subdir2/a'], self.svnls('trunk')) |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
341 |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
342 # Remove all references from one directory, add a new one |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
343 # to the other (test multiline entries) |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
344 changes = [ |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
345 ('.hgsub', '.hgsub', """\ |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
346 subdir1/deps/project1 = [hgsubversion] subdir1:^/externals/project1 deps/project1 |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
347 subdir1/deps/project2 = [hgsubversion] subdir1:^/externals/project2 deps/project2 |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
348 """), |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
349 ('.hgsubstate', '.hgsubstate', """\ |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
350 HEAD subdir1/deps/project1 |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
351 HEAD subdir1/deps/project2 |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
352 """), |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
353 # This removal used to trigger the parent directory removal |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
354 ('subdir1/a', None, None), |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
355 ] |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
356 self.svnco('externals/project1', '2', 'subdir1/deps/project1') |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
357 self.svnco('externals/project2', '2', 'subdir1/deps/project2') |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
358 self.commitchanges(changes) |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
359 self.pushrevisions(stupid) |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
360 self.assertchanges(changes, self.repo['tip']) |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
361 # Check subdir2/a is still there even if the externals were removed |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
362 self.assertTrue('subdir2/a' in self.repo['tip']) |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
363 self.assertTrue('subdir1/a' not in self.repo['tip']) |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
364 |
785
40ddf8213fa2
pushmod: do not delete the whole branch when deleting .hgsub
Patrick Mezard <pmezard@gmail.com>
parents:
784
diff
changeset
|
365 # Move the externals so they are defined on the base directory, |
40ddf8213fa2
pushmod: do not delete the whole branch when deleting .hgsub
Patrick Mezard <pmezard@gmail.com>
parents:
784
diff
changeset
|
366 # this used to cause full branch removal when deleting the .hgsub |
40ddf8213fa2
pushmod: do not delete the whole branch when deleting .hgsub
Patrick Mezard <pmezard@gmail.com>
parents:
784
diff
changeset
|
367 changes = [ |
40ddf8213fa2
pushmod: do not delete the whole branch when deleting .hgsub
Patrick Mezard <pmezard@gmail.com>
parents:
784
diff
changeset
|
368 ('.hgsub', '.hgsub', """\ |
40ddf8213fa2
pushmod: do not delete the whole branch when deleting .hgsub
Patrick Mezard <pmezard@gmail.com>
parents:
784
diff
changeset
|
369 subdir1/deps/project1 = [hgsubversion] :^/externals/project1 subdir1/deps/project1 |
40ddf8213fa2
pushmod: do not delete the whole branch when deleting .hgsub
Patrick Mezard <pmezard@gmail.com>
parents:
784
diff
changeset
|
370 """), |
40ddf8213fa2
pushmod: do not delete the whole branch when deleting .hgsub
Patrick Mezard <pmezard@gmail.com>
parents:
784
diff
changeset
|
371 ('.hgsubstate', '.hgsubstate', """\ |
40ddf8213fa2
pushmod: do not delete the whole branch when deleting .hgsub
Patrick Mezard <pmezard@gmail.com>
parents:
784
diff
changeset
|
372 HEAD subdir1/deps/project1 |
40ddf8213fa2
pushmod: do not delete the whole branch when deleting .hgsub
Patrick Mezard <pmezard@gmail.com>
parents:
784
diff
changeset
|
373 """), |
40ddf8213fa2
pushmod: do not delete the whole branch when deleting .hgsub
Patrick Mezard <pmezard@gmail.com>
parents:
784
diff
changeset
|
374 ] |
40ddf8213fa2
pushmod: do not delete the whole branch when deleting .hgsub
Patrick Mezard <pmezard@gmail.com>
parents:
784
diff
changeset
|
375 self.commitchanges(changes) |
40ddf8213fa2
pushmod: do not delete the whole branch when deleting .hgsub
Patrick Mezard <pmezard@gmail.com>
parents:
784
diff
changeset
|
376 self.pushrevisions(stupid) |
40ddf8213fa2
pushmod: do not delete the whole branch when deleting .hgsub
Patrick Mezard <pmezard@gmail.com>
parents:
784
diff
changeset
|
377 self.assertchanges(changes, self.repo['tip']) |
40ddf8213fa2
pushmod: do not delete the whole branch when deleting .hgsub
Patrick Mezard <pmezard@gmail.com>
parents:
784
diff
changeset
|
378 |
764
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
379 # Test externals removal |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
380 changes = [ |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
381 ('.hgsub', None, None), |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
382 ('.hgsubstate', None, None), |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
383 ] |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
384 self.commitchanges(changes) |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
385 self.pushrevisions(stupid) |
bc5c176b63eb
svnexternals: support pushing subrepo based externals
Patrick Mezard <pmezard@gmail.com>
parents:
763
diff
changeset
|
386 self.assertchanges(changes, self.repo['tip']) |
175
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
387 |
174
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
388 def suite(): |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
389 all = [unittest.TestLoader().loadTestsFromTestCase(TestFetchExternals), |
175
2412800b1258
Support svn:externals changes via .hgsvnexternals updates
Patrick Mezard <pmezard@gmail.com>
parents:
174
diff
changeset
|
390 unittest.TestLoader().loadTestsFromTestCase(TestPushExternals), |
174
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
391 ] |
f80132c5fea5
Convert svn:externals properties into a .hgsvnexternals file
Patrick Mezard <pmezard@gmail.com>
parents:
diff
changeset
|
392 return unittest.TestSuite(all) |