Mercurial > hgsubversion
annotate tests/test_push_command.py @ 1554:258fb67fb956
externals: correctly enable hgsubversion externals support during tests
For now this is defaulted to off, because it's a subclass of the
Subversion support which we've disabled by default in core.
author | Augie Fackler <raf@durin42.com> |
---|---|
date | Sat, 24 Mar 2018 15:44:11 -0400 |
parents | 8410a978c650 |
children | cff81f35b31e |
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:
626
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:
626
diff
changeset
|
2 |
331
75f082b5897e
Switch to using url scheme wrappers instead of duplicating each command we wrap.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
277
diff
changeset
|
3 import atexit |
531
cf4fe45bf8fd
Change all instantiations of IOError to set both errno and strerror.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
484
diff
changeset
|
4 import errno |
16
48a44546c12f
Add a basic system for running the hgsubversion tests (although not the svnwrap ones) without requiring Nose. Nose is still the recommended way to run the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
5 import os |
854
50a09999dce3
tests: push_command: use svnserve.kill() in Python >=2.6
Arne Babenhauserheide <arne.babenhauserheide@fzk.de>
parents:
834
diff
changeset
|
6 import sys |
331
75f082b5897e
Switch to using url scheme wrappers instead of duplicating each command we wrap.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
277
diff
changeset
|
7 import random |
356
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
8 import shutil |
48
d87b57c719f0
Add a test that verifies push works to svn:// servers.
Augie Fackler <durin42@gmail.com>
parents:
27
diff
changeset
|
9 import socket |
78
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
65
diff
changeset
|
10 import subprocess |
16
48a44546c12f
Add a basic system for running the hgsubversion tests (although not the svnwrap ones) without requiring Nose. Nose is still the recommended way to run the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
11 import unittest |
48a44546c12f
Add a basic system for running the hgsubversion tests (although not the svnwrap ones) without requiring Nose. Nose is still the recommended way to run the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
12 |
48a44546c12f
Add a basic system for running the hgsubversion tests (although not the svnwrap ones) without requiring Nose. Nose is still the recommended way to run the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
13 from mercurial import context |
331
75f082b5897e
Switch to using url scheme wrappers instead of duplicating each command we wrap.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
277
diff
changeset
|
14 from mercurial import commands |
16
48a44546c12f
Add a basic system for running the hgsubversion tests (although not the svnwrap ones) without requiring Nose. Nose is still the recommended way to run the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
15 from mercurial import hg |
48a44546c12f
Add a basic system for running the hgsubversion tests (although not the svnwrap ones) without requiring Nose. Nose is still the recommended way to run the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
16 from mercurial import node |
48a44546c12f
Add a basic system for running the hgsubversion tests (although not the svnwrap ones) without requiring Nose. Nose is still the recommended way to run the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
17 from mercurial import revlog |
277
3848a7f9b983
push: Add a test that demonstrates base-text detection works
Augie Fackler <durin42@gmail.com>
parents:
257
diff
changeset
|
18 from mercurial import util as hgutil |
16
48a44546c12f
Add a basic system for running the hgsubversion tests (although not the svnwrap ones) without requiring Nose. Nose is still the recommended way to run the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
19 |
1040
ada2400241c4
fixes for running under Mercurial 2.0
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1036
diff
changeset
|
20 from hgsubversion import util |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
21 from hgsubversion import compathacks |
1040
ada2400241c4
fixes for running under Mercurial 2.0
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1036
diff
changeset
|
22 |
48
d87b57c719f0
Add a test that verifies push works to svn:// servers.
Augie Fackler <durin42@gmail.com>
parents:
27
diff
changeset
|
23 import time |
d87b57c719f0
Add a test that verifies push works to svn:// servers.
Augie Fackler <durin42@gmail.com>
parents:
27
diff
changeset
|
24 |
16
48a44546c12f
Add a basic system for running the hgsubversion tests (although not the svnwrap ones) without requiring Nose. Nose is still the recommended way to run the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
25 |
82
71de43e9f614
Extract PushTest common code into test_util.TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
80
diff
changeset
|
26 class PushTests(test_util.TestBase): |
1055
2d7398fffd0d
push: obsolete rather than rebase & strip when enabled
Dan Villiom Podlaski Christiansen <dan@cabo.dk>
parents:
1048
diff
changeset
|
27 obsolete_mode_tests = True |
2d7398fffd0d
push: obsolete rather than rebase & strip when enabled
Dan Villiom Podlaski Christiansen <dan@cabo.dk>
parents:
1048
diff
changeset
|
28 |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
29 def setUp(self): |
82
71de43e9f614
Extract PushTest common code into test_util.TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
80
diff
changeset
|
30 test_util.TestBase.setUp(self) |
872
a279b5838aaf
test_util: remove self.repo_path, generate new paths each time
Patrick Mezard <patrick@mezard.eu>
parents:
866
diff
changeset
|
31 self.repo_path = self.load_and_fetch('simple_branch.svndump')[1] |
16
48a44546c12f
Add a basic system for running the hgsubversion tests (although not the svnwrap ones) without requiring Nose. Nose is still the recommended way to run the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
32 |
220
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
33 def test_cant_push_empty_ctx(self): |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
34 repo = self.repo |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
35 def file_callback(repo, memctx, path): |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
36 if path == 'adding_file': |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
37 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
38 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
39 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
40 data='foo', |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
41 islink=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
42 isexec=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
43 copied=False) |
220
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
44 raise IOError() |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
45 ctx = context.memctx(repo, |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
46 (repo['default'].node(), node.nullid), |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
47 'automated test', |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
48 [], |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
49 file_callback, |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
50 'an_author', |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
51 '2008-10-07 20:59:48 -0500', |
832
e9af7eba88db
globally: clean up whitespace around operators and commas to conform with PEP8
Yonggang Luo <luoyonggang@gmail.com>
parents:
816
diff
changeset
|
52 {'branch': 'default', }) |
220
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
53 new_hash = repo.commitctx(ctx) |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
54 hg.update(repo, repo['tip'].node()) |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
55 old_tip = repo['tip'].node() |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
56 self.pushrevisions() |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
57 tip = self.repo['tip'] |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
58 self.assertEqual(tip.node(), old_tip) |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
59 |
1036
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
60 def test_push_add_of_added_upstream_gives_sane_error(self): |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
61 repo = self.repo |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
62 def file_callback(repo, memctx, path): |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
63 if path == 'adding_file': |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
64 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
65 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
66 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
67 data='foo', |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
68 islink=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
69 isexec=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
70 copied=False) |
1036
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
71 raise IOError() |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
72 p1 = repo['default'].node() |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
73 ctx = context.memctx(repo, |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
74 (p1, node.nullid), |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
75 'automated test', |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
76 ['adding_file'], |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
77 file_callback, |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
78 'an_author', |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
79 '2008-10-07 20:59:48 -0500', |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
80 {'branch': 'default', }) |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
81 new_hash = repo.commitctx(ctx) |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
82 hg.update(repo, repo['tip'].node()) |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
83 old_tip = repo['tip'].node() |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
84 self.pushrevisions() |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
85 tip = self.repo['tip'] |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
86 self.assertNotEqual(tip.node(), old_tip) |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
87 |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
88 # This node adds the same file as the first one we added, and |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
89 # will be refused by the server for adding a file that already |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
90 # exists. We should respond with an error suggesting the user |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
91 # rebase. |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
92 ctx = context.memctx(repo, |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
93 (p1, node.nullid), |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
94 'automated test', |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
95 ['adding_file'], |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
96 file_callback, |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
97 'an_author', |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
98 '2008-10-07 20:59:48 -0500', |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
99 {'branch': 'default', }) |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
100 new_hash = repo.commitctx(ctx) |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
101 hg.update(repo, repo['tip'].node()) |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
102 old_tip = repo['tip'].node() |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
103 try: |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
104 self.pushrevisions() |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
105 except hgutil.Abort, e: |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
106 assert "pull again and rebase" in str(e) |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
107 tip = self.repo['tip'] |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
108 self.assertEqual(tip.node(), old_tip) |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
109 |
461
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
110 def test_cant_push_with_changes(self): |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
111 repo = self.repo |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
112 def file_callback(repo, memctx, path): |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
113 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
114 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
115 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
116 data='foo', |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
117 islink=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
118 isexec=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
119 copied=False) |
461
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
120 ctx = context.memctx(repo, |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
121 (repo['default'].node(), node.nullid), |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
122 'automated test', |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
123 ['adding_file'], |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
124 file_callback, |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
125 'an_author', |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
126 '2008-10-07 20:59:48 -0500', |
832
e9af7eba88db
globally: clean up whitespace around operators and commas to conform with PEP8
Yonggang Luo <luoyonggang@gmail.com>
parents:
816
diff
changeset
|
127 {'branch': 'default', }) |
461
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
128 new_hash = repo.commitctx(ctx) |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
129 hg.update(repo, repo['tip'].node()) |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
130 # Touch an existing file |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
131 repo.wwrite('beta', 'something else', '') |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
132 try: |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
133 self.pushrevisions() |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
134 except hgutil.Abort: |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
135 pass |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
136 tip = self.repo['tip'] |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
137 self.assertEqual(new_hash, tip.node()) |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
138 |
671
e910e3ebd23b
svnmeta: strip all repeated slashes from subdir
Peter Arrenbrecht <peter.arrenbre...@gmail.com>
parents:
643
diff
changeset
|
139 def internal_push_over_svnserve(self, subdir='', commit=True): |
866
20e73b5ab6f7
test_util: merge load_svndump_fixture() into TestBase
Patrick Mezard <patrick@mezard.eu>
parents:
865
diff
changeset
|
140 repo_path = self.load_svndump('simple_branch.svndump') |
20e73b5ab6f7
test_util: merge load_svndump_fixture() into TestBase
Patrick Mezard <patrick@mezard.eu>
parents:
865
diff
changeset
|
141 open(os.path.join(repo_path, 'conf', 'svnserve.conf'), |
336
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
142 'w').write('[general]\nanon-access=write\n[sasl]\n') |
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
143 self.port = random.randint(socket.IPPORT_USERRESERVED, 65535) |
1451
945700dac237
tests: use hostname instead of localhost
Durham Goode <durham@fb.com>
parents:
1321
diff
changeset
|
144 self.host = socket.gethostname() |
1501
6e3f48d8002f
tests: fix ipv6 support in test_push_command.py
Arun Kulshreshtha <kulshrax@fb.com>
parents:
1451
diff
changeset
|
145 |
6e3f48d8002f
tests: fix ipv6 support in test_push_command.py
Arun Kulshreshtha <kulshrax@fb.com>
parents:
1451
diff
changeset
|
146 # The `svnserve` binary appears to use the obsolete `gethostbyname(3)` |
6e3f48d8002f
tests: fix ipv6 support in test_push_command.py
Arun Kulshreshtha <kulshrax@fb.com>
parents:
1451
diff
changeset
|
147 # function, which always returns an IPv4 address, even on hosts that |
6e3f48d8002f
tests: fix ipv6 support in test_push_command.py
Arun Kulshreshtha <kulshrax@fb.com>
parents:
1451
diff
changeset
|
148 # support and expect IPv6. As a workaround, resolve the hostname |
6e3f48d8002f
tests: fix ipv6 support in test_push_command.py
Arun Kulshreshtha <kulshrax@fb.com>
parents:
1451
diff
changeset
|
149 # within the test harness with `getaddrinfo(3)` to ensure that the |
6e3f48d8002f
tests: fix ipv6 support in test_push_command.py
Arun Kulshreshtha <kulshrax@fb.com>
parents:
1451
diff
changeset
|
150 # client and server both use the same IPv4 or IPv6 address. |
1522
1122a90e329a
test_push_command: deal with gethostname() sometimes returning bad hostnames
Augie Fackler <raf@durin42.com>
parents:
1508
diff
changeset
|
151 try: |
1122a90e329a
test_push_command: deal with gethostname() sometimes returning bad hostnames
Augie Fackler <raf@durin42.com>
parents:
1508
diff
changeset
|
152 addrinfo = socket.getaddrinfo(self.host, self.port) |
1122a90e329a
test_push_command: deal with gethostname() sometimes returning bad hostnames
Augie Fackler <raf@durin42.com>
parents:
1508
diff
changeset
|
153 except socket.gaierror as e: |
1122a90e329a
test_push_command: deal with gethostname() sometimes returning bad hostnames
Augie Fackler <raf@durin42.com>
parents:
1508
diff
changeset
|
154 # gethostname() can give a hostname that doesn't |
1122a90e329a
test_push_command: deal with gethostname() sometimes returning bad hostnames
Augie Fackler <raf@durin42.com>
parents:
1508
diff
changeset
|
155 # resolve. Seems bad, but let's fall back to `localhost` in |
1122a90e329a
test_push_command: deal with gethostname() sometimes returning bad hostnames
Augie Fackler <raf@durin42.com>
parents:
1508
diff
changeset
|
156 # that case and hope for the best. |
1122a90e329a
test_push_command: deal with gethostname() sometimes returning bad hostnames
Augie Fackler <raf@durin42.com>
parents:
1508
diff
changeset
|
157 self.host = 'localhost' |
1122a90e329a
test_push_command: deal with gethostname() sometimes returning bad hostnames
Augie Fackler <raf@durin42.com>
parents:
1508
diff
changeset
|
158 addrinfo = socket.getaddrinfo(self.host, self.port) |
1507
debba0fa822e
test_push_command: bias towards IPv4 to work around gremlins on macOS
Augie Fackler <raf@durin42.com>
parents:
1501
diff
changeset
|
159 # On macOS svn seems to have issues with IPv6 at least some of |
debba0fa822e
test_push_command: bias towards IPv4 to work around gremlins on macOS
Augie Fackler <raf@durin42.com>
parents:
1501
diff
changeset
|
160 # the time, so try and bias towards IPv4. This works because |
debba0fa822e
test_push_command: bias towards IPv4 to work around gremlins on macOS
Augie Fackler <raf@durin42.com>
parents:
1501
diff
changeset
|
161 # AF_INET is less than AF_INET6 on all platforms I've |
debba0fa822e
test_push_command: bias towards IPv4 to work around gremlins on macOS
Augie Fackler <raf@durin42.com>
parents:
1501
diff
changeset
|
162 # checked. Hopefully any platform where that's not true will |
debba0fa822e
test_push_command: bias towards IPv4 to work around gremlins on macOS
Augie Fackler <raf@durin42.com>
parents:
1501
diff
changeset
|
163 # be fine with IPv6 all the time. :) |
debba0fa822e
test_push_command: bias towards IPv4 to work around gremlins on macOS
Augie Fackler <raf@durin42.com>
parents:
1501
diff
changeset
|
164 selected = sorted(addrinfo)[0] |
debba0fa822e
test_push_command: bias towards IPv4 to work around gremlins on macOS
Augie Fackler <raf@durin42.com>
parents:
1501
diff
changeset
|
165 self.host = selected[4][0] |
1501
6e3f48d8002f
tests: fix ipv6 support in test_push_command.py
Arun Kulshreshtha <kulshrax@fb.com>
parents:
1451
diff
changeset
|
166 |
6e3f48d8002f
tests: fix ipv6 support in test_push_command.py
Arun Kulshreshtha <kulshrax@fb.com>
parents:
1451
diff
changeset
|
167 # If we're connecting via IPv6 the need to put brackets around the |
6e3f48d8002f
tests: fix ipv6 support in test_push_command.py
Arun Kulshreshtha <kulshrax@fb.com>
parents:
1451
diff
changeset
|
168 # hostname in the URL. |
1507
debba0fa822e
test_push_command: bias towards IPv4 to work around gremlins on macOS
Augie Fackler <raf@durin42.com>
parents:
1501
diff
changeset
|
169 ipv6 = selected[0] == socket.AF_INET6 |
1508
5441a9d1fd50
test_push_command: avoid letting interface name in IPv6 address
Augie Fackler <raf@durin42.com>
parents:
1507
diff
changeset
|
170 |
5441a9d1fd50
test_push_command: avoid letting interface name in IPv6 address
Augie Fackler <raf@durin42.com>
parents:
1507
diff
changeset
|
171 # Ditch any interface information since that's not helpful in |
5441a9d1fd50
test_push_command: avoid letting interface name in IPv6 address
Augie Fackler <raf@durin42.com>
parents:
1507
diff
changeset
|
172 # a URL |
5441a9d1fd50
test_push_command: avoid letting interface name in IPv6 address
Augie Fackler <raf@durin42.com>
parents:
1507
diff
changeset
|
173 if ipv6 and ':' in self.host and '%' in self.host: |
5441a9d1fd50
test_push_command: avoid letting interface name in IPv6 address
Augie Fackler <raf@durin42.com>
parents:
1507
diff
changeset
|
174 self.host = self.host.rsplit('%', 1)[0] |
5441a9d1fd50
test_push_command: avoid letting interface name in IPv6 address
Augie Fackler <raf@durin42.com>
parents:
1507
diff
changeset
|
175 |
1501
6e3f48d8002f
tests: fix ipv6 support in test_push_command.py
Arun Kulshreshtha <kulshrax@fb.com>
parents:
1451
diff
changeset
|
176 urlfmt = 'svn://[%s]:%d/%s' if ipv6 else 'svn://%s:%d/%s' |
6e3f48d8002f
tests: fix ipv6 support in test_push_command.py
Arun Kulshreshtha <kulshrax@fb.com>
parents:
1451
diff
changeset
|
177 |
336
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
178 args = ['svnserve', '--daemon', '--foreground', |
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
179 '--listen-port=%d' % self.port, |
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
180 '--listen-host=%s' % self.host, |
866
20e73b5ab6f7
test_util: merge load_svndump_fixture() into TestBase
Patrick Mezard <patrick@mezard.eu>
parents:
865
diff
changeset
|
181 '--root=%s' % repo_path] |
336
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
182 |
340
88ba55ad58c0
Minor tweaks to wrapper documentation.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
337
diff
changeset
|
183 svnserve = subprocess.Popen(args, stdout=subprocess.PIPE, |
88ba55ad58c0
Minor tweaks to wrapper documentation.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
337
diff
changeset
|
184 stderr=subprocess.STDOUT) |
88ba55ad58c0
Minor tweaks to wrapper documentation.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
337
diff
changeset
|
185 self.svnserve_pid = svnserve.pid |
336
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
186 try: |
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
187 time.sleep(2) |
337
46e69be8e2c8
Reorganize to have a more conventional module structure.
Augie Fackler <durin42@gmail.com>
parents:
336
diff
changeset
|
188 import shutil |
46e69be8e2c8
Reorganize to have a more conventional module structure.
Augie Fackler <durin42@gmail.com>
parents:
336
diff
changeset
|
189 shutil.rmtree(self.wc_path) |
671
e910e3ebd23b
svnmeta: strip all repeated slashes from subdir
Peter Arrenbrecht <peter.arrenbre...@gmail.com>
parents:
643
diff
changeset
|
190 commands.clone(self.ui(), |
1501
6e3f48d8002f
tests: fix ipv6 support in test_push_command.py
Arun Kulshreshtha <kulshrax@fb.com>
parents:
1451
diff
changeset
|
191 urlfmt % (self.host, self.port, subdir), |
336
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
192 self.wc_path, noupdate=True) |
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
193 |
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
194 repo = self.repo |
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
195 old_tip = repo['tip'].node() |
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
196 expected_parent = repo['default'].node() |
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
197 def file_callback(repo, memctx, path): |
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
198 if path == 'adding_file': |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
199 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
200 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
201 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
202 data='foo', |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
203 islink=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
204 isexec=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
205 copied=False) |
531
cf4fe45bf8fd
Change all instantiations of IOError to set both errno and strerror.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
484
diff
changeset
|
206 raise IOError(errno.EINVAL, 'Invalid operation: ' + path) |
336
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
207 ctx = context.memctx(repo, |
348
af1508b7ad54
test_push_command: improve readability a bit.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
340
diff
changeset
|
208 parents=(repo['default'].node(), node.nullid), |
af1508b7ad54
test_push_command: improve readability a bit.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
340
diff
changeset
|
209 text='automated test', |
af1508b7ad54
test_push_command: improve readability a bit.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
340
diff
changeset
|
210 files=['adding_file'], |
af1508b7ad54
test_push_command: improve readability a bit.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
340
diff
changeset
|
211 filectxfn=file_callback, |
af1508b7ad54
test_push_command: improve readability a bit.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
340
diff
changeset
|
212 user='an_author', |
af1508b7ad54
test_push_command: improve readability a bit.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
340
diff
changeset
|
213 date='2008-10-07 20:59:48 -0500', |
832
e9af7eba88db
globally: clean up whitespace around operators and commas to conform with PEP8
Yonggang Luo <luoyonggang@gmail.com>
parents:
816
diff
changeset
|
214 extra={'branch': 'default', }) |
336
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
215 new_hash = repo.commitctx(ctx) |
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
216 if not commit: |
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
217 return # some tests use this test as an extended setup. |
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
218 hg.update(repo, repo['tip'].node()) |
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
219 oldauthor = repo['tip'].user() |
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
220 commands.push(repo.ui, repo) |
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
221 tip = self.repo['tip'] |
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
222 self.assertNotEqual(oldauthor, tip.user()) |
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
223 self.assertNotEqual(tip.node(), old_tip) |
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
224 self.assertEqual(tip.parents()[0].node(), expected_parent) |
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
225 self.assertEqual(tip['adding_file'].data(), 'foo') |
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
226 self.assertEqual(tip.branch(), 'default') |
349
5d0d9424913f
test_push_command: this test causes an author of None.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
348
diff
changeset
|
227 # unintended behaviour: |
5d0d9424913f
test_push_command: this test causes an author of None.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
348
diff
changeset
|
228 self.assertNotEqual('an_author', tip.user()) |
735
c2b9e08ecf10
maps: map a missing author to '(no author)'
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
690
diff
changeset
|
229 self.assertEqual('(no author)', tip.user().rsplit('@', 1)[0]) |
336
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
230 finally: |
854
50a09999dce3
tests: push_command: use svnserve.kill() in Python >=2.6
Arne Babenhauserheide <arne.babenhauserheide@fzk.de>
parents:
834
diff
changeset
|
231 if sys.version_info >= (2,6): |
50a09999dce3
tests: push_command: use svnserve.kill() in Python >=2.6
Arne Babenhauserheide <arne.babenhauserheide@fzk.de>
parents:
834
diff
changeset
|
232 svnserve.kill() |
907
173065f9b715
push test: peek inside svn's pending transaction list on abort
Augie Fackler <raf@durin42.com>
parents:
872
diff
changeset
|
233 else: |
854
50a09999dce3
tests: push_command: use svnserve.kill() in Python >=2.6
Arne Babenhauserheide <arne.babenhauserheide@fzk.de>
parents:
834
diff
changeset
|
234 test_util.kill_process(svnserve) |
220
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
235 |
671
e910e3ebd23b
svnmeta: strip all repeated slashes from subdir
Peter Arrenbrecht <peter.arrenbre...@gmail.com>
parents:
643
diff
changeset
|
236 def test_push_over_svnserve(self): |
e910e3ebd23b
svnmeta: strip all repeated slashes from subdir
Peter Arrenbrecht <peter.arrenbre...@gmail.com>
parents:
643
diff
changeset
|
237 self.internal_push_over_svnserve() |
e910e3ebd23b
svnmeta: strip all repeated slashes from subdir
Peter Arrenbrecht <peter.arrenbre...@gmail.com>
parents:
643
diff
changeset
|
238 |
e910e3ebd23b
svnmeta: strip all repeated slashes from subdir
Peter Arrenbrecht <peter.arrenbre...@gmail.com>
parents:
643
diff
changeset
|
239 def test_push_over_svnserve_with_subdir(self): |
e910e3ebd23b
svnmeta: strip all repeated slashes from subdir
Peter Arrenbrecht <peter.arrenbre...@gmail.com>
parents:
643
diff
changeset
|
240 self.internal_push_over_svnserve(subdir='///branches////the_branch/////') |
e910e3ebd23b
svnmeta: strip all repeated slashes from subdir
Peter Arrenbrecht <peter.arrenbre...@gmail.com>
parents:
643
diff
changeset
|
241 |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
242 def test_push_to_default(self, commit=True): |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
243 repo = self.repo |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
244 old_tip = repo['tip'].node() |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
245 expected_parent = repo['default'].node() |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
246 def file_callback(repo, memctx, path): |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
247 if path == 'adding_file': |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
248 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
249 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
250 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
251 data='foo', |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
252 islink=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
253 isexec=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
254 copied=False) |
531
cf4fe45bf8fd
Change all instantiations of IOError to set both errno and strerror.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
484
diff
changeset
|
255 raise IOError(errno.EINVAL, 'Invalid operation: ' + path) |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
256 ctx = context.memctx(repo, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
257 (repo['default'].node(), node.nullid), |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
258 'automated test', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
259 ['adding_file'], |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
260 file_callback, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
261 'an_author', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
262 '2008-10-07 20:59:48 -0500', |
832
e9af7eba88db
globally: clean up whitespace around operators and commas to conform with PEP8
Yonggang Luo <luoyonggang@gmail.com>
parents:
816
diff
changeset
|
263 {'branch': 'default', }) |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
264 new_hash = repo.commitctx(ctx) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
265 if not commit: |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
266 return # some tests use this test as an extended setup. |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
267 hg.update(repo, repo['tip'].node()) |
78
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
65
diff
changeset
|
268 self.pushrevisions() |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
269 tip = self.repo['tip'] |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
270 self.assertNotEqual(tip.node(), old_tip) |
150
58ae90a65f41
push: Improved the rebasing logic for push so that it doesn't break with
Augie Fackler <durin42@gmail.com>
parents:
101
diff
changeset
|
271 self.assertEqual(node.hex(tip.parents()[0].node()), |
58ae90a65f41
push: Improved the rebasing logic for push so that it doesn't break with
Augie Fackler <durin42@gmail.com>
parents:
101
diff
changeset
|
272 node.hex(expected_parent)) |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
273 self.assertEqual(tip['adding_file'].data(), 'foo') |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
274 self.assertEqual(tip.branch(), 'default') |
16
48a44546c12f
Add a basic system for running the hgsubversion tests (although not the svnwrap ones) without requiring Nose. Nose is still the recommended way to run the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
275 |
150
58ae90a65f41
push: Improved the rebasing logic for push so that it doesn't break with
Augie Fackler <durin42@gmail.com>
parents:
101
diff
changeset
|
276 def test_push_two_revs_different_local_branch(self): |
58ae90a65f41
push: Improved the rebasing logic for push so that it doesn't break with
Augie Fackler <durin42@gmail.com>
parents:
101
diff
changeset
|
277 def filectxfn(repo, memctx, path): |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
278 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
279 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
280 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
281 data=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
282 islink=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
283 isexec=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
284 copied=False) |
150
58ae90a65f41
push: Improved the rebasing logic for push so that it doesn't break with
Augie Fackler <durin42@gmail.com>
parents:
101
diff
changeset
|
285 oldtiphash = self.repo['default'].node() |
1539
0ebcc5bbf692
tests: when making a `memctx`, make sure to use a single repo instance
Augie Fackler <raf@durin42.com>
parents:
1522
diff
changeset
|
286 lr = self.repo |
0ebcc5bbf692
tests: when making a `memctx`, make sure to use a single repo instance
Augie Fackler <raf@durin42.com>
parents:
1522
diff
changeset
|
287 ctx = context.memctx(lr, |
0ebcc5bbf692
tests: when making a `memctx`, make sure to use a single repo instance
Augie Fackler <raf@durin42.com>
parents:
1522
diff
changeset
|
288 (lr[0].node(), revlog.nullid,), |
150
58ae90a65f41
push: Improved the rebasing logic for push so that it doesn't break with
Augie Fackler <durin42@gmail.com>
parents:
101
diff
changeset
|
289 'automated test', |
58ae90a65f41
push: Improved the rebasing logic for push so that it doesn't break with
Augie Fackler <durin42@gmail.com>
parents:
101
diff
changeset
|
290 ['gamma', ], |
58ae90a65f41
push: Improved the rebasing logic for push so that it doesn't break with
Augie Fackler <durin42@gmail.com>
parents:
101
diff
changeset
|
291 filectxfn, |
58ae90a65f41
push: Improved the rebasing logic for push so that it doesn't break with
Augie Fackler <durin42@gmail.com>
parents:
101
diff
changeset
|
292 'testy', |
58ae90a65f41
push: Improved the rebasing logic for push so that it doesn't break with
Augie Fackler <durin42@gmail.com>
parents:
101
diff
changeset
|
293 '2008-12-21 16:32:00 -0500', |
58ae90a65f41
push: Improved the rebasing logic for push so that it doesn't break with
Augie Fackler <durin42@gmail.com>
parents:
101
diff
changeset
|
294 {'branch': 'localbranch', }) |
1539
0ebcc5bbf692
tests: when making a `memctx`, make sure to use a single repo instance
Augie Fackler <raf@durin42.com>
parents:
1522
diff
changeset
|
295 newhash = lr.commitctx(ctx) |
0ebcc5bbf692
tests: when making a `memctx`, make sure to use a single repo instance
Augie Fackler <raf@durin42.com>
parents:
1522
diff
changeset
|
296 ctx = context.memctx(lr, |
150
58ae90a65f41
push: Improved the rebasing logic for push so that it doesn't break with
Augie Fackler <durin42@gmail.com>
parents:
101
diff
changeset
|
297 (newhash, revlog.nullid), |
58ae90a65f41
push: Improved the rebasing logic for push so that it doesn't break with
Augie Fackler <durin42@gmail.com>
parents:
101
diff
changeset
|
298 'automated test2', |
58ae90a65f41
push: Improved the rebasing logic for push so that it doesn't break with
Augie Fackler <durin42@gmail.com>
parents:
101
diff
changeset
|
299 ['delta', ], |
58ae90a65f41
push: Improved the rebasing logic for push so that it doesn't break with
Augie Fackler <durin42@gmail.com>
parents:
101
diff
changeset
|
300 filectxfn, |
58ae90a65f41
push: Improved the rebasing logic for push so that it doesn't break with
Augie Fackler <durin42@gmail.com>
parents:
101
diff
changeset
|
301 'testy', |
58ae90a65f41
push: Improved the rebasing logic for push so that it doesn't break with
Augie Fackler <durin42@gmail.com>
parents:
101
diff
changeset
|
302 '2008-12-21 16:32:00 -0500', |
58ae90a65f41
push: Improved the rebasing logic for push so that it doesn't break with
Augie Fackler <durin42@gmail.com>
parents:
101
diff
changeset
|
303 {'branch': 'localbranch', }) |
1539
0ebcc5bbf692
tests: when making a `memctx`, make sure to use a single repo instance
Augie Fackler <raf@durin42.com>
parents:
1522
diff
changeset
|
304 newhash = lr.commitctx(ctx) |
150
58ae90a65f41
push: Improved the rebasing logic for push so that it doesn't break with
Augie Fackler <durin42@gmail.com>
parents:
101
diff
changeset
|
305 repo = self.repo |
58ae90a65f41
push: Improved the rebasing logic for push so that it doesn't break with
Augie Fackler <durin42@gmail.com>
parents:
101
diff
changeset
|
306 hg.update(repo, newhash) |
331
75f082b5897e
Switch to using url scheme wrappers instead of duplicating each command we wrap.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
277
diff
changeset
|
307 commands.push(repo.ui, repo) |
150
58ae90a65f41
push: Improved the rebasing logic for push so that it doesn't break with
Augie Fackler <durin42@gmail.com>
parents:
101
diff
changeset
|
308 self.assertEqual(self.repo['tip'].parents()[0].parents()[0].node(), oldtiphash) |
58ae90a65f41
push: Improved the rebasing logic for push so that it doesn't break with
Augie Fackler <durin42@gmail.com>
parents:
101
diff
changeset
|
309 self.assertEqual(self.repo['tip'].files(), ['delta', ]) |
1321
a36e87ae2380
tests: always compare manifest keys in sorted order
Siddharth Agarwal <sid0@fb.com>
parents:
1239
diff
changeset
|
310 self.assertEqual(sorted(self.repo['tip'].manifest().keys()), |
a36e87ae2380
tests: always compare manifest keys in sorted order
Siddharth Agarwal <sid0@fb.com>
parents:
1239
diff
changeset
|
311 ['alpha', 'beta', 'delta', 'gamma']) |
150
58ae90a65f41
push: Improved the rebasing logic for push so that it doesn't break with
Augie Fackler <durin42@gmail.com>
parents:
101
diff
changeset
|
312 |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
313 def test_push_two_revs(self): |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
314 # set up some work for us |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
315 self.test_push_to_default(commit=False) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
316 repo = self.repo |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
317 old_tip = repo['tip'].node() |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
318 expected_parent = repo['tip'].parents()[0].node() |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
319 def file_callback(repo, memctx, path): |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
320 if path == 'adding_file2': |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
321 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
322 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
323 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
324 data='foo2', |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
325 islink=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
326 isexec=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
327 copied=False) |
531
cf4fe45bf8fd
Change all instantiations of IOError to set both errno and strerror.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
484
diff
changeset
|
328 raise IOError(errno.EINVAL, 'Invalid operation: ' + path) |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
329 ctx = context.memctx(repo, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
330 (repo['default'].node(), node.nullid), |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
331 'automated test', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
332 ['adding_file2'], |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
333 file_callback, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
334 'an_author', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
335 '2008-10-07 20:59:48 -0500', |
832
e9af7eba88db
globally: clean up whitespace around operators and commas to conform with PEP8
Yonggang Luo <luoyonggang@gmail.com>
parents:
816
diff
changeset
|
336 {'branch': 'default', }) |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
337 new_hash = repo.commitctx(ctx) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
338 hg.update(repo, repo['tip'].node()) |
78
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
65
diff
changeset
|
339 self.pushrevisions() |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
340 tip = self.repo['tip'] |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
341 self.assertNotEqual(tip.node(), old_tip) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
342 self.assertNotEqual(tip.parents()[0].node(), old_tip) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
343 self.assertEqual(tip.parents()[0].parents()[0].node(), expected_parent) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
344 self.assertEqual(tip['adding_file2'].data(), 'foo2') |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
345 self.assertEqual(tip['adding_file'].data(), 'foo') |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
346 self.assertEqual(tip.parents()[0]['adding_file'].data(), 'foo') |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
347 try: |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
348 self.assertEqual(tip.parents()[0]['adding_file2'].data(), 'foo') |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
349 assert False, "this is impossible, adding_file2 should not be in this manifest." |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
350 except revlog.LookupError, e: |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
351 pass |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
352 self.assertEqual(tip.branch(), 'default') |
48
d87b57c719f0
Add a test that verifies push works to svn:// servers.
Augie Fackler <durin42@gmail.com>
parents:
27
diff
changeset
|
353 |
356
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
354 def test_push_to_branch(self, push=True): |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
355 repo = self.repo |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
356 def file_callback(repo, memctx, path): |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
357 if path == 'adding_file': |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
358 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
359 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
360 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
361 data='foo', |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
362 islink=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
363 isexec=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
364 copied=False) |
531
cf4fe45bf8fd
Change all instantiations of IOError to set both errno and strerror.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
484
diff
changeset
|
365 raise IOError(errno.EINVAL, 'Invalid operation: ' + path) |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
366 ctx = context.memctx(repo, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
367 (repo['the_branch'].node(), node.nullid), |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
368 'automated test', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
369 ['adding_file'], |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
370 file_callback, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
371 'an_author', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
372 '2008-10-07 20:59:48 -0500', |
832
e9af7eba88db
globally: clean up whitespace around operators and commas to conform with PEP8
Yonggang Luo <luoyonggang@gmail.com>
parents:
816
diff
changeset
|
373 {'branch': 'the_branch', }) |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
374 new_hash = repo.commitctx(ctx) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
375 hg.update(repo, repo['tip'].node()) |
356
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
376 if push: |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
377 self.pushrevisions() |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
378 tip = self.repo['tip'] |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
379 self.assertNotEqual(tip.node(), new_hash) |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
380 self.assertEqual(tip['adding_file'].data(), 'foo') |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
381 self.assertEqual(tip.branch(), 'the_branch') |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
382 |
625
96552e855d7e
tests: fix misnamed test caught while hunting unrelated bugs
Augie Fackler <durin42@gmail.com>
parents:
576
diff
changeset
|
383 def test_push_to_non_tip(self): |
356
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
384 self.test_push_to_branch(push=False) |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
385 wc2path = self.wc_path + '_clone' |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
386 u = self.repo.ui |
816
86d124a8768e
Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents:
735
diff
changeset
|
387 test_util.hgclone(self.repo.ui, self.wc_path, wc2path, update=False) |
626
8e621dbb82d4
push: return reasonable status codes to the end user
Augie Fackler <durin42@gmail.com>
parents:
625
diff
changeset
|
388 res = self.pushrevisions() |
8e621dbb82d4
push: return reasonable status codes to the end user
Augie Fackler <durin42@gmail.com>
parents:
625
diff
changeset
|
389 self.assertEqual(0, res) |
356
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
390 oldf = open(os.path.join(self.wc_path, '.hg', 'hgrc')) |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
391 hgrc = oldf.read() |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
392 oldf.close() |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
393 shutil.rmtree(self.wc_path) |
816
86d124a8768e
Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents:
735
diff
changeset
|
394 test_util.hgclone(u, wc2path, self.wc_path, update=False) |
356
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
395 oldf = open(os.path.join(self.wc_path, '.hg', 'hgrc'), 'w') |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
396 oldf.write(hgrc) |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
397 oldf.close() |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
398 |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
399 # do a commit here |
832
e9af7eba88db
globally: clean up whitespace around operators and commas to conform with PEP8
Yonggang Luo <luoyonggang@gmail.com>
parents:
816
diff
changeset
|
400 self.commitchanges([('foobaz', 'foobaz', 'This file is added on default.',), |
356
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
401 ], |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
402 parent='default', |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
403 message='commit to default') |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
404 from hgsubversion import svncommands |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
405 svncommands.rebuildmeta(u, |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
406 self.repo, |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
407 args=[test_util.fileurl(self.repo_path)]) |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
408 |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
409 |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
410 hg.update(self.repo, self.repo['tip'].node()) |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
411 oldnode = self.repo['tip'].hex() |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
412 self.pushrevisions(expected_extra_back=1) |
62f90781eb10
push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents:
349
diff
changeset
|
413 self.assertNotEqual(oldnode, self.repo['tip'].hex(), 'Revision was not pushed.') |
48
d87b57c719f0
Add a test that verifies push works to svn:// servers.
Augie Fackler <durin42@gmail.com>
parents:
27
diff
changeset
|
414 |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
415 def test_delete_file(self): |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
416 repo = self.repo |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
417 def file_callback(repo, memctx, path): |
1239
f96e2495de39
test_push_command: use compat hack for filectxfn for deleted files
Siddharth Agarwal <sid0@fb.com>
parents:
1236
diff
changeset
|
418 return compathacks.filectxfn_deleted(memctx, path) |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
419 old_files = set(repo['default'].manifest().keys()) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
420 ctx = context.memctx(repo, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
421 (repo['default'].node(), node.nullid), |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
422 'automated test', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
423 ['alpha'], |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
424 file_callback, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
425 'an author', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
426 '2008-10-29 21:26:00 -0500', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
427 {'branch': 'default', }) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
428 new_hash = repo.commitctx(ctx) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
429 hg.update(repo, repo['tip'].node()) |
78
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
65
diff
changeset
|
430 self.pushrevisions() |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
431 tip = self.repo['tip'] |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
432 self.assertEqual(old_files, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
433 set(tip.manifest().keys() + ['alpha'])) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
434 self.assert_('alpha' not in tip.manifest()) |
48
d87b57c719f0
Add a test that verifies push works to svn:// servers.
Augie Fackler <durin42@gmail.com>
parents:
27
diff
changeset
|
435 |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
436 def test_push_executable_file(self): |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
437 self.test_push_to_default(commit=True) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
438 repo = self.repo |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
439 def file_callback(repo, memctx, path): |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
440 if path == 'gamma': |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
441 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
442 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
443 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
444 data='foo', |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
445 islink=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
446 isexec=True, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
447 copied=False) |
531
cf4fe45bf8fd
Change all instantiations of IOError to set both errno and strerror.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
484
diff
changeset
|
448 raise IOError(errno.EINVAL, 'Invalid operation: ' + path) |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
449 ctx = context.memctx(repo, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
450 (repo['tip'].node(), node.nullid), |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
451 'message', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
452 ['gamma', ], |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
453 file_callback, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
454 'author', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
455 '2008-10-29 21:26:00 -0500', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
456 {'branch': 'default', }) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
457 new_hash = repo.commitctx(ctx) |
257
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
242
diff
changeset
|
458 hg.clean(repo, repo['tip'].node()) |
78
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
65
diff
changeset
|
459 self.pushrevisions() |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
460 tip = self.repo['tip'] |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
461 self.assertNotEqual(tip.node(), new_hash) |
257
ffccf0080e54
Move wrappers for hg commands to their own module.
Augie Fackler <durin42@gmail.com>
parents:
242
diff
changeset
|
462 self.assert_('@' in self.repo['tip'].user()) |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
463 self.assertEqual(tip['gamma'].flags(), 'x') |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
464 self.assertEqual(tip['gamma'].data(), 'foo') |
1321
a36e87ae2380
tests: always compare manifest keys in sorted order
Siddharth Agarwal <sid0@fb.com>
parents:
1239
diff
changeset
|
465 self.assertEqual(sorted([x for x in tip.manifest().keys() if 'x' not in |
a36e87ae2380
tests: always compare manifest keys in sorted order
Siddharth Agarwal <sid0@fb.com>
parents:
1239
diff
changeset
|
466 tip[x].flags()]), |
a36e87ae2380
tests: always compare manifest keys in sorted order
Siddharth Agarwal <sid0@fb.com>
parents:
1239
diff
changeset
|
467 ['adding_file', 'alpha', 'beta', ]) |
49
2bc4999a89d3
Add tests for a bunch more cases in pushing to svn.
Augie Fackler <durin42@gmail.com>
parents:
48
diff
changeset
|
468 |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
469 def test_push_symlink_file(self): |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
470 self.test_push_to_default(commit=True) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
471 repo = self.repo |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
472 def file_callback(repo, memctx, path): |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
473 if path == 'gamma': |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
474 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
475 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
476 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
477 data='foo', |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
478 islink=True, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
479 isexec=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
480 copied=False) |
531
cf4fe45bf8fd
Change all instantiations of IOError to set both errno and strerror.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
484
diff
changeset
|
481 raise IOError(errno.EINVAL, 'Invalid operation: ' + path) |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
482 ctx = context.memctx(repo, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
483 (repo['tip'].node(), node.nullid), |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
484 'message', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
485 ['gamma', ], |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
486 file_callback, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
487 'author', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
488 '2008-10-29 21:26:00 -0500', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
489 {'branch': 'default', }) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
490 new_hash = repo.commitctx(ctx) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
491 hg.update(repo, repo['tip'].node()) |
78
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
65
diff
changeset
|
492 self.pushrevisions() |
1229
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
493 # grab a new repo instance (self.repo is an @property functions) |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
494 repo = self.repo |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
495 tip = repo['tip'] |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
496 self.assertNotEqual(tip.node(), new_hash) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
497 self.assertEqual(tip['gamma'].flags(), 'l') |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
498 self.assertEqual(tip['gamma'].data(), 'foo') |
1321
a36e87ae2380
tests: always compare manifest keys in sorted order
Siddharth Agarwal <sid0@fb.com>
parents:
1239
diff
changeset
|
499 self.assertEqual(sorted([x for x in tip.manifest().keys() if 'l' not in |
a36e87ae2380
tests: always compare manifest keys in sorted order
Siddharth Agarwal <sid0@fb.com>
parents:
1239
diff
changeset
|
500 tip[x].flags()]), |
a36e87ae2380
tests: always compare manifest keys in sorted order
Siddharth Agarwal <sid0@fb.com>
parents:
1239
diff
changeset
|
501 ['adding_file', 'alpha', 'beta', ]) |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
502 |
1229
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
503 def file_callback2(repo, memctx, path): |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
504 if path == 'gamma': |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
505 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
506 memctx=memctx, |
1229
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
507 path=path, |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
508 data='a' * 129, |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
509 islink=True, |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
510 isexec=False, |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
511 copied=False) |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
512 raise IOError(errno.EINVAL, 'Invalid operation: ' + path) |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
513 |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
514 ctx = context.memctx(repo, |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
515 (repo['tip'].node(), node.nullid), |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
516 'message', |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
517 ['gamma', ], |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
518 file_callback2, |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
519 'author', |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
520 '2014-08-08 20:11:41 -0700', |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
521 {'branch': 'default', }) |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
522 repo.commitctx(ctx) |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
523 hg.update(repo, repo['tip'].node()) |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
524 self.pushrevisions() |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
525 # grab a new repo instance (self.repo is an @property functions) |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
526 repo = self.repo |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
527 tip = repo['tip'] |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
528 self.assertEqual(tip['gamma'].flags(), 'l') |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
529 self.assertEqual(tip['gamma'].data(), 'a'*129) |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
530 |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
531 def file_callback3(repo, memctx, path): |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
532 if path == 'gamma': |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
533 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
534 memctx=memctx, |
1229
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
535 path=path, |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
536 data='a' * 64 + 'b' * 65, |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
537 islink=True, |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
538 isexec=False, |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
539 copied=False) |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
540 raise IOError(errno.EINVAL, 'Invalid operation: ' + path) |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
541 |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
542 ctx = context.memctx(repo, |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
543 (repo['tip'].node(), node.nullid), |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
544 'message', |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
545 ['gamma', ], |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
546 file_callback3, |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
547 'author', |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
548 '2014-08-08 20:16:25 -0700', |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
549 {'branch': 'default', }) |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
550 repo.commitctx(ctx) |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
551 hg.update(repo, repo['tip'].node()) |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
552 self.pushrevisions() |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
553 repo = self.repo |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
554 tip = repo['tip'] |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
555 self.assertEqual(tip['gamma'].flags(), 'l') |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
556 self.assertEqual(tip['gamma'].data(), 'a' * 64 + 'b' * 65) |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
557 |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
558 |
60
41dc00c7aef1
Fixed a problem where if you edited an existing symlink by replacing with another symlink, things would get corrupt.
Augie Fackler <durin42@gmail.com>
parents:
50
diff
changeset
|
559 def test_push_existing_file_newly_symlink(self): |
41dc00c7aef1
Fixed a problem where if you edited an existing symlink by replacing with another symlink, things would get corrupt.
Augie Fackler <durin42@gmail.com>
parents:
50
diff
changeset
|
560 self.test_push_existing_file_newly_execute(execute=False, |
41dc00c7aef1
Fixed a problem where if you edited an existing symlink by replacing with another symlink, things would get corrupt.
Augie Fackler <durin42@gmail.com>
parents:
50
diff
changeset
|
561 link=True, |
41dc00c7aef1
Fixed a problem where if you edited an existing symlink by replacing with another symlink, things would get corrupt.
Augie Fackler <durin42@gmail.com>
parents:
50
diff
changeset
|
562 expected_flags='l') |
41dc00c7aef1
Fixed a problem where if you edited an existing symlink by replacing with another symlink, things would get corrupt.
Augie Fackler <durin42@gmail.com>
parents:
50
diff
changeset
|
563 |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
564 def test_push_existing_file_newly_execute(self, execute=True, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
565 link=False, expected_flags='x'): |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
566 self.test_push_to_default() |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
567 repo = self.repo |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
568 def file_callback(repo, memctx, path): |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
569 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
570 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
571 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
572 data='foo', |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
573 islink=link, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
574 isexec=execute, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
575 copied=False) |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
576 ctx = context.memctx(repo, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
577 (repo['default'].node(), node.nullid), |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
578 'message', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
579 ['alpha', ], |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
580 file_callback, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
581 'author', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
582 '2008-1-1 00:00:00 -0500', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
583 {'branch': 'default', }) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
584 new_hash = repo.commitctx(ctx) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
585 hg.update(repo, repo['tip'].node()) |
78
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
65
diff
changeset
|
586 self.pushrevisions() |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
587 tip = self.repo['tip'] |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
588 self.assertNotEqual(tip.node(), new_hash) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
589 self.assertEqual(tip['alpha'].data(), 'foo') |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
590 self.assertEqual(tip.parents()[0]['alpha'].flags(), '') |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
591 self.assertEqual(tip['alpha'].flags(), expected_flags) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
592 # while we're here, double check pushing an already-executable file |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
593 # works |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
594 repo = self.repo |
101
a3b717e4abf5
Cleanups based on pyflakes output.
Augie Fackler <durin42@gmail.com>
parents:
83
diff
changeset
|
595 def file_callback2(repo, memctx, path): |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
596 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
597 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
598 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
599 data='bar', |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
600 islink=link, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
601 isexec=execute, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
602 copied=False) |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
603 ctx = context.memctx(repo, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
604 (repo['default'].node(), node.nullid), |
1206
aa8b72bd1320
test_push_command: improve commit messages inside test for diagnostics
Augie Fackler <raf@durin42.com>
parents:
1202
diff
changeset
|
605 'mutate already-special file alpha', |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
606 ['alpha', ], |
101
a3b717e4abf5
Cleanups based on pyflakes output.
Augie Fackler <durin42@gmail.com>
parents:
83
diff
changeset
|
607 file_callback2, |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
608 'author', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
609 '2008-1-1 00:00:00 -0500', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
610 {'branch': 'default', }) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
611 new_hash = repo.commitctx(ctx) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
612 hg.update(repo, repo['tip'].node()) |
78
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
65
diff
changeset
|
613 self.pushrevisions() |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
614 tip = self.repo['tip'] |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
615 self.assertNotEqual(tip.node(), new_hash) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
616 self.assertEqual(tip['alpha'].data(), 'bar') |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
617 self.assertEqual(tip.parents()[0]['alpha'].flags(), expected_flags) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
618 self.assertEqual(tip['alpha'].flags(), expected_flags) |
62
cc5ebdb1e8d4
push_cmd: Further simplified some logic thanks to an improved test.
Augie Fackler <durin42@gmail.com>
parents:
60
diff
changeset
|
619 # now test removing the property entirely |
cc5ebdb1e8d4
push_cmd: Further simplified some logic thanks to an improved test.
Augie Fackler <durin42@gmail.com>
parents:
60
diff
changeset
|
620 repo = self.repo |
101
a3b717e4abf5
Cleanups based on pyflakes output.
Augie Fackler <durin42@gmail.com>
parents:
83
diff
changeset
|
621 def file_callback3(repo, memctx, path): |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
622 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
623 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
624 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
625 data='bar', |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
626 islink=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
627 isexec=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
628 copied=False) |
62
cc5ebdb1e8d4
push_cmd: Further simplified some logic thanks to an improved test.
Augie Fackler <durin42@gmail.com>
parents:
60
diff
changeset
|
629 ctx = context.memctx(repo, |
cc5ebdb1e8d4
push_cmd: Further simplified some logic thanks to an improved test.
Augie Fackler <durin42@gmail.com>
parents:
60
diff
changeset
|
630 (repo['default'].node(), node.nullid), |
1206
aa8b72bd1320
test_push_command: improve commit messages inside test for diagnostics
Augie Fackler <raf@durin42.com>
parents:
1202
diff
changeset
|
631 'convert alpha back to regular file', |
62
cc5ebdb1e8d4
push_cmd: Further simplified some logic thanks to an improved test.
Augie Fackler <durin42@gmail.com>
parents:
60
diff
changeset
|
632 ['alpha', ], |
101
a3b717e4abf5
Cleanups based on pyflakes output.
Augie Fackler <durin42@gmail.com>
parents:
83
diff
changeset
|
633 file_callback3, |
62
cc5ebdb1e8d4
push_cmd: Further simplified some logic thanks to an improved test.
Augie Fackler <durin42@gmail.com>
parents:
60
diff
changeset
|
634 'author', |
cc5ebdb1e8d4
push_cmd: Further simplified some logic thanks to an improved test.
Augie Fackler <durin42@gmail.com>
parents:
60
diff
changeset
|
635 '2008-01-01 00:00:00 -0500', |
cc5ebdb1e8d4
push_cmd: Further simplified some logic thanks to an improved test.
Augie Fackler <durin42@gmail.com>
parents:
60
diff
changeset
|
636 {'branch': 'default', }) |
cc5ebdb1e8d4
push_cmd: Further simplified some logic thanks to an improved test.
Augie Fackler <durin42@gmail.com>
parents:
60
diff
changeset
|
637 new_hash = repo.commitctx(ctx) |
cc5ebdb1e8d4
push_cmd: Further simplified some logic thanks to an improved test.
Augie Fackler <durin42@gmail.com>
parents:
60
diff
changeset
|
638 hg.update(repo, repo['tip'].node()) |
78
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
65
diff
changeset
|
639 self.pushrevisions() |
62
cc5ebdb1e8d4
push_cmd: Further simplified some logic thanks to an improved test.
Augie Fackler <durin42@gmail.com>
parents:
60
diff
changeset
|
640 tip = self.repo['tip'] |
cc5ebdb1e8d4
push_cmd: Further simplified some logic thanks to an improved test.
Augie Fackler <durin42@gmail.com>
parents:
60
diff
changeset
|
641 self.assertNotEqual(tip.node(), new_hash) |
cc5ebdb1e8d4
push_cmd: Further simplified some logic thanks to an improved test.
Augie Fackler <durin42@gmail.com>
parents:
60
diff
changeset
|
642 self.assertEqual(tip['alpha'].data(), 'bar') |
cc5ebdb1e8d4
push_cmd: Further simplified some logic thanks to an improved test.
Augie Fackler <durin42@gmail.com>
parents:
60
diff
changeset
|
643 self.assertEqual(tip.parents()[0]['alpha'].flags(), expected_flags) |
cc5ebdb1e8d4
push_cmd: Further simplified some logic thanks to an improved test.
Augie Fackler <durin42@gmail.com>
parents:
60
diff
changeset
|
644 self.assertEqual(tip['alpha'].flags(), '') |
49
2bc4999a89d3
Add tests for a bunch more cases in pushing to svn.
Augie Fackler <durin42@gmail.com>
parents:
48
diff
changeset
|
645 |
277
3848a7f9b983
push: Add a test that demonstrates base-text detection works
Augie Fackler <durin42@gmail.com>
parents:
257
diff
changeset
|
646 def test_push_outdated_base_text(self): |
3848a7f9b983
push: Add a test that demonstrates base-text detection works
Augie Fackler <durin42@gmail.com>
parents:
257
diff
changeset
|
647 self.test_push_two_revs() |
832
e9af7eba88db
globally: clean up whitespace around operators and commas to conform with PEP8
Yonggang Luo <luoyonggang@gmail.com>
parents:
816
diff
changeset
|
648 changes = [('adding_file', 'adding_file', 'different_content',), |
277
3848a7f9b983
push: Add a test that demonstrates base-text detection works
Augie Fackler <durin42@gmail.com>
parents:
257
diff
changeset
|
649 ] |
690
4b55fb6d6847
tests: remove constant rev no from test script
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
671
diff
changeset
|
650 par = self.repo['tip'].rev() |
4b55fb6d6847
tests: remove constant rev no from test script
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
671
diff
changeset
|
651 self.commitchanges(changes, parent=par) |
277
3848a7f9b983
push: Add a test that demonstrates base-text detection works
Augie Fackler <durin42@gmail.com>
parents:
257
diff
changeset
|
652 self.pushrevisions() |
3848a7f9b983
push: Add a test that demonstrates base-text detection works
Augie Fackler <durin42@gmail.com>
parents:
257
diff
changeset
|
653 changes = [('adding_file', 'adding_file', |
832
e9af7eba88db
globally: clean up whitespace around operators and commas to conform with PEP8
Yonggang Luo <luoyonggang@gmail.com>
parents:
816
diff
changeset
|
654 'even_more different_content',), |
277
3848a7f9b983
push: Add a test that demonstrates base-text detection works
Augie Fackler <durin42@gmail.com>
parents:
257
diff
changeset
|
655 ] |
690
4b55fb6d6847
tests: remove constant rev no from test script
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
671
diff
changeset
|
656 self.commitchanges(changes, parent=par) |
277
3848a7f9b983
push: Add a test that demonstrates base-text detection works
Augie Fackler <durin42@gmail.com>
parents:
257
diff
changeset
|
657 try: |
3848a7f9b983
push: Add a test that demonstrates base-text detection works
Augie Fackler <durin42@gmail.com>
parents:
257
diff
changeset
|
658 self.pushrevisions() |
3848a7f9b983
push: Add a test that demonstrates base-text detection works
Augie Fackler <durin42@gmail.com>
parents:
257
diff
changeset
|
659 assert False, 'This should have aborted!' |
3848a7f9b983
push: Add a test that demonstrates base-text detection works
Augie Fackler <durin42@gmail.com>
parents:
257
diff
changeset
|
660 except hgutil.Abort, e: |
3848a7f9b983
push: Add a test that demonstrates base-text detection works
Augie Fackler <durin42@gmail.com>
parents:
257
diff
changeset
|
661 self.assertEqual(e.args[0], |
556
8522f8ef799e
pushmod: make outdated parent error message more helpful
Patrick Mezard <pmezard@gmail.com>
parents:
531
diff
changeset
|
662 'Outgoing changesets parent is not at subversion ' |
8522f8ef799e
pushmod: make outdated parent error message more helpful
Patrick Mezard <pmezard@gmail.com>
parents:
531
diff
changeset
|
663 'HEAD\n' |
8522f8ef799e
pushmod: make outdated parent error message more helpful
Patrick Mezard <pmezard@gmail.com>
parents:
531
diff
changeset
|
664 '(pull again and rebase on a newer revision)') |
907
173065f9b715
push test: peek inside svn's pending transaction list on abort
Augie Fackler <raf@durin42.com>
parents:
872
diff
changeset
|
665 # verify that any pending transactions on the server got cleaned up |
173065f9b715
push test: peek inside svn's pending transaction list on abort
Augie Fackler <raf@durin42.com>
parents:
872
diff
changeset
|
666 self.assertEqual([], os.listdir( |
173065f9b715
push test: peek inside svn's pending transaction list on abort
Augie Fackler <raf@durin42.com>
parents:
872
diff
changeset
|
667 os.path.join(self.tmpdir, 'testrepo-1', 'db', 'transactions'))) |
16
48a44546c12f
Add a basic system for running the hgsubversion tests (although not the svnwrap ones) without requiring Nose. Nose is still the recommended way to run the tests.
Augie Fackler <durin42@gmail.com>
parents:
diff
changeset
|
668 |
928
d99ed94f4760
wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents:
907
diff
changeset
|
669 def test_push_encoding(self): |
d99ed94f4760
wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents:
907
diff
changeset
|
670 self.test_push_two_revs() |
d99ed94f4760
wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents:
907
diff
changeset
|
671 # Writing then rebasing UTF-8 filenames in a cp1252 windows console |
d99ed94f4760
wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents:
907
diff
changeset
|
672 # used to fail because hg internal encoding was being changed during |
d99ed94f4760
wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents:
907
diff
changeset
|
673 # the interactions with subversion, *and during the rebase*, which |
d99ed94f4760
wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents:
907
diff
changeset
|
674 # confused the dirstate and made it believe the file was deleted. |
d99ed94f4760
wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents:
907
diff
changeset
|
675 fn = 'pi\xc3\xa8ce/test' |
d99ed94f4760
wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents:
907
diff
changeset
|
676 changes = [(fn, fn, 'a')] |
d99ed94f4760
wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents:
907
diff
changeset
|
677 par = self.repo['tip'].rev() |
d99ed94f4760
wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents:
907
diff
changeset
|
678 self.commitchanges(changes, parent=par) |
d99ed94f4760
wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents:
907
diff
changeset
|
679 self.pushrevisions() |
d99ed94f4760
wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents:
907
diff
changeset
|
680 |
929
8417be758047
pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
681 def test_push_emptying_changeset(self): |
8417be758047
pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
682 r = self.repo['tip'] |
8417be758047
pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
683 changes = [ |
8417be758047
pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
684 ('alpha', None, None), |
8417be758047
pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
685 ('beta', None, None), |
8417be758047
pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
686 ] |
8417be758047
pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
687 parent = self.repo['tip'].rev() |
8417be758047
pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
688 self.commitchanges(changes, parent=parent) |
8417be758047
pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
689 self.pushrevisions() |
1321
a36e87ae2380
tests: always compare manifest keys in sorted order
Siddharth Agarwal <sid0@fb.com>
parents:
1239
diff
changeset
|
690 self.assertEqual(len(self.repo['tip'].manifest()), 0) |
929
8417be758047
pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
691 |
8417be758047
pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
692 # Try to re-add a file after emptying the branch |
8417be758047
pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
693 changes = [ |
8417be758047
pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
694 ('alpha', 'alpha', 'alpha'), |
8417be758047
pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
695 ] |
8417be758047
pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
696 self.commitchanges(changes, parent=self.repo['tip'].rev()) |
8417be758047
pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
697 self.pushrevisions() |
8417be758047
pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
698 self.assertEqual(['alpha'], list(self.repo['tip'].manifest())) |
8417be758047
pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
699 |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
700 def test_push_without_pushing_children(self): |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
701 ''' |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
702 Verify that a push of a nontip node, keeps the tip child |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
703 on top of the pushed commit. |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
704 ''' |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
705 |
1048
903c9c9dfe6a
tests: count revisions explicitly
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1044
diff
changeset
|
706 oldlen = test_util.repolen(self.repo) |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
707 oldtiphash = self.repo['default'].node() |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
708 |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
709 changes = [('gamma', 'gamma', 'sometext')] |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
710 newhash1 = self.commitchanges(changes) |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
711 |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
712 changes = [('delta', 'delta', 'sometext')] |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
713 newhash2 = self.commitchanges(changes) |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
714 |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
715 # push only the first commit |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
716 repo = self.repo |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
717 hg.update(repo, newhash1) |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
718 commands.push(repo.ui, repo) |
1048
903c9c9dfe6a
tests: count revisions explicitly
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1044
diff
changeset
|
719 self.assertEqual(test_util.repolen(self.repo), oldlen + 2) |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
720 |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
721 # verify that the first commit is pushed, and the second is not |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
722 commit2 = self.repo['tip'] |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
723 self.assertEqual(commit2.files(), ['delta', ]) |
1040
ada2400241c4
fixes for running under Mercurial 2.0
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1036
diff
changeset
|
724 self.assertEqual(util.getsvnrev(commit2), None) |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
725 commit1 = commit2.parents()[0] |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
726 self.assertEqual(commit1.files(), ['gamma', ]) |
1040
ada2400241c4
fixes for running under Mercurial 2.0
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1036
diff
changeset
|
727 prefix = 'svn:' + self.repo.svnmeta().uuid |
ada2400241c4
fixes for running under Mercurial 2.0
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1036
diff
changeset
|
728 self.assertEqual(util.getsvnrev(commit1), |
ada2400241c4
fixes for running under Mercurial 2.0
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1036
diff
changeset
|
729 prefix + '/branches/the_branch@5') |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
730 |
991
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
731 def test_push_two_that_modify_same_file(self): |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
732 ''' |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
733 Push performs a rebase if two commits touch the same file. |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
734 This test verifies that code path works. |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
735 ''' |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
736 |
1048
903c9c9dfe6a
tests: count revisions explicitly
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1044
diff
changeset
|
737 oldlen = test_util.repolen(self.repo) |
991
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
738 oldtiphash = self.repo['default'].node() |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
739 |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
740 changes = [('gamma', 'gamma', 'sometext')] |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
741 newhash = self.commitchanges(changes) |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
742 changes = [('gamma', 'gamma', 'sometext\n moretext'), |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
743 ('delta', 'delta', 'sometext\n moretext'), |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
744 ] |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
745 newhash = self.commitchanges(changes) |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
746 |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
747 repo = self.repo |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
748 hg.update(repo, newhash) |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
749 commands.push(repo.ui, repo) |
1048
903c9c9dfe6a
tests: count revisions explicitly
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1044
diff
changeset
|
750 self.assertEqual(test_util.repolen(self.repo), oldlen + 2) |
991
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
751 |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
752 # verify that both commits are pushed |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
753 commit1 = self.repo['tip'] |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
754 self.assertEqual(commit1.files(), ['delta', 'gamma']) |
1040
ada2400241c4
fixes for running under Mercurial 2.0
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1036
diff
changeset
|
755 |
ada2400241c4
fixes for running under Mercurial 2.0
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1036
diff
changeset
|
756 prefix = 'svn:' + self.repo.svnmeta().uuid |
ada2400241c4
fixes for running under Mercurial 2.0
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1036
diff
changeset
|
757 self.assertEqual(util.getsvnrev(commit1), |
ada2400241c4
fixes for running under Mercurial 2.0
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1036
diff
changeset
|
758 prefix + '/branches/the_branch@6') |
991
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
759 commit2 = commit1.parents()[0] |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
760 self.assertEqual(commit2.files(), ['gamma']) |
1040
ada2400241c4
fixes for running under Mercurial 2.0
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1036
diff
changeset
|
761 self.assertEqual(util.getsvnrev(commit2), |
ada2400241c4
fixes for running under Mercurial 2.0
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1036
diff
changeset
|
762 prefix + '/branches/the_branch@5') |
991
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
763 |
992
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
764 def test_push_in_subdir(self, commit=True): |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
765 repo = self.repo |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
766 old_tip = repo['tip'].node() |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
767 def file_callback(repo, memctx, path): |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
768 if path == 'adding_file' or path == 'newdir/new_file': |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
769 testData = 'fooFirstFile' |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
770 if path == 'newdir/new_file': |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
771 testData = 'fooNewFile' |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
772 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
773 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
774 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
775 data=testData, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
776 islink=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
777 isexec=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
778 copied=False) |
992
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
779 raise IOError(errno.EINVAL, 'Invalid operation: ' + path) |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
780 ctx = context.memctx(repo, |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
781 (repo['default'].node(), node.nullid), |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
782 'automated test', |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
783 ['adding_file'], |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
784 file_callback, |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
785 'an_author', |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
786 '2012-12-13 20:59:48 -0500', |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
787 {'branch': 'default', }) |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
788 new_hash = repo.commitctx(ctx) |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
789 p = os.path.join(repo.root, "newdir") |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
790 os.mkdir(p) |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
791 ctx = context.memctx(repo, |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
792 (repo['default'].node(), node.nullid), |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
793 'automated test', |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
794 ['newdir/new_file'], |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
795 file_callback, |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
796 'an_author', |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
797 '2012-12-13 20:59:48 -0500', |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
798 {'branch': 'default', }) |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
799 os.chdir(p) |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
800 new_hash = repo.commitctx(ctx) |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
801 hg.update(repo, repo['tip'].node()) |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
802 self.pushrevisions() |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
803 tip = self.repo['tip'] |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
804 self.assertNotEqual(tip.node(), old_tip) |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
805 self.assertEqual(p, os.getcwd()) |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
806 self.assertEqual(tip['adding_file'].data(), 'fooFirstFile') |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
807 self.assertEqual(tip['newdir/new_file'].data(), 'fooNewFile') |
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
808 self.assertEqual(tip.branch(), 'default') |
1236
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
809 |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
810 def test_update_after_push(self): |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
811 repo = self.repo |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
812 ui = repo.ui |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
813 |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
814 ui.setconfig('hooks', |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
815 'debug-hgsubversion-between-push-and-pull-for-tests', |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
816 lambda ui, repo, hooktype: self.add_svn_rev( |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
817 self.repo_path, |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
818 {'trunk/racey_file': 'race conditions suck'})) |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
819 |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
820 self.test_push_to_branch(push=False) |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
821 commands.push(ui, repo) |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
822 newctx = self.repo['.'] |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
823 self.assertNotEqual(newctx.node(), self.repo['tip'].node()) |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
824 self.assertEqual(newctx['adding_file'].data(), 'foo') |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
825 self.assertEqual(newctx.branch(), 'the_branch') |