Mercurial > hgsubversion
annotate tests/test_single_dir_push.py @ 1450:3c4fbf59e503
svnmeta: do not add instance references to the class object
This is part of a bigger plan to prevent a fd leak by making sure the sqlite
connection object is garbage collected.
Usually this is not a very serious issue but the testing framework will run
all tests in a single process by default. The fd leak will make tests fail
on systems with a low RLIMIT_NOFILE.
Previously, when we are adding new properties to the SVNMeta class, we bind
the current instance in the closure, which essentially prevents any SVNMeta
instances from being garbage collected (and its state like revmap). This
patch changed "self" from the closure one to the lambda argument to address
the issue.
author | Jun Wu <quark@fb.com> |
---|---|
date | Fri, 27 May 2016 01:42:55 +0100 |
parents | e597714cb420 |
children | 0ebcc5bbf692 |
rev | line source |
---|---|
1047
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
1 import test_util |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
2 |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
3 import errno |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
4 import shutil |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
5 import unittest |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
6 |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
7 from mercurial import commands |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
8 from mercurial import context |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
9 from mercurial import hg |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
10 from mercurial import node |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
11 from mercurial import ui |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
12 |
1103
6e1dbf6cbc92
compathacks: new module to collect hacks to work around hg internals changing
Augie Fackler <raf@durin42.com>
parents:
1075
diff
changeset
|
13 from hgsubversion import compathacks |
6e1dbf6cbc92
compathacks: new module to collect hacks to work around hg internals changing
Augie Fackler <raf@durin42.com>
parents:
1075
diff
changeset
|
14 |
1047
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
15 class TestSingleDirPush(test_util.TestBase): |
1075
cf325cd90b22
test_single_dir_push: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1055
diff
changeset
|
16 stupid_mode_tests = True |
1055
2d7398fffd0d
push: obsolete rather than rebase & strip when enabled
Dan Villiom Podlaski Christiansen <dan@cabo.dk>
parents:
1047
diff
changeset
|
17 obsolete_mode_tests = True |
2d7398fffd0d
push: obsolete rather than rebase & strip when enabled
Dan Villiom Podlaski Christiansen <dan@cabo.dk>
parents:
1047
diff
changeset
|
18 |
1047
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
19 def test_push_single_dir(self): |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
20 # Tests simple pushing from default branch to a single dir repo |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
21 repo, repo_path = self.load_and_fetch('branch_from_tag.svndump', |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
22 layout='single', |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
23 subdir='') |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
24 def file_callback(repo, memctx, path): |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
25 if path == 'adding_file': |
1205
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
26 return compathacks.makememfilectx(repo, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
27 path=path, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
28 data='foo', |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
29 islink=False, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
30 isexec=False, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
31 copied=False) |
1047
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
32 elif path == 'adding_binary': |
1205
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
33 return compathacks.makememfilectx(repo, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
34 path=path, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
35 data='\0binary', |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
36 islink=False, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
37 isexec=False, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
38 copied=False) |
1047
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
39 raise IOError(errno.EINVAL, 'Invalid operation: ' + path) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
40 ctx = context.memctx(repo, |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
41 (repo['tip'].node(), node.nullid), |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
42 'automated test', |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
43 ['adding_file', 'adding_binary'], |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
44 file_callback, |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
45 'an_author', |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
46 '2009-10-19 18:49:30 -0500', |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
47 {'branch': 'default', }) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
48 repo.commitctx(ctx) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
49 hg.update(repo, repo['tip'].node()) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
50 self.pushrevisions() |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
51 self.assertTrue('adding_file' in test_util.svnls(repo_path, '')) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
52 self.assertEqual('application/octet-stream', |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
53 test_util.svnpropget(repo_path, 'adding_binary', |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
54 'svn:mime-type')) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
55 # Now add another commit and test mime-type being reset |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
56 changes = [('adding_binary', 'adding_binary', 'no longer binary')] |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
57 self.commitchanges(changes) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
58 self.pushrevisions() |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
59 self.assertEqual('', test_util.svnpropget(repo_path, 'adding_binary', |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
60 'svn:mime-type')) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
61 |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
62 def test_push_single_dir_at_subdir(self): |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
63 repo = self._load_fixture_and_fetch('branch_from_tag.svndump', |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
64 layout='single', |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
65 subdir='trunk') |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
66 def filectxfn(repo, memctx, path): |
1205
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
67 return compathacks.makememfilectx(repo, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
68 path=path, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
69 data='contents of %s' % path, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
70 islink=False, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
71 isexec=False, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
72 copied=False) |
1047
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
73 ctx = context.memctx(repo, |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
74 (repo['tip'].node(), node.nullid), |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
75 'automated test', |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
76 ['bogus'], |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
77 filectxfn, |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
78 'an_author', |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
79 '2009-10-19 18:49:30 -0500', |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
80 {'branch': 'localhacking', }) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
81 n = repo.commitctx(ctx) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
82 self.assertEqual(self.repo['tip']['bogus'].data(), |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
83 'contents of bogus') |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
84 before = repo['tip'].hex() |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
85 hg.update(repo, self.repo['tip'].hex()) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
86 self.pushrevisions() |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
87 self.assertNotEqual(before, self.repo['tip'].hex()) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
88 self.assertEqual(self.repo['tip']['bogus'].data(), |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
89 'contents of bogus') |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
90 |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
91 def test_push_single_dir_one_incoming_and_two_outgoing(self): |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
92 # Tests simple pushing from default branch to a single dir repo |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
93 # Pushes two outgoing over one incoming svn rev |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
94 # (used to cause an "unknown revision") |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
95 # This can happen if someone committed to svn since our last pull (race). |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
96 repo, repo_path = self.load_and_fetch('branch_from_tag.svndump', |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
97 layout='single', |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
98 subdir='trunk') |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
99 self.add_svn_rev(repo_path, {'trunk/alpha': 'Changed'}) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
100 def file_callback(repo, memctx, path): |
1205
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
101 return compathacks.makememfilectx(repo, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
102 path=path, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
103 data='data of %s' % path, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
104 islink=False, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
105 isexec=False, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
106 copied=False) |
1047
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
107 for fn in ['one', 'two']: |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
108 ctx = context.memctx(repo, |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
109 (repo['tip'].node(), node.nullid), |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
110 'automated test', |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
111 [fn], |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
112 file_callback, |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
113 'an_author', |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
114 '2009-10-19 18:49:30 -0500', |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
115 {'branch': 'default', }) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
116 repo.commitctx(ctx) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
117 hg.update(repo, repo['tip'].node()) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
118 self.pushrevisions(expected_extra_back=1) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
119 self.assertTrue('trunk/one' in test_util.svnls(repo_path, '')) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
120 self.assertTrue('trunk/two' in test_util.svnls(repo_path, '')) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
121 |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
122 def test_push_single_dir_branch(self): |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
123 # Tests local branches pushing to a single dir repo. Creates a fork at |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
124 # tip. The default branch adds a file called default, while branch foo |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
125 # adds a file called foo, then tries to push the foo branch and default |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
126 # branch in that order. |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
127 repo, repo_path = self.load_and_fetch('branch_from_tag.svndump', |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
128 layout='single', |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
129 subdir='') |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
130 def file_callback(data): |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
131 def cb(repo, memctx, path): |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
132 if path == data: |
1205
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
133 return compathacks.makememfilectx(repo, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
134 path=path, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
135 data=data, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
136 islink=False, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
137 isexec=False, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
138 copied=False) |
1047
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
139 raise IOError(errno.EINVAL, 'Invalid operation: ' + path) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
140 return cb |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
141 |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
142 def commit_to_branch(name, parent): |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
143 repo.commitctx(context.memctx(repo, |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
144 (parent, node.nullid), |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
145 'automated test (%s)' % name, |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
146 [name], |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
147 file_callback(name), |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
148 'an_author', |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
149 '2009-10-19 18:49:30 -0500', |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
150 {'branch': name, })) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
151 |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
152 parent = repo['tip'].node() |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
153 commit_to_branch('default', parent) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
154 commit_to_branch('foo', parent) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
155 hg.update(repo, repo['foo'].node()) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
156 self.pushrevisions() |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
157 repo = self.repo # repo is outdated after the rebase happens, refresh |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
158 self.assertTrue('foo' in test_util.svnls(repo_path, '')) |
1103
6e1dbf6cbc92
compathacks: new module to collect hacks to work around hg internals changing
Augie Fackler <raf@durin42.com>
parents:
1075
diff
changeset
|
159 self.assertEqual(compathacks.branchset(repo), set(['default'])) |
1047
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
160 # Have to cross to another branch head, so hg.update doesn't work |
1342
c6b01fd34694
trying to fix progress output
Augie Fackler <raf@durin42.com>
parents:
1205
diff
changeset
|
161 commands.update(self.ui(), |
1047
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
162 self.repo, |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
163 self.repo.branchheads('default')[1], |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
164 clean=True) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
165 self.pushrevisions() |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
166 self.assertTrue('default' in test_util.svnls(repo_path, '')) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
167 self.assertEquals(len(self.repo.branchheads('default')), 1) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
168 |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
169 @test_util.requiresoption('branch') |
1075
cf325cd90b22
test_single_dir_push: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1055
diff
changeset
|
170 def test_push_single_dir_renamed_branch(self): |
1047
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
171 # Tests pulling and pushing with a renamed branch |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
172 # Based on test_push_single_dir |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
173 repo_path = self.load_svndump('branch_from_tag.svndump') |
1343
e597714cb420
tests: pass --quiet anyplace we call dispatch to run a command
Augie Fackler <raf@durin42.com>
parents:
1342
diff
changeset
|
174 cmd = ['clone', '--quiet', '--layout=single', '--branch=flaf'] |
1075
cf325cd90b22
test_single_dir_push: use stupid mode metaclass
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1055
diff
changeset
|
175 if self.stupid: |
1047
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
176 cmd.append('--stupid') |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
177 cmd += [test_util.fileurl(repo_path), self.wc_path] |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
178 test_util.dispatch(cmd) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
179 |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
180 def file_callback(repo, memctx, path): |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
181 if path == 'adding_file': |
1205
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
182 return compathacks.makememfilectx(repo, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
183 path=path, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
184 data='foo', |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
185 islink=False, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
186 isexec=False, |
f1dd304be8aa
test_single_dir_push: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1103
diff
changeset
|
187 copied=False) |
1047
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
188 raise IOError(errno.EINVAL, 'Invalid operation: ' + path) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
189 ctx = context.memctx(self.repo, |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
190 (self.repo['tip'].node(), node.nullid), |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
191 'automated test', |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
192 ['adding_file'], |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
193 file_callback, |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
194 'an_author', |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
195 '2009-10-19 18:49:30 -0500', |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
196 {'branch': 'default', }) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
197 self.repo.commitctx(ctx) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
198 hg.update(self.repo, self.repo['tip'].node()) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
199 self.pushrevisions() |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
200 self.assertTrue('adding_file' in test_util.svnls(repo_path, '')) |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
201 |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
202 self.assertEquals(set(['flaf']), |
3092b3c109a8
tests: split single directory tests that push & clone in two modules
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
diff
changeset
|
203 set(self.repo[i].branch() for i in self.repo)) |