annotate tests/test_push_command.py @ 1561:b303c9414190 1.9.1

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