annotate tests/test_push_command.py @ 1507:debba0fa822e

test_push_command: bias towards IPv4 to work around gremlins on macOS
author Augie Fackler <raf@durin42.com>
date Mon, 29 May 2017 12:50:15 -0400
parents 6e3f48d8002f
children 5441a9d1fd50
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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)
1507
debba0fa822e test_push_command: bias towards IPv4 to work around gremlins on macOS
Augie Fackler <raf@durin42.com>
parents: 1501
diff changeset
149 # On macOS svn seems to have issues with IPv6 at least some of
debba0fa822e test_push_command: bias towards IPv4 to work around gremlins on macOS
Augie Fackler <raf@durin42.com>
parents: 1501
diff changeset
150 # the time, so try and bias towards IPv4. This works because
debba0fa822e test_push_command: bias towards IPv4 to work around gremlins on macOS
Augie Fackler <raf@durin42.com>
parents: 1501
diff changeset
151 # AF_INET is less than AF_INET6 on all platforms I've
debba0fa822e test_push_command: bias towards IPv4 to work around gremlins on macOS
Augie Fackler <raf@durin42.com>
parents: 1501
diff changeset
152 # checked. Hopefully any platform where that's not true will
debba0fa822e test_push_command: bias towards IPv4 to work around gremlins on macOS
Augie Fackler <raf@durin42.com>
parents: 1501
diff changeset
153 # be fine with IPv6 all the time. :)
debba0fa822e test_push_command: bias towards IPv4 to work around gremlins on macOS
Augie Fackler <raf@durin42.com>
parents: 1501
diff changeset
154 selected = sorted(addrinfo)[0]
debba0fa822e test_push_command: bias towards IPv4 to work around gremlins on macOS
Augie Fackler <raf@durin42.com>
parents: 1501
diff changeset
155 self.host = selected[4][0]
1501
6e3f48d8002f tests: fix ipv6 support in test_push_command.py
Arun Kulshreshtha <kulshrax@fb.com>
parents: 1451
diff changeset
156
6e3f48d8002f tests: fix ipv6 support in test_push_command.py
Arun Kulshreshtha <kulshrax@fb.com>
parents: 1451
diff changeset
157 # 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
158 # hostname in the URL.
1507
debba0fa822e test_push_command: bias towards IPv4 to work around gremlins on macOS
Augie Fackler <raf@durin42.com>
parents: 1501
diff changeset
159 ipv6 = selected[0] == socket.AF_INET6
1501
6e3f48d8002f tests: fix ipv6 support in test_push_command.py
Arun Kulshreshtha <kulshrax@fb.com>
parents: 1451
diff changeset
160 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
161
336
c0b943cef0c3 Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents: 331
diff changeset
162 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
163 '--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
164 '--listen-host=%s' % self.host,
866
20e73b5ab6f7 test_util: merge load_svndump_fixture() into TestBase
Patrick Mezard <patrick@mezard.eu>
parents: 865
diff changeset
165 '--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
166
340
88ba55ad58c0 Minor tweaks to wrapper documentation.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 337
diff changeset
167 svnserve = subprocess.Popen(args, stdout=subprocess.PIPE,
88ba55ad58c0 Minor tweaks to wrapper documentation.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 337
diff changeset
168 stderr=subprocess.STDOUT)
88ba55ad58c0 Minor tweaks to wrapper documentation.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 337
diff changeset
169 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
170 try:
c0b943cef0c3 Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents: 331
diff changeset
171 time.sleep(2)
337
46e69be8e2c8 Reorganize to have a more conventional module structure.
Augie Fackler <durin42@gmail.com>
parents: 336
diff changeset
172 import shutil
46e69be8e2c8 Reorganize to have a more conventional module structure.
Augie Fackler <durin42@gmail.com>
parents: 336
diff changeset
173 shutil.rmtree(self.wc_path)
671
e910e3ebd23b svnmeta: strip all repeated slashes from subdir
Peter Arrenbrecht <peter.arrenbre...@gmail.com>
parents: 643
diff changeset
174 commands.clone(self.ui(),
1501
6e3f48d8002f tests: fix ipv6 support in test_push_command.py
Arun Kulshreshtha <kulshrax@fb.com>
parents: 1451
diff changeset
175 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
176 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
177
c0b943cef0c3 Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents: 331
diff changeset
178 repo = self.repo
c0b943cef0c3 Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents: 331
diff changeset
179 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
180 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
181 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
182 if path == 'adding_file':
1202
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
183 return compathacks.makememfilectx(repo,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
184 path=path,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
185 data='foo',
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
186 islink=False,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
187 isexec=False,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
188 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
189 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
190 ctx = context.memctx(repo,
348
af1508b7ad54 test_push_command: improve readability a bit.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 340
diff changeset
191 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
192 text='automated test',
af1508b7ad54 test_push_command: improve readability a bit.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 340
diff changeset
193 files=['adding_file'],
af1508b7ad54 test_push_command: improve readability a bit.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 340
diff changeset
194 filectxfn=file_callback,
af1508b7ad54 test_push_command: improve readability a bit.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 340
diff changeset
195 user='an_author',
af1508b7ad54 test_push_command: improve readability a bit.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 340
diff changeset
196 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
197 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
198 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
199 if not commit:
c0b943cef0c3 Use try/finally in an attempt to stop leaking svnserve processes.
Augie Fackler <durin42@gmail.com>
parents: 331
diff changeset
200 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
201 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
202 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
203 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
204 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
205 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
206 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
207 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
208 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
209 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
210 # unintended behaviour:
5d0d9424913f test_push_command: this test causes an author of None.
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 348
diff changeset
211 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
212 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
213 finally:
854
50a09999dce3 tests: push_command: use svnserve.kill() in Python >=2.6
Arne Babenhauserheide <arne.babenhauserheide@fzk.de>
parents: 834
diff changeset
214 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
215 svnserve.kill()
907
173065f9b715 push test: peek inside svn's pending transaction list on abort
Augie Fackler <raf@durin42.com>
parents: 872
diff changeset
216 else:
854
50a09999dce3 tests: push_command: use svnserve.kill() in Python >=2.6
Arne Babenhauserheide <arne.babenhauserheide@fzk.de>
parents: 834
diff changeset
217 test_util.kill_process(svnserve)
220
06eb60f9a026 push: Do not attempt to push empty revisions.
Augie Fackler <durin42@gmail.com>
parents: 150
diff changeset
218
671
e910e3ebd23b svnmeta: strip all repeated slashes from subdir
Peter Arrenbrecht <peter.arrenbre...@gmail.com>
parents: 643
diff changeset
219 def test_push_over_svnserve(self):
e910e3ebd23b svnmeta: strip all repeated slashes from subdir
Peter Arrenbrecht <peter.arrenbre...@gmail.com>
parents: 643
diff changeset
220 self.internal_push_over_svnserve()
e910e3ebd23b svnmeta: strip all repeated slashes from subdir
Peter Arrenbrecht <peter.arrenbre...@gmail.com>
parents: 643
diff changeset
221
e910e3ebd23b svnmeta: strip all repeated slashes from subdir
Peter Arrenbrecht <peter.arrenbre...@gmail.com>
parents: 643
diff changeset
222 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
223 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
224
50
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
225 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
226 repo = self.repo
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
227 old_tip = repo['tip'].node()
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
228 expected_parent = repo['default'].node()
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
229 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
230 if path == 'adding_file':
1202
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
231 return compathacks.makememfilectx(repo,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
232 path=path,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
233 data='foo',
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
234 islink=False,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
235 isexec=False,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
236 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
237 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
238 ctx = context.memctx(repo,
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
239 (repo['default'].node(), node.nullid),
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
240 'automated test',
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
241 ['adding_file'],
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
242 file_callback,
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
243 'an_author',
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
244 '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
245 {'branch': 'default', })
50
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
246 new_hash = repo.commitctx(ctx)
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
247 if not commit:
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
248 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
249 hg.update(repo, repo['tip'].node())
78
072010a271c6 Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents: 65
diff changeset
250 self.pushrevisions()
50
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
251 tip = self.repo['tip']
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
252 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
253 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
254 node.hex(expected_parent))
50
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
255 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
256 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
257
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
258 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
259 def filectxfn(repo, memctx, path):
1202
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
260 return compathacks.makememfilectx(repo,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
261 path=path,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
262 data=path,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
263 islink=False,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
264 isexec=False,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
265 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
266 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
267 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
268 (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
269 '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
270 ['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
271 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
272 '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
273 '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
274 {'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
275 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
276 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
277 (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
278 '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
279 ['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
280 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
281 '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
282 '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
283 {'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
284 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
285 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
286 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
287 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
288 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
289 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
290 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
291 ['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
292
50
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
293 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
294 # 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
295 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
296 repo = self.repo
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
297 old_tip = repo['tip'].node()
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
298 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
299 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
300 if path == 'adding_file2':
1202
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
301 return compathacks.makememfilectx(repo,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
302 path=path,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
303 data='foo2',
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
304 islink=False,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
305 isexec=False,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
306 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
307 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
308 ctx = context.memctx(repo,
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
309 (repo['default'].node(), node.nullid),
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
310 'automated test',
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
311 ['adding_file2'],
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
312 file_callback,
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
313 'an_author',
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
314 '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
315 {'branch': 'default', })
50
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
316 new_hash = repo.commitctx(ctx)
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
317 hg.update(repo, repo['tip'].node())
78
072010a271c6 Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents: 65
diff changeset
318 self.pushrevisions()
50
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
319 tip = self.repo['tip']
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
320 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
321 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
322 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
323 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
324 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
325 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
326 try:
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
327 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
328 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
329 except revlog.LookupError, e:
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
330 pass
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
331 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
332
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
333 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
334 repo = self.repo
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
335 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
336 if path == 'adding_file':
1202
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
337 return compathacks.makememfilectx(repo,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
338 path=path,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
339 data='foo',
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
340 islink=False,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
341 isexec=False,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
342 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
343 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
344 ctx = context.memctx(repo,
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
345 (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
346 'automated test',
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
347 ['adding_file'],
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
348 file_callback,
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
349 'an_author',
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
350 '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
351 {'branch': 'the_branch', })
50
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
352 new_hash = repo.commitctx(ctx)
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
353 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
354 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
355 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
356 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
357 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
358 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
359 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
360
625
96552e855d7e tests: fix misnamed test caught while hunting unrelated bugs
Augie Fackler <durin42@gmail.com>
parents: 576
diff changeset
361 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
362 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
363 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
364 u = self.repo.ui
816
86d124a8768e Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents: 735
diff changeset
365 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
366 res = self.pushrevisions()
8e621dbb82d4 push: return reasonable status codes to the end user
Augie Fackler <durin42@gmail.com>
parents: 625
diff changeset
367 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
368 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
369 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
370 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
371 shutil.rmtree(self.wc_path)
816
86d124a8768e Fix hg.clone() calls changed by d976542986d2
Patrick Mezard <pmezard@gmail.com>
parents: 735
diff changeset
372 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
373 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
374 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
375 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
376
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 # 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
378 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
379 ],
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 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
381 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
382 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
383 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
384 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
385 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
386
62f90781eb10 push: don't refuse to push if it looks like we haven't pulled all changes.
Augie Fackler <durin42@gmail.com>
parents: 349
diff changeset
387
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
388 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
389 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
390 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
391 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
392
50
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
393 def test_delete_file(self):
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
394 repo = self.repo
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
395 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
396 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
397 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
398 ctx = context.memctx(repo,
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
399 (repo['default'].node(), node.nullid),
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
400 'automated test',
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
401 ['alpha'],
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
402 file_callback,
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
403 'an author',
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
404 '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
405 {'branch': 'default', })
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
406 new_hash = repo.commitctx(ctx)
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
407 hg.update(repo, repo['tip'].node())
78
072010a271c6 Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents: 65
diff changeset
408 self.pushrevisions()
50
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
409 tip = self.repo['tip']
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
410 self.assertEqual(old_files,
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
411 set(tip.manifest().keys() + ['alpha']))
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
412 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
413
50
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
414 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
415 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
416 repo = self.repo
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
417 def file_callback(repo, memctx, path):
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
418 if path == 'gamma':
1202
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
419 return compathacks.makememfilectx(repo,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
420 path=path,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
421 data='foo',
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
422 islink=False,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
423 isexec=True,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
424 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
425 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
426 ctx = context.memctx(repo,
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
427 (repo['tip'].node(), node.nullid),
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
428 'message',
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
429 ['gamma', ],
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
430 file_callback,
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
431 'author',
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
432 '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
433 {'branch': 'default', })
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
434 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
435 hg.clean(repo, repo['tip'].node())
78
072010a271c6 Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents: 65
diff changeset
436 self.pushrevisions()
50
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
437 tip = self.repo['tip']
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
438 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
439 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
440 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
441 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
442 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
443 tip[x].flags()]),
a36e87ae2380 tests: always compare manifest keys in sorted order
Siddharth Agarwal <sid0@fb.com>
parents: 1239
diff changeset
444 ['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
445
50
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
446 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
447 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
448 repo = self.repo
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
449 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
450 if path == 'gamma':
1202
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
451 return compathacks.makememfilectx(repo,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
452 path=path,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
453 data='foo',
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
454 islink=True,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
455 isexec=False,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
456 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
457 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
458 ctx = context.memctx(repo,
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
459 (repo['tip'].node(), node.nullid),
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
460 'message',
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
461 ['gamma', ],
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
462 file_callback,
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
463 'author',
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
464 '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
465 {'branch': 'default', })
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
466 new_hash = repo.commitctx(ctx)
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
467 hg.update(repo, repo['tip'].node())
78
072010a271c6 Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents: 65
diff changeset
468 self.pushrevisions()
1229
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
469 # 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
470 repo = self.repo
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
471 tip = repo['tip']
50
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
472 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
473 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
474 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
475 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
476 tip[x].flags()]),
a36e87ae2380 tests: always compare manifest keys in sorted order
Siddharth Agarwal <sid0@fb.com>
parents: 1239
diff changeset
477 ['adding_file', 'alpha', 'beta', ])
50
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
478
1229
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
479 def file_callback2(repo, memctx, path):
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
480 if path == 'gamma':
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
481 return compathacks.makememfilectx(repo,
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
482 path=path,
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
483 data='a' * 129,
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
484 islink=True,
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
485 isexec=False,
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
486 copied=False)
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
487 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
488
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
489 ctx = context.memctx(repo,
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
490 (repo['tip'].node(), node.nullid),
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
491 'message',
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
492 ['gamma', ],
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
493 file_callback2,
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
494 'author',
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
495 '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
496 {'branch': 'default', })
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
497 repo.commitctx(ctx)
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
498 hg.update(repo, repo['tip'].node())
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
499 self.pushrevisions()
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
500 # 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
501 repo = self.repo
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
502 tip = repo['tip']
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
503 self.assertEqual(tip['gamma'].flags(), 'l')
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
504 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
505
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
506 def file_callback3(repo, memctx, path):
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
507 if path == 'gamma':
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
508 return compathacks.makememfilectx(repo,
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
509 path=path,
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
510 data='a' * 64 + 'b' * 65,
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
511 islink=True,
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
512 isexec=False,
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
513 copied=False)
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
514 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
515
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
516 ctx = context.memctx(repo,
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
517 (repo['tip'].node(), node.nullid),
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
518 'message',
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
519 ['gamma', ],
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
520 file_callback3,
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
521 'author',
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
522 '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
523 {'branch': 'default', })
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
524 repo.commitctx(ctx)
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
525 hg.update(repo, repo['tip'].node())
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
526 self.pushrevisions()
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
527 repo = self.repo
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
528 tip = repo['tip']
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
529 self.assertEqual(tip['gamma'].flags(), 'l')
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
530 self.assertEqual(tip['gamma'].data(), 'a' * 64 + 'b' * 65)
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
531
46523cdfd3b0 pushmod: prepend "link " to base text for links
David Schleimer <dschleimer@gmail.com>
parents: 1202
diff changeset
532
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
533 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
534 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
535 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
536 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
537
50
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
538 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
539 link=False, expected_flags='x'):
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
540 self.test_push_to_default()
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
541 repo = self.repo
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
542 def file_callback(repo, memctx, path):
1202
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
543 return compathacks.makememfilectx(repo,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
544 path=path,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
545 data='foo',
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
546 islink=link,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
547 isexec=execute,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
548 copied=False)
50
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
549 ctx = context.memctx(repo,
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
550 (repo['default'].node(), node.nullid),
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
551 'message',
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
552 ['alpha', ],
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
553 file_callback,
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
554 'author',
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
555 '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
556 {'branch': 'default', })
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
557 new_hash = repo.commitctx(ctx)
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
558 hg.update(repo, repo['tip'].node())
78
072010a271c6 Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents: 65
diff changeset
559 self.pushrevisions()
50
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
560 tip = self.repo['tip']
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
561 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
562 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
563 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
564 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
565 # 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
566 # works
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
567 repo = self.repo
101
a3b717e4abf5 Cleanups based on pyflakes output.
Augie Fackler <durin42@gmail.com>
parents: 83
diff changeset
568 def file_callback2(repo, memctx, path):
1202
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
569 return compathacks.makememfilectx(repo,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
570 path=path,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
571 data='bar',
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
572 islink=link,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
573 isexec=execute,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
574 copied=False)
50
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
575 ctx = context.memctx(repo,
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
576 (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
577 '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
578 ['alpha', ],
101
a3b717e4abf5 Cleanups based on pyflakes output.
Augie Fackler <durin42@gmail.com>
parents: 83
diff changeset
579 file_callback2,
50
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
580 'author',
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
581 '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
582 {'branch': 'default', })
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
583 new_hash = repo.commitctx(ctx)
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
584 hg.update(repo, repo['tip'].node())
78
072010a271c6 Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents: 65
diff changeset
585 self.pushrevisions()
50
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
586 tip = self.repo['tip']
80b923ab242b Drop any pretense of supporting svn 1.4.x.
Augie Fackler <durin42@gmail.com>
parents: 49
diff changeset
587 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
588 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
589 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
590 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
591 # 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
592 repo = self.repo
101
a3b717e4abf5 Cleanups based on pyflakes output.
Augie Fackler <durin42@gmail.com>
parents: 83
diff changeset
593 def file_callback3(repo, memctx, path):
1202
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
594 return compathacks.makememfilectx(repo,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
595 path=path,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
596 data='bar',
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
597 islink=False,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
598 isexec=False,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
599 copied=False)
62
cc5ebdb1e8d4 push_cmd: Further simplified some logic thanks to an improved test.
Augie Fackler <durin42@gmail.com>
parents: 60
diff changeset
600 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
601 (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
602 '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
603 ['alpha', ],
101
a3b717e4abf5 Cleanups based on pyflakes output.
Augie Fackler <durin42@gmail.com>
parents: 83
diff changeset
604 file_callback3,
62
cc5ebdb1e8d4 push_cmd: Further simplified some logic thanks to an improved test.
Augie Fackler <durin42@gmail.com>
parents: 60
diff changeset
605 'author',
cc5ebdb1e8d4 push_cmd: Further simplified some logic thanks to an improved test.
Augie Fackler <durin42@gmail.com>
parents: 60
diff changeset
606 '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
607 {'branch': 'default', })
cc5ebdb1e8d4 push_cmd: Further simplified some logic thanks to an improved test.
Augie Fackler <durin42@gmail.com>
parents: 60
diff changeset
608 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
609 hg.update(repo, repo['tip'].node())
78
072010a271c6 Fix basic issues with tests on Windows
Patrick Mezard <pmezard@gmail.com>
parents: 65
diff changeset
610 self.pushrevisions()
62
cc5ebdb1e8d4 push_cmd: Further simplified some logic thanks to an improved test.
Augie Fackler <durin42@gmail.com>
parents: 60
diff changeset
611 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
612 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
613 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
614 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
615 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
616
277
3848a7f9b983 push: Add a test that demonstrates base-text detection works
Augie Fackler <durin42@gmail.com>
parents: 257
diff changeset
617 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
618 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
619 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
620 ]
690
4b55fb6d6847 tests: remove constant rev no from test script
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 671
diff changeset
621 par = self.repo['tip'].rev()
4b55fb6d6847 tests: remove constant rev no from test script
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 671
diff changeset
622 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
623 self.pushrevisions()
3848a7f9b983 push: Add a test that demonstrates base-text detection works
Augie Fackler <durin42@gmail.com>
parents: 257
diff changeset
624 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
625 '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
626 ]
690
4b55fb6d6847 tests: remove constant rev no from test script
Peter Arrenbrecht <peter.arrenbrecht@gmail.com>
parents: 671
diff changeset
627 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
628 try:
3848a7f9b983 push: Add a test that demonstrates base-text detection works
Augie Fackler <durin42@gmail.com>
parents: 257
diff changeset
629 self.pushrevisions()
3848a7f9b983 push: Add a test that demonstrates base-text detection works
Augie Fackler <durin42@gmail.com>
parents: 257
diff changeset
630 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
631 except hgutil.Abort, e:
3848a7f9b983 push: Add a test that demonstrates base-text detection works
Augie Fackler <durin42@gmail.com>
parents: 257
diff changeset
632 self.assertEqual(e.args[0],
556
8522f8ef799e pushmod: make outdated parent error message more helpful
Patrick Mezard <pmezard@gmail.com>
parents: 531
diff changeset
633 '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
634 'HEAD\n'
8522f8ef799e pushmod: make outdated parent error message more helpful
Patrick Mezard <pmezard@gmail.com>
parents: 531
diff changeset
635 '(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
636 # 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
637 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
638 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
639
928
d99ed94f4760 wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents: 907
diff changeset
640 def test_push_encoding(self):
d99ed94f4760 wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents: 907
diff changeset
641 self.test_push_two_revs()
d99ed94f4760 wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents: 907
diff changeset
642 # 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
643 # 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
644 # 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
645 # 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
646 fn = 'pi\xc3\xa8ce/test'
d99ed94f4760 wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents: 907
diff changeset
647 changes = [(fn, fn, 'a')]
d99ed94f4760 wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents: 907
diff changeset
648 par = self.repo['tip'].rev()
d99ed94f4760 wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents: 907
diff changeset
649 self.commitchanges(changes, parent=par)
d99ed94f4760 wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents: 907
diff changeset
650 self.pushrevisions()
d99ed94f4760 wrappers: do not change encoding when pushing
Patrick Mezard <patrick@mezard.eu>
parents: 907
diff changeset
651
929
8417be758047 pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents: 928
diff changeset
652 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
653 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
654 changes = [
8417be758047 pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents: 928
diff changeset
655 ('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
656 ('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
657 ]
8417be758047 pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents: 928
diff changeset
658 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
659 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
660 self.pushrevisions()
1321
a36e87ae2380 tests: always compare manifest keys in sorted order
Siddharth Agarwal <sid0@fb.com>
parents: 1239
diff changeset
661 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
662
8417be758047 pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents: 928
diff changeset
663 # 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
664 changes = [
8417be758047 pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents: 928
diff changeset
665 ('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
666 ]
8417be758047 pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents: 928
diff changeset
667 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
668 self.pushrevisions()
8417be758047 pushmod: keep the root svn dir when emptying the hg repo (issue359)
Patrick Mezard <patrick@mezard.eu>
parents: 928
diff changeset
669 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
670
990
def2144c0a8c push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents: 929
diff changeset
671 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
672 '''
def2144c0a8c push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents: 929
diff changeset
673 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
674 on top of the pushed commit.
def2144c0a8c push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents: 929
diff changeset
675 '''
def2144c0a8c push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents: 929
diff changeset
676
1048
903c9c9dfe6a tests: count revisions explicitly
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 1044
diff changeset
677 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
678 oldtiphash = self.repo['default'].node()
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 changes = [('gamma', 'gamma', 'sometext')]
def2144c0a8c push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents: 929
diff changeset
681 newhash1 = self.commitchanges(changes)
def2144c0a8c push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents: 929
diff changeset
682
def2144c0a8c push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents: 929
diff changeset
683 changes = [('delta', 'delta', 'sometext')]
def2144c0a8c push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents: 929
diff changeset
684 newhash2 = self.commitchanges(changes)
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 # push only the first commit
def2144c0a8c push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents: 929
diff changeset
687 repo = self.repo
def2144c0a8c push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents: 929
diff changeset
688 hg.update(repo, newhash1)
def2144c0a8c push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents: 929
diff changeset
689 commands.push(repo.ui, repo)
1048
903c9c9dfe6a tests: count revisions explicitly
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 1044
diff changeset
690 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
691
def2144c0a8c push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents: 929
diff changeset
692 # 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
693 commit2 = self.repo['tip']
def2144c0a8c push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents: 929
diff changeset
694 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
695 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
696 commit1 = commit2.parents()[0]
def2144c0a8c push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents: 929
diff changeset
697 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
698 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
699 self.assertEqual(util.getsvnrev(commit1),
ada2400241c4 fixes for running under Mercurial 2.0
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 1036
diff changeset
700 prefix + '/branches/the_branch@5')
990
def2144c0a8c push: rebase one at a time before push
Durham Goode <durham@fb.com>
parents: 929
diff changeset
701
991
26e9fd21f3bf push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents: 990
diff changeset
702 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
703 '''
26e9fd21f3bf push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents: 990
diff changeset
704 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
705 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
706 '''
26e9fd21f3bf push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents: 990
diff changeset
707
1048
903c9c9dfe6a tests: count revisions explicitly
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 1044
diff changeset
708 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
709 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
710
26e9fd21f3bf push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents: 990
diff changeset
711 changes = [('gamma', 'gamma', 'sometext')]
26e9fd21f3bf push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents: 990
diff changeset
712 newhash = self.commitchanges(changes)
26e9fd21f3bf push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents: 990
diff changeset
713 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
714 ('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
715 ]
26e9fd21f3bf push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents: 990
diff changeset
716 newhash = self.commitchanges(changes)
26e9fd21f3bf push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents: 990
diff changeset
717
26e9fd21f3bf push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents: 990
diff changeset
718 repo = self.repo
26e9fd21f3bf push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents: 990
diff changeset
719 hg.update(repo, newhash)
26e9fd21f3bf push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents: 990
diff changeset
720 commands.push(repo.ui, repo)
1048
903c9c9dfe6a tests: count revisions explicitly
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 1044
diff changeset
721 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
722
26e9fd21f3bf push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents: 990
diff changeset
723 # 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
724 commit1 = self.repo['tip']
26e9fd21f3bf push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents: 990
diff changeset
725 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
726
ada2400241c4 fixes for running under Mercurial 2.0
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 1036
diff changeset
727 prefix = 'svn:' + self.repo.svnmeta().uuid
ada2400241c4 fixes for running under Mercurial 2.0
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 1036
diff changeset
728 self.assertEqual(util.getsvnrev(commit1),
ada2400241c4 fixes for running under Mercurial 2.0
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 1036
diff changeset
729 prefix + '/branches/the_branch@6')
991
26e9fd21f3bf push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents: 990
diff changeset
730 commit2 = commit1.parents()[0]
26e9fd21f3bf push: avoid rebasing when we know there are no conflicts
Durham Goode <durham@fb.com>
parents: 990
diff changeset
731 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
732 self.assertEqual(util.getsvnrev(commit2),
ada2400241c4 fixes for running under Mercurial 2.0
Dan Villiom Podlaski Christiansen <danchr@gmail.com>
parents: 1036
diff changeset
733 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
734
992
110794582448 push: avoid failure when push is being called from a newly created subdirectory
Kapil Bajaj <kapilbajaj@fb.com>
parents: 991
diff changeset
735 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
736 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
737 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
738 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
739 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
740 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
741 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
742 testData = 'fooNewFile'
1202
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
743 return compathacks.makememfilectx(repo,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
744 path=path,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
745 data=testData,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
746 islink=False,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
747 isexec=False,
cccc7a50f66d test_push_command: call makememfilectx
Sean Farley <sean.michael.farley@gmail.com>
parents: 1055
diff changeset
748 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
749 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
750 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
751 (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
752 '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
753 ['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
754 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
755 '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
756 '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
757 {'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
758 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
759 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
760 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
761 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
762 (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
763 '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
764 ['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
765 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
766 '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
767 '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
768 {'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
769 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
770 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
771 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
772 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
773 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
774 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
775 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
776 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
777 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
778 self.assertEqual(tip.branch(), 'default')
1236
f367a4462191 push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents: 1231
diff changeset
779
f367a4462191 push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents: 1231
diff changeset
780 def test_update_after_push(self):
f367a4462191 push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents: 1231
diff changeset
781 repo = self.repo
f367a4462191 push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents: 1231
diff changeset
782 ui = repo.ui
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 ui.setconfig('hooks',
f367a4462191 push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents: 1231
diff changeset
785 '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
786 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
787 self.repo_path,
f367a4462191 push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents: 1231
diff changeset
788 {'trunk/racey_file': 'race conditions suck'}))
f367a4462191 push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents: 1231
diff changeset
789
f367a4462191 push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents: 1231
diff changeset
790 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
791 commands.push(ui, repo)
f367a4462191 push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents: 1231
diff changeset
792 newctx = self.repo['.']
f367a4462191 push: update to branch tip instead of tip
David Schleimer <dschleimer@fb.com>
parents: 1231
diff changeset
793 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
794 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
795 self.assertEqual(newctx.branch(), 'the_branch')