annotate tests/test_push_command.py @ 1580:0d18108ec153

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