Mercurial > hgsubversion
annotate tests/test_push_command.py @ 1569:4afe8d7e4602
test_util: hg.clone now wants revs not rev
author | Augie Fackler <raf@durin42.com> |
---|---|
date | Sat, 26 May 2018 17:35:27 -0400 |
parents | cff81f35b31e |
children | d55c9d0ba350 |
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 |
1555
cff81f35b31e
cleanup: reference Abort from mercurial.error instead of mercurial.util
Augie Fackler <raf@durin42.com>
parents:
1549
diff
changeset
|
15 from mercurial import error as hgerror |
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
|
16 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
|
17 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
|
18 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
|
19 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
|
20 |
1040
ada2400241c4
fixes for running under Mercurial 2.0
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1036
diff
changeset
|
21 from hgsubversion import util |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
22 from hgsubversion import compathacks |
1040
ada2400241c4
fixes for running under Mercurial 2.0
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1036
diff
changeset
|
23 |
48
d87b57c719f0
Add a test that verifies push works to svn:// servers.
Augie Fackler <durin42@gmail.com>
parents:
27
diff
changeset
|
24 import time |
d87b57c719f0
Add a test that verifies push works to svn:// servers.
Augie Fackler <durin42@gmail.com>
parents:
27
diff
changeset
|
25 |
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
|
26 |
82
71de43e9f614
Extract PushTest common code into test_util.TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
80
diff
changeset
|
27 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
|
28 obsolete_mode_tests = True |
2d7398fffd0d
push: obsolete rather than rebase & strip when enabled
Dan Villiom Podlaski Christiansen <dan@cabo.dk>
parents:
1048
diff
changeset
|
29 |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
30 def setUp(self): |
82
71de43e9f614
Extract PushTest common code into test_util.TestBase
Patrick Mezard <pmezard@gmail.com>
parents:
80
diff
changeset
|
31 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
|
32 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
|
33 |
220
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
34 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
|
35 repo = self.repo |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
36 def file_callback(repo, memctx, path): |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
37 if path == 'adding_file': |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
38 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
39 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
40 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
41 data='foo', |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
42 islink=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
43 isexec=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
44 copied=False) |
220
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
45 raise IOError() |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
46 ctx = context.memctx(repo, |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
47 (repo['default'].node(), node.nullid), |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
48 'automated test', |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
49 [], |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
50 file_callback, |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
51 'an_author', |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
52 '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
|
53 {'branch': 'default', }) |
220
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
54 new_hash = repo.commitctx(ctx) |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
55 hg.update(repo, repo['tip'].node()) |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
56 old_tip = repo['tip'].node() |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
57 self.pushrevisions() |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
58 tip = self.repo['tip'] |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
59 self.assertEqual(tip.node(), old_tip) |
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
60 |
1036
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
61 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
|
62 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
|
63 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
|
64 if path == 'adding_file': |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
65 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
66 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
67 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
68 data='foo', |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
69 islink=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
70 isexec=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
71 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
|
72 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
|
73 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
|
74 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
|
75 (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
|
76 '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
|
77 ['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
|
78 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
|
79 '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
|
80 '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
|
81 {'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
|
82 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
|
83 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
|
84 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
|
85 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
|
86 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
|
87 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
|
88 |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
89 # 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
|
90 # 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
|
91 # 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
|
92 # rebase. |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
93 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
|
94 (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
|
95 '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
|
96 ['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
|
97 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
|
98 '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
|
99 '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
|
100 {'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
|
101 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
|
102 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
|
103 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
|
104 try: |
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
105 self.pushrevisions() |
1555
cff81f35b31e
cleanup: reference Abort from mercurial.error instead of mercurial.util
Augie Fackler <raf@durin42.com>
parents:
1549
diff
changeset
|
106 except hgerror.Abort, e: |
1036
e775ffbcb359
push: also suggest user rebase if we get SVN_ERR_FS_ALREADY_EXISTS
Augie Fackler <raf@durin42.com>
parents:
992
diff
changeset
|
107 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
|
108 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
|
109 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
|
110 |
461
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
111 def test_cant_push_with_changes(self): |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
112 repo = self.repo |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
113 def file_callback(repo, memctx, path): |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
114 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
115 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
116 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
117 data='foo', |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
118 islink=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
119 isexec=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
120 copied=False) |
461
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
121 ctx = context.memctx(repo, |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
122 (repo['default'].node(), node.nullid), |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
123 'automated test', |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
124 ['adding_file'], |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
125 file_callback, |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
126 'an_author', |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
127 '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
|
128 {'branch': 'default', }) |
461
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
129 new_hash = repo.commitctx(ctx) |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
130 hg.update(repo, repo['tip'].node()) |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
131 # Touch an existing file |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
132 repo.wwrite('beta', 'something else', '') |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
133 try: |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
134 self.pushrevisions() |
1555
cff81f35b31e
cleanup: reference Abort from mercurial.error instead of mercurial.util
Augie Fackler <raf@durin42.com>
parents:
1549
diff
changeset
|
135 except hgerror.Abort: |
461
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
136 pass |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
137 tip = self.repo['tip'] |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
138 self.assertEqual(new_hash, tip.node()) |
db3a53a2cd76
wrappers: make push aborts if uncommitted changes
Patrick Mezard <pmezard@gmail.com>
parents:
356
diff
changeset
|
139 |
671
e910e3ebd23b
svnmeta: strip all repeated slashes from subdir
Peter Arrenbrecht <peter.arrenbre...@gmail.com>
parents:
643
diff
changeset
|
140 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
|
141 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
|
142 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
|
143 '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
|
144 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
|
145 self.host = socket.gethostname() |
1501
6e3f48d8002f
tests: fix ipv6 support in test_push_command.py
Arun Kulshreshtha <kulshrax@fb.com>
parents:
1451
diff
changeset
|
146 |
6e3f48d8002f
tests: fix ipv6 support in test_push_command.py
Arun Kulshreshtha <kulshrax@fb.com>
parents:
1451
diff
changeset
|
147 # 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
|
148 # 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
|
149 # 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
|
150 # 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
|
151 # 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
|
152 try: |
1122a90e329a
test_push_command: deal with gethostname() sometimes returning bad hostnames
Augie Fackler <raf@durin42.com>
parents:
1508
diff
changeset
|
153 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
|
154 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
|
155 # 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
|
156 # 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
|
157 # 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
|
158 self.host = 'localhost' |
1122a90e329a
test_push_command: deal with gethostname() sometimes returning bad hostnames
Augie Fackler <raf@durin42.com>
parents:
1508
diff
changeset
|
159 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
|
160 # 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
|
161 # 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
|
162 # 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
|
163 # 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
|
164 # 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
|
165 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
|
166 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
|
167 |
6e3f48d8002f
tests: fix ipv6 support in test_push_command.py
Arun Kulshreshtha <kulshrax@fb.com>
parents:
1451
diff
changeset
|
168 # 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
|
169 # 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
|
170 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
|
171 |
5441a9d1fd50
test_push_command: avoid letting interface name in IPv6 address
Augie Fackler <raf@durin42.com>
parents:
1507
diff
changeset
|
172 # 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
|
173 # a URL |
5441a9d1fd50
test_push_command: avoid letting interface name in IPv6 address
Augie Fackler <raf@durin42.com>
parents:
1507
diff
changeset
|
174 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
|
175 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
|
176 |
1501
6e3f48d8002f
tests: fix ipv6 support in test_push_command.py
Arun Kulshreshtha <kulshrax@fb.com>
parents:
1451
diff
changeset
|
177 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
|
178 |
336
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
179 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
|
180 '--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
|
181 '--listen-host=%s' % self.host, |
866
20e73b5ab6f7
test_util: merge load_svndump_fixture() into TestBase
Patrick Mezard <patrick@mezard.eu>
parents:
865
diff
changeset
|
182 '--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
|
183 |
340
88ba55ad58c0
Minor tweaks to wrapper documentation.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
337
diff
changeset
|
184 svnserve = subprocess.Popen(args, stdout=subprocess.PIPE, |
88ba55ad58c0
Minor tweaks to wrapper documentation.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
337
diff
changeset
|
185 stderr=subprocess.STDOUT) |
88ba55ad58c0
Minor tweaks to wrapper documentation.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
337
diff
changeset
|
186 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
|
187 try: |
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
188 time.sleep(2) |
337
46e69be8e2c8
Reorganize to have a more conventional module structure.
Augie Fackler <durin42@gmail.com>
parents:
336
diff
changeset
|
189 import shutil |
46e69be8e2c8
Reorganize to have a more conventional module structure.
Augie Fackler <durin42@gmail.com>
parents:
336
diff
changeset
|
190 shutil.rmtree(self.wc_path) |
671
e910e3ebd23b
svnmeta: strip all repeated slashes from subdir
Peter Arrenbrecht <peter.arrenbre...@gmail.com>
parents:
643
diff
changeset
|
191 commands.clone(self.ui(), |
1501
6e3f48d8002f
tests: fix ipv6 support in test_push_command.py
Arun Kulshreshtha <kulshrax@fb.com>
parents:
1451
diff
changeset
|
192 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
|
193 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
|
194 |
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
195 repo = self.repo |
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
196 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
|
197 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
|
198 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
|
199 if path == 'adding_file': |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
200 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
201 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
202 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
203 data='foo', |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
204 islink=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
205 isexec=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
206 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
|
207 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
|
208 ctx = context.memctx(repo, |
348
af1508b7ad54
test_push_command: improve readability a bit.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
340
diff
changeset
|
209 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
|
210 text='automated test', |
af1508b7ad54
test_push_command: improve readability a bit.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
340
diff
changeset
|
211 files=['adding_file'], |
af1508b7ad54
test_push_command: improve readability a bit.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
340
diff
changeset
|
212 filectxfn=file_callback, |
af1508b7ad54
test_push_command: improve readability a bit.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
340
diff
changeset
|
213 user='an_author', |
af1508b7ad54
test_push_command: improve readability a bit.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
340
diff
changeset
|
214 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
|
215 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
|
216 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
|
217 if not commit: |
c0b943cef0c3
Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents:
331
diff
changeset
|
218 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
|
219 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
|
220 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
|
221 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
|
222 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
|
223 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
|
224 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
|
225 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
|
226 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
|
227 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
|
228 # unintended behaviour: |
5d0d9424913f
test_push_command: this test causes an author of None.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
348
diff
changeset
|
229 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
|
230 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
|
231 finally: |
854
50a09999dce3
tests: push_command: use svnserve.kill() in Python >=2.6
Arne Babenhauserheide <arne.babenhauserheide@fzk.de>
parents:
834
diff
changeset
|
232 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
|
233 svnserve.kill() |
907
173065f9b715
push test: peek inside svn's pending transaction list on abort
Augie Fackler <raf@durin42.com>
parents:
872
diff
changeset
|
234 else: |
854
50a09999dce3
tests: push_command: use svnserve.kill() in Python >=2.6
Arne Babenhauserheide <arne.babenhauserheide@fzk.de>
parents:
834
diff
changeset
|
235 test_util.kill_process(svnserve) |
220
06eb60f9a026
push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents:
150
diff
changeset
|
236 |
671
e910e3ebd23b
svnmeta: strip all repeated slashes from subdir
Peter Arrenbrecht <peter.arrenbre...@gmail.com>
parents:
643
diff
changeset
|
237 def test_push_over_svnserve(self): |
e910e3ebd23b
svnmeta: strip all repeated slashes from subdir
Peter Arrenbrecht <peter.arrenbre...@gmail.com>
parents:
643
diff
changeset
|
238 self.internal_push_over_svnserve() |
e910e3ebd23b
svnmeta: strip all repeated slashes from subdir
Peter Arrenbrecht <peter.arrenbre...@gmail.com>
parents:
643
diff
changeset
|
239 |
e910e3ebd23b
svnmeta: strip all repeated slashes from subdir
Peter Arrenbrecht <peter.arrenbre...@gmail.com>
parents:
643
diff
changeset
|
240 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
|
241 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
|
242 |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
243 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
|
244 repo = self.repo |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
245 old_tip = repo['tip'].node() |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
246 expected_parent = repo['default'].node() |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
247 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
|
248 if path == 'adding_file': |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
249 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
250 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
251 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
252 data='foo', |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
253 islink=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
254 isexec=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
255 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
|
256 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
|
257 ctx = context.memctx(repo, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
258 (repo['default'].node(), node.nullid), |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
259 'automated test', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
260 ['adding_file'], |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
261 file_callback, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
262 'an_author', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
263 '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
|
264 {'branch': 'default', }) |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
265 new_hash = repo.commitctx(ctx) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
266 if not commit: |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
267 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
|
268 hg.update(repo, repo['tip'].node()) |
78
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
65
diff
changeset
|
269 self.pushrevisions() |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
270 tip = self.repo['tip'] |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
271 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
|
272 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
|
273 node.hex(expected_parent)) |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
274 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
|
275 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
|
276 |
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
|
277 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
|
278 def filectxfn(repo, memctx, path): |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
279 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
280 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
281 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
282 data=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
283 islink=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
284 isexec=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
285 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
|
286 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
|
287 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
|
288 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
|
289 (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
|
290 '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
|
291 ['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
|
292 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
|
293 '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
|
294 '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
|
295 {'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
|
296 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
|
297 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
|
298 (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
|
299 '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
|
300 ['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
|
301 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
|
302 '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
|
303 '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
|
304 {'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
|
305 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
|
306 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
|
307 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
|
308 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
|
309 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
|
310 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
|
311 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
|
312 ['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
|
313 |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
314 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
|
315 # 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
|
316 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
|
317 repo = self.repo |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
318 old_tip = repo['tip'].node() |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
319 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
|
320 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
|
321 if path == 'adding_file2': |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
322 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
323 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
324 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
325 data='foo2', |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
326 islink=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
327 isexec=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
328 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
|
329 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
|
330 ctx = context.memctx(repo, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
331 (repo['default'].node(), node.nullid), |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
332 'automated test', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
333 ['adding_file2'], |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
334 file_callback, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
335 'an_author', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
336 '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
|
337 {'branch': 'default', }) |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
338 new_hash = repo.commitctx(ctx) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
339 hg.update(repo, repo['tip'].node()) |
78
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
65
diff
changeset
|
340 self.pushrevisions() |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
341 tip = self.repo['tip'] |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
342 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
|
343 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
|
344 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
|
345 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
|
346 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
|
347 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
|
348 try: |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
349 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
|
350 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
|
351 except revlog.LookupError, e: |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
352 pass |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
353 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
|
354 |
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
|
355 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
|
356 repo = self.repo |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
357 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
|
358 if path == 'adding_file': |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
359 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
360 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
361 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
362 data='foo', |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
363 islink=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
364 isexec=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
365 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
|
366 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
|
367 ctx = context.memctx(repo, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
368 (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
|
369 'automated test', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
370 ['adding_file'], |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
371 file_callback, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
372 'an_author', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
373 '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
|
374 {'branch': 'the_branch', }) |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
375 new_hash = repo.commitctx(ctx) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
376 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
|
377 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
|
378 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
|
379 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
|
380 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
|
381 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
|
382 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
|
383 |
625
96552e855d7e
tests: fix misnamed test caught while hunting unrelated bugs
Augie Fackler <durin42@gmail.com>
parents:
576
diff
changeset
|
384 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
|
385 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
|
386 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
|
387 u = self.repo.ui |
816
86d124a8768e
Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents:
735
diff
changeset
|
388 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
|
389 res = self.pushrevisions() |
8e621dbb82d4
push: return reasonable status codes to the end user
Augie Fackler <durin42@gmail.com>
parents:
625
diff
changeset
|
390 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
|
391 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
|
392 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
|
393 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
|
394 shutil.rmtree(self.wc_path) |
816
86d124a8768e
Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents:
735
diff
changeset
|
395 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
|
396 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
|
397 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
|
398 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
|
399 |
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
|
400 # 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
|
401 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
|
402 ], |
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 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
|
404 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
|
405 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
|
406 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
|
407 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
|
408 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
|
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 |
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 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
|
412 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
|
413 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
|
414 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
|
415 |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
416 def test_delete_file(self): |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
417 repo = self.repo |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
418 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
|
419 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
|
420 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
|
421 ctx = context.memctx(repo, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
422 (repo['default'].node(), node.nullid), |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
423 'automated test', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
424 ['alpha'], |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
425 file_callback, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
426 'an author', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
427 '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
|
428 {'branch': 'default', }) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
429 new_hash = repo.commitctx(ctx) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
430 hg.update(repo, repo['tip'].node()) |
78
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
65
diff
changeset
|
431 self.pushrevisions() |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
432 tip = self.repo['tip'] |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
433 self.assertEqual(old_files, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
434 set(tip.manifest().keys() + ['alpha'])) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
435 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
|
436 |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
437 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
|
438 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
|
439 repo = self.repo |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
440 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
|
441 if path == 'gamma': |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
442 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
443 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
444 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
445 data='foo', |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
446 islink=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
447 isexec=True, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
448 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
|
449 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
|
450 ctx = context.memctx(repo, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
451 (repo['tip'].node(), node.nullid), |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
452 'message', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
453 ['gamma', ], |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
454 file_callback, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
455 'author', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
456 '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
|
457 {'branch': 'default', }) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
458 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
|
459 hg.clean(repo, repo['tip'].node()) |
78
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
65
diff
changeset
|
460 self.pushrevisions() |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
461 tip = self.repo['tip'] |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
462 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
|
463 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
|
464 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
|
465 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
|
466 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
|
467 tip[x].flags()]), |
a36e87ae2380
tests: always compare manifest keys in sorted order
Siddharth Agarwal <sid0@fb.com>
parents:
1239
diff
changeset
|
468 ['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
|
469 |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
470 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
|
471 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
|
472 repo = self.repo |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
473 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
|
474 if path == 'gamma': |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
475 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
476 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
477 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
478 data='foo', |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
479 islink=True, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
480 isexec=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
481 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
|
482 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
|
483 ctx = context.memctx(repo, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
484 (repo['tip'].node(), node.nullid), |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
485 'message', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
486 ['gamma', ], |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
487 file_callback, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
488 'author', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
489 '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
|
490 {'branch': 'default', }) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
491 new_hash = repo.commitctx(ctx) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
492 hg.update(repo, repo['tip'].node()) |
78
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
65
diff
changeset
|
493 self.pushrevisions() |
1229
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
494 # 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
|
495 repo = self.repo |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
496 tip = repo['tip'] |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
497 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
|
498 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
|
499 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
|
500 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
|
501 tip[x].flags()]), |
a36e87ae2380
tests: always compare manifest keys in sorted order
Siddharth Agarwal <sid0@fb.com>
parents:
1239
diff
changeset
|
502 ['adding_file', 'alpha', 'beta', ]) |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
503 |
1229
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
504 def file_callback2(repo, memctx, path): |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
505 if path == 'gamma': |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
506 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
507 memctx=memctx, |
1229
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
508 path=path, |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
509 data='a' * 129, |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
510 islink=True, |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
511 isexec=False, |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
512 copied=False) |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
513 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
|
514 |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
515 ctx = context.memctx(repo, |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
516 (repo['tip'].node(), node.nullid), |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
517 'message', |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
518 ['gamma', ], |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
519 file_callback2, |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
520 'author', |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
521 '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
|
522 {'branch': 'default', }) |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
523 repo.commitctx(ctx) |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
524 hg.update(repo, repo['tip'].node()) |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
525 self.pushrevisions() |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
526 # 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
|
527 repo = self.repo |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
528 tip = repo['tip'] |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
529 self.assertEqual(tip['gamma'].flags(), 'l') |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
530 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
|
531 |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
532 def file_callback3(repo, memctx, path): |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
533 if path == 'gamma': |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
534 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
535 memctx=memctx, |
1229
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
536 path=path, |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
537 data='a' * 64 + 'b' * 65, |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
538 islink=True, |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
539 isexec=False, |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
540 copied=False) |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
541 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
|
542 |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
543 ctx = context.memctx(repo, |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
544 (repo['tip'].node(), node.nullid), |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
545 'message', |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
546 ['gamma', ], |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
547 file_callback3, |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
548 'author', |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
549 '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
|
550 {'branch': 'default', }) |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
551 repo.commitctx(ctx) |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
552 hg.update(repo, repo['tip'].node()) |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
553 self.pushrevisions() |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
554 repo = self.repo |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
555 tip = repo['tip'] |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
556 self.assertEqual(tip['gamma'].flags(), 'l') |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
557 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
|
558 |
46523cdfd3b0
pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents:
1202
diff
changeset
|
559 |
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
|
560 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
|
561 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
|
562 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
|
563 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
|
564 |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
565 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
|
566 link=False, expected_flags='x'): |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
567 self.test_push_to_default() |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
568 repo = self.repo |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
569 def file_callback(repo, memctx, path): |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
570 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
571 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
572 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
573 data='foo', |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
574 islink=link, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
575 isexec=execute, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
576 copied=False) |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
577 ctx = context.memctx(repo, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
578 (repo['default'].node(), node.nullid), |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
579 'message', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
580 ['alpha', ], |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
581 file_callback, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
582 'author', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
583 '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
|
584 {'branch': 'default', }) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
585 new_hash = repo.commitctx(ctx) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
586 hg.update(repo, repo['tip'].node()) |
78
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
65
diff
changeset
|
587 self.pushrevisions() |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
588 tip = self.repo['tip'] |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
589 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
|
590 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
|
591 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
|
592 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
|
593 # 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
|
594 # works |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
595 repo = self.repo |
101
a3b717e4abf5
Cleanups based on pyflakes output.
Augie Fackler <durin42@gmail.com>
parents:
83
diff
changeset
|
596 def file_callback2(repo, memctx, path): |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
597 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
598 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
599 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
600 data='bar', |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
601 islink=link, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
602 isexec=execute, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
603 copied=False) |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
604 ctx = context.memctx(repo, |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
605 (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
|
606 '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
|
607 ['alpha', ], |
101
a3b717e4abf5
Cleanups based on pyflakes output.
Augie Fackler <durin42@gmail.com>
parents:
83
diff
changeset
|
608 file_callback2, |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
609 'author', |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
610 '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
|
611 {'branch': 'default', }) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
612 new_hash = repo.commitctx(ctx) |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
613 hg.update(repo, repo['tip'].node()) |
78
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
65
diff
changeset
|
614 self.pushrevisions() |
50
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
615 tip = self.repo['tip'] |
80b923ab242b
Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents:
49
diff
changeset
|
616 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
|
617 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
|
618 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
|
619 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
|
620 # 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
|
621 repo = self.repo |
101
a3b717e4abf5
Cleanups based on pyflakes output.
Augie Fackler <durin42@gmail.com>
parents:
83
diff
changeset
|
622 def file_callback3(repo, memctx, path): |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
623 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
624 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
625 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
626 data='bar', |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
627 islink=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
628 isexec=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
629 copied=False) |
62
cc5ebdb1e8d4
push_cmd: Further simplified some logic thanks to an improved test.
Augie Fackler <durin42@gmail.com>
parents:
60
diff
changeset
|
630 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
|
631 (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
|
632 '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
|
633 ['alpha', ], |
101
a3b717e4abf5
Cleanups based on pyflakes output.
Augie Fackler <durin42@gmail.com>
parents:
83
diff
changeset
|
634 file_callback3, |
62
cc5ebdb1e8d4
push_cmd: Further simplified some logic thanks to an improved test.
Augie Fackler <durin42@gmail.com>
parents:
60
diff
changeset
|
635 'author', |
cc5ebdb1e8d4
push_cmd: Further simplified some logic thanks to an improved test.
Augie Fackler <durin42@gmail.com>
parents:
60
diff
changeset
|
636 '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
|
637 {'branch': 'default', }) |
cc5ebdb1e8d4
push_cmd: Further simplified some logic thanks to an improved test.
Augie Fackler <durin42@gmail.com>
parents:
60
diff
changeset
|
638 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
|
639 hg.update(repo, repo['tip'].node()) |
78
072010a271c6
Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents:
65
diff
changeset
|
640 self.pushrevisions() |
62
cc5ebdb1e8d4
push_cmd: Further simplified some logic thanks to an improved test.
Augie Fackler <durin42@gmail.com>
parents:
60
diff
changeset
|
641 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
|
642 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
|
643 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
|
644 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
|
645 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
|
646 |
277
3848a7f9b983
push: Add a test that demonstrates base-text detection works
Augie Fackler <durin42@gmail.com>
parents:
257
diff
changeset
|
647 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
|
648 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
|
649 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
|
650 ] |
690
4b55fb6d6847
tests: remove constant rev no from test script
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
671
diff
changeset
|
651 par = self.repo['tip'].rev() |
4b55fb6d6847
tests: remove constant rev no from test script
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
671
diff
changeset
|
652 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
|
653 self.pushrevisions() |
3848a7f9b983
push: Add a test that demonstrates base-text detection works
Augie Fackler <durin42@gmail.com>
parents:
257
diff
changeset
|
654 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
|
655 '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
|
656 ] |
690
4b55fb6d6847
tests: remove constant rev no from test script
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents:
671
diff
changeset
|
657 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
|
658 try: |
3848a7f9b983
push: Add a test that demonstrates base-text detection works
Augie Fackler <durin42@gmail.com>
parents:
257
diff
changeset
|
659 self.pushrevisions() |
3848a7f9b983
push: Add a test that demonstrates base-text detection works
Augie Fackler <durin42@gmail.com>
parents:
257
diff
changeset
|
660 assert False, 'This should have aborted!' |
1555
cff81f35b31e
cleanup: reference Abort from mercurial.error instead of mercurial.util
Augie Fackler <raf@durin42.com>
parents:
1549
diff
changeset
|
661 except hgerror.Abort, e: |
277
3848a7f9b983
push: Add a test that demonstrates base-text detection works
Augie Fackler <durin42@gmail.com>
parents:
257
diff
changeset
|
662 self.assertEqual(e.args[0], |
556
8522f8ef799e
pushmod: make outdated parent error message more helpful
Patrick Mezard <pmezard@gmail.com>
parents:
531
diff
changeset
|
663 '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
|
664 'HEAD\n' |
8522f8ef799e
pushmod: make outdated parent error message more helpful
Patrick Mezard <pmezard@gmail.com>
parents:
531
diff
changeset
|
665 '(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
|
666 # 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
|
667 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
|
668 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
|
669 |
928
d99ed94f4760
wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents:
907
diff
changeset
|
670 def test_push_encoding(self): |
d99ed94f4760
wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents:
907
diff
changeset
|
671 self.test_push_two_revs() |
d99ed94f4760
wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents:
907
diff
changeset
|
672 # 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
|
673 # 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
|
674 # 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
|
675 # 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
|
676 fn = 'pi\xc3\xa8ce/test' |
d99ed94f4760
wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents:
907
diff
changeset
|
677 changes = [(fn, fn, 'a')] |
d99ed94f4760
wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents:
907
diff
changeset
|
678 par = self.repo['tip'].rev() |
d99ed94f4760
wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents:
907
diff
changeset
|
679 self.commitchanges(changes, parent=par) |
d99ed94f4760
wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents:
907
diff
changeset
|
680 self.pushrevisions() |
d99ed94f4760
wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents:
907
diff
changeset
|
681 |
929
8417be758047
pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
682 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
|
683 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
|
684 changes = [ |
8417be758047
pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
685 ('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
|
686 ('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
|
687 ] |
8417be758047
pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
688 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
|
689 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
|
690 self.pushrevisions() |
1321
a36e87ae2380
tests: always compare manifest keys in sorted order
Siddharth Agarwal <sid0@fb.com>
parents:
1239
diff
changeset
|
691 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
|
692 |
8417be758047
pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
693 # 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
|
694 changes = [ |
8417be758047
pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
695 ('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
|
696 ] |
8417be758047
pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
697 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
|
698 self.pushrevisions() |
8417be758047
pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents:
928
diff
changeset
|
699 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
|
700 |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
701 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
|
702 ''' |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
703 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
|
704 on top of the pushed commit. |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
705 ''' |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
706 |
1048
903c9c9dfe6a
tests: count revisions explicitly
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1044
diff
changeset
|
707 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
|
708 oldtiphash = self.repo['default'].node() |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
709 |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
710 changes = [('gamma', 'gamma', 'sometext')] |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
711 newhash1 = self.commitchanges(changes) |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
712 |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
713 changes = [('delta', 'delta', 'sometext')] |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
714 newhash2 = self.commitchanges(changes) |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
715 |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
716 # push only the first commit |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
717 repo = self.repo |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
718 hg.update(repo, newhash1) |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
719 commands.push(repo.ui, repo) |
1048
903c9c9dfe6a
tests: count revisions explicitly
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1044
diff
changeset
|
720 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
|
721 |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
722 # 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
|
723 commit2 = self.repo['tip'] |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
724 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
|
725 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
|
726 commit1 = commit2.parents()[0] |
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
727 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
|
728 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
|
729 self.assertEqual(util.getsvnrev(commit1), |
ada2400241c4
fixes for running under Mercurial 2.0
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1036
diff
changeset
|
730 prefix + '/branches/the_branch@5') |
990
def2144c0a8c
push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents:
929
diff
changeset
|
731 |
991
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
732 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
|
733 ''' |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
734 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
|
735 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
|
736 ''' |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
737 |
1048
903c9c9dfe6a
tests: count revisions explicitly
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1044
diff
changeset
|
738 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
|
739 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
|
740 |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
741 changes = [('gamma', 'gamma', 'sometext')] |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
742 newhash = self.commitchanges(changes) |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
743 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
|
744 ('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
|
745 ] |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
746 newhash = self.commitchanges(changes) |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
747 |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
748 repo = self.repo |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
749 hg.update(repo, newhash) |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
750 commands.push(repo.ui, repo) |
1048
903c9c9dfe6a
tests: count revisions explicitly
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1044
diff
changeset
|
751 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
|
752 |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
753 # 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
|
754 commit1 = self.repo['tip'] |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
755 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
|
756 |
ada2400241c4
fixes for running under Mercurial 2.0
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1036
diff
changeset
|
757 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
|
758 self.assertEqual(util.getsvnrev(commit1), |
ada2400241c4
fixes for running under Mercurial 2.0
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1036
diff
changeset
|
759 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
|
760 commit2 = commit1.parents()[0] |
26e9fd21f3bf
push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents:
990
diff
changeset
|
761 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
|
762 self.assertEqual(util.getsvnrev(commit2), |
ada2400241c4
fixes for running under Mercurial 2.0
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents:
1036
diff
changeset
|
763 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
|
764 |
992
110794582448
push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents:
991
diff
changeset
|
765 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
|
766 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
|
767 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
|
768 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
|
769 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
|
770 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
|
771 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
|
772 testData = 'fooNewFile' |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
773 return compathacks.makememfilectx(repo, |
1549
8410a978c650
compathacks: be compatible with upstream 8a0cac20a1ad memfilectx change
Jun Wu <quark@fb.com>
parents:
1539
diff
changeset
|
774 memctx=memctx, |
1202
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
775 path=path, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
776 data=testData, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
777 islink=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
778 isexec=False, |
cccc7a50f66d
test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents:
1055
diff
changeset
|
779 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
|
780 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
|
781 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
|
782 (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
|
783 '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
|
784 ['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
|
785 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
|
786 '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
|
787 '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
|
788 {'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
|
789 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
|
790 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
|
791 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
|
792 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
|
793 (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
|
794 '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
|
795 ['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
|
796 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
|
797 '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
|
798 '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
|
799 {'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
|
800 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
|
801 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
|
802 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
|
803 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
|
804 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
|
805 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
|
806 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
|
807 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
|
808 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
|
809 self.assertEqual(tip.branch(), 'default') |
1236
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
810 |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
811 def test_update_after_push(self): |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
812 repo = self.repo |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
813 ui = repo.ui |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
814 |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
815 ui.setconfig('hooks', |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
816 '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
|
817 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
|
818 self.repo_path, |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
819 {'trunk/racey_file': 'race conditions suck'})) |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
820 |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
821 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
|
822 commands.push(ui, repo) |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
823 newctx = self.repo['.'] |
f367a4462191
push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents:
1231
diff
changeset
|
824 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
|
825 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
|
826 self.assertEqual(newctx.branch(), 'the_branch') |