annotate tests/test_push_command.py @ 1501:6e3f48d8002f

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