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