Mercurial > hgsubversion
annotate tests/test_push_command.py @ 1501:6e3f48d8002f
tests: fix ipv6 support in test_push_command.py
This test runs the `svnserve` binary, which appears to resolve the hostname
passed as an argument using gethostbyname(3), which can only return an IPv4
address. When run on a system that is configured to only have an IPv6 address,
Mercurial will correctly resolve the hostname to an IPv6 address, but the SVN
server will be listening on an incorrect IPv4 address, causing the test to
fail. The workaround is to resolve the hostname using getaddrinfo(3) in the
test harness and pass the resulting address to svnserve.
author | Arun Kulshreshtha <kulshrax@fb.com> |
---|---|
date | Mon, 10 Apr 2017 16:58:28 -0700 |
parents | 945700dac237 |
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') |