You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ju...@apache.org on 2015/03/24 14:38:04 UTC
svn commit: r1668892 -
/subversion/branches/move-tracking-2/subversion/tests/cmdline/svnmover_tests.py
Author: julianfoad
Date: Tue Mar 24 13:38:03 2015
New Revision: 1668892
URL: http://svn.apache.org/r1668892
Log:
On the 'move-tracking-2' branch: Re-jig some test infrastructure.
* subversion/tests/cmdline/svnmover_tests.py
(mk_file,
populate_trunk,
initial_content_A_iota,
initial_content_ttb,
initial_content_in_trunk): New.
(sbox_build_svnmover): Allow specifying a function to create the initial
content; none by default.
(test_svnmover): Allow not specifying the expected path changes.
(basic_svnmover,
nested_replaces,
merges,
merge_edits_with_move): Adjust to make use of the above.
Modified:
subversion/branches/move-tracking-2/subversion/tests/cmdline/svnmover_tests.py
Modified: subversion/branches/move-tracking-2/subversion/tests/cmdline/svnmover_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/move-tracking-2/subversion/tests/cmdline/svnmover_tests.py?rev=1668892&r1=1668891&r2=1668892&view=diff
==============================================================================
--- subversion/branches/move-tracking-2/subversion/tests/cmdline/svnmover_tests.py (original)
+++ subversion/branches/move-tracking-2/subversion/tests/cmdline/svnmover_tests.py Tue Mar 24 13:38:03 2015
@@ -37,7 +37,48 @@ _commit_re = re.compile('^Committed (r[0
_log_re = re.compile('^ ([ADRM] /[^\(]+($| \(from .*:[0-9]+\)$))')
_err_re = re.compile('^svnmover: (.*)$')
-def sbox_build_svnmover(sbox):
+def mk_file(sbox, file_name):
+ """Make an unversioned file named FILE_NAME, with some text content,
+ in some convenient directory, and return a path to it.
+ """
+ file_path = os.path.join(sbox.repo_dir, file_name)
+ svntest.main.file_append(file_path, "This is the file '" + file_name + "'.")
+ return file_path
+
+def populate_trunk(sbox, trunk):
+ """Create some files and dirs under the existing dir (relpath) TRUNK.
+ """
+ test_svnmover(sbox.repo_url + '/' + trunk, None,
+ 'put', mk_file(sbox, 'README'), 'README',
+ 'mkdir', 'lib',
+ 'mkdir', 'lib/foo',
+ 'mkdir', 'lib/foo/x',
+ 'mkdir', 'lib/foo/y',
+ 'put', mk_file(sbox, 'file'), 'lib/foo/file')
+
+def initial_content_A_iota(sbox):
+ """Commit something in place of a greek tree for revision 1.
+ """
+ svntest.main.run_svnmover('-U', sbox.repo_url,
+ 'mkdir', 'A',
+ 'put', mk_file(sbox, 'iota'), 'iota')
+
+def initial_content_ttb(sbox):
+ """Make a 'trunk' branch and 'tags' and 'branches' dirs.
+ """
+ test_svnmover(sbox.repo_url, None,
+ 'mkbranch', 'trunk',
+ 'mkdir', 'tags',
+ 'mkdir', 'branches')
+
+def initial_content_in_trunk(sbox):
+ initial_content_ttb(sbox)
+
+ # create initial state in trunk
+ # (r3)
+ populate_trunk(sbox, 'trunk')
+
+def sbox_build_svnmover(sbox, content=None):
"""Create a sandbox repo containing one revision, with a directory 'A' and
a file 'iota'.
@@ -48,12 +89,8 @@ def sbox_build_svnmover(sbox):
sbox.build(create_wc=False, empty=True)
svntest.actions.enable_revprop_changes(sbox.repo_dir)
- # commit something in place of a greek tree for revision 1
- iota_file = os.path.join(sbox.repo_dir, 'iota')
- svntest.main.file_append(iota_file, "This is the file 'iota'.")
- svntest.main.run_svnmover('-U', sbox.repo_url,
- 'mkdir', 'A',
- 'put', iota_file, 'iota')
+ if content:
+ content(sbox)
def test_svnmover(repo_url, expected_path_changes, *varargs):
"""Run svnmover with the list of SVNMOVER_ARGS arguments. Verify that
@@ -80,13 +117,14 @@ def test_svnmover(repo_url, expected_pat
if match:
changed_paths.append(match.group(1).rstrip('\n\r'))
- expected_path_changes.sort()
- changed_paths.sort()
- if changed_paths != expected_path_changes:
- raise svntest.Failure("Logged path changes differ from expectations\n"
- " expected: %s\n"
- " actual: %s" % (str(expected_path_changes),
- str(changed_paths)))
+ if expected_path_changes is not None:
+ expected_path_changes.sort()
+ changed_paths.sort()
+ if changed_paths != expected_path_changes:
+ raise svntest.Failure("Logged path changes differ from expectations\n"
+ " expected: %s\n"
+ " actual: %s" % (str(expected_path_changes),
+ str(changed_paths)))
def xtest_svnmover(repo_url, error_re_string, *varargs):
"""Run svnmover with the list of VARARGS arguments. Verify that
@@ -107,7 +145,7 @@ def basic_svnmover(sbox):
"basic svnmover tests"
# a copy of svnmucc_tests 1
- sbox_build_svnmover(sbox)
+ sbox_build_svnmover(sbox, content=initial_content_A_iota)
empty_file = os.path.join(sbox.repo_dir, 'empty')
svntest.main.file_append(empty_file, '')
@@ -313,15 +351,15 @@ def nested_replaces(sbox):
sbox_build_svnmover(sbox)
repo_url = sbox.repo_url
+
+ # r1
svntest.actions.run_and_verify_svnmover(None, [],
- '-U', repo_url, '-m', 'r2: create tree',
- 'rm', 'A',
- 'rm', 'iota',
+ '-U', repo_url, '-m', 'r1: create tree',
'mkdir', 'A', 'mkdir', 'A/B', 'mkdir', 'A/B/C',
'mkdir', 'M', 'mkdir', 'M/N', 'mkdir', 'M/N/O',
'mkdir', 'X', 'mkdir', 'X/Y', 'mkdir', 'X/Y/Z')
svntest.actions.run_and_verify_svnmover(None, [],
- '-U', repo_url, '-m', 'r3: nested replaces',
+ '-U', repo_url, '-m', 'r2: nested replaces',
*("""
rm A rm M rm X
cp HEAD X/Y/Z A cp HEAD A/B/C M cp HEAD M/N/O X
@@ -333,38 +371,31 @@ rm A/B/C/Y
# ### TODO: need a smarter run_and_verify_log() that verifies copyfrom
expected_output = svntest.verify.UnorderedRegexListOutput(map(re.escape, [
- ' R /A (from /X/Y/Z:2)',
- ' A /A/B (from /A/B:2)',
- ' R /A/B/C (from /X:2)',
- ' R /M (from /A/B/C:2)',
- ' A /M/N (from /M/N:2)',
- ' R /M/N/O (from /A:2)',
- ' R /X (from /M/N/O:2)',
- ' A /X/Y (from /X/Y:2)',
- ' R /X/Y/Z (from /M:2)',
+ ' R /A (from /X/Y/Z:1)',
+ ' A /A/B (from /A/B:1)',
+ ' R /A/B/C (from /X:1)',
+ ' R /M (from /A/B/C:1)',
+ ' A /M/N (from /M/N:1)',
+ ' R /M/N/O (from /A:1)',
+ ' R /X (from /M/N/O:1)',
+ ' A /X/Y (from /X/Y:1)',
+ ' R /X/Y/Z (from /M:1)',
' D /A/B/C/Y',
]) + [
- '^-', '^r3', '^-', '^Changed paths:',
+ '^-', '^r2', '^-', '^Changed paths:',
])
svntest.actions.run_and_verify_svn(expected_output, [],
- 'log', '-qvr3', repo_url)
+ 'log', '-qvr2', repo_url)
def merges(sbox):
"merges"
- sbox_build_svnmover(sbox)
+ sbox_build_svnmover(sbox, content=initial_content_ttb)
repo_url = sbox.repo_url
- # make a 'trunk' branch and a 'branches' directory
- # (r2)
- svntest.actions.run_and_verify_svnmover(None, [],
- '-U', repo_url,
- 'mkbranch', 'trunk',
- 'mkdir', 'branches')
-
# Create some nodes in trunk, each one named for how we will modify it.
# The name 'rm_no', for example, means we are going to 'rm' this node on
# trunk and make 'no' change on the branch.
- # (r3)
+ # (r2)
svntest.actions.run_and_verify_svnmover(None, [],
'-U', repo_url,
'mkdir', 'trunk/no_no',
@@ -375,12 +406,12 @@ def merges(sbox):
'mkdir', 'trunk/rm_mv',
'mkdir', 'trunk/mv_rm')
- # branch (r4)
+ # branch (r3)
svntest.actions.run_and_verify_svnmover(None, [],
'-U', repo_url,
'branch', 'trunk', 'branches/br1')
- # modify (r5, r6)
+ # modify (r4, r5)
svntest.actions.run_and_verify_svnmover(None, [],
'-U', repo_url + '/trunk',
'mkdir', 'add_no',
@@ -401,38 +432,29 @@ def merges(sbox):
# a merge that makes no changes
svntest.actions.run_and_verify_svnmover(None, [],
'-U', repo_url,
- 'merge', 'trunk', 'branches/br1', 'trunk@5')
+ 'merge', 'trunk', 'branches/br1', 'trunk@4')
# a merge that makes changes with no conflict
svntest.actions.run_and_verify_svnmover(None, [],
'-U', repo_url,
- 'merge', 'branches/br1', 'trunk', 'trunk@5')
+ 'merge', 'branches/br1', 'trunk', 'trunk@4')
# a merge that makes changes, with conflicts
svntest.actions.run_and_verify_svnmover(None, svntest.verify.AnyOutput,
'-U', repo_url,
- 'merge', 'trunk@6', 'branches/br1', 'trunk@3')
+ 'merge', 'trunk@5', 'branches/br1', 'trunk@2')
-@XFail() # bug: in r7 'bar' is plain-added instead of copied.
+@XFail() # bug: in r6 'bar' is plain-added instead of copied.
def merge_edits_with_move(sbox):
"merge_edits_with_move"
- sbox_build_svnmover(sbox)
+ sbox_build_svnmover(sbox, content=initial_content_ttb)
repo_url = sbox.repo_url
# ### This checks the traditional 'log' output, in which a move shows up
# as a delete and a set of adds.
- # make a 'trunk' branch and a 'branches' directory
- # (r2)
- test_svnmover(repo_url, [
- 'A /trunk',
- 'A /branches',
- ],
- 'mkbranch', 'trunk',
- 'mkdir', 'branches')
-
# create initial state in trunk
- # (r3)
+ # (r2)
test_svnmover(repo_url + '/trunk', [
'A /trunk/lib',
'A /trunk/lib/foo',
@@ -444,47 +466,47 @@ def merge_edits_with_move(sbox):
'mkdir', 'lib/foo/x',
'mkdir', 'lib/foo/y')
- # branch (r4)
+ # branch (r3)
test_svnmover(repo_url, [
- 'A /branches/br1 (from /trunk:3)',
+ 'A /branches/br1 (from /trunk:2)',
],
'branch', 'trunk', 'branches/br1')
- # on trunk: make edits under 'foo' (r5)
+ # on trunk: make edits under 'foo' (r4)
test_svnmover(repo_url + '/trunk', [
'D /trunk/lib/foo/x',
'D /trunk/lib/foo/y',
- 'A /trunk/lib/foo/y2 (from /trunk/lib/foo/y:4)',
+ 'A /trunk/lib/foo/y2 (from /trunk/lib/foo/y:3)',
'A /trunk/lib/foo/z',
],
'rm', 'lib/foo/x',
'mv', 'lib/foo/y', 'lib/foo/y2',
'mkdir', 'lib/foo/z')
- # on branch: move/rename 'foo' (r6)
+ # on branch: move/rename 'foo' (r5)
test_svnmover(repo_url + '/branches/br1', [
- 'A /branches/br1/bar (from /branches/br1/lib/foo:5)',
+ 'A /branches/br1/bar (from /branches/br1/lib/foo:4)',
'D /branches/br1/lib/foo',
],
'mv', 'lib/foo', 'bar')
- # merge the move to trunk (r7)
+ # merge the move to trunk (r6)
test_svnmover(repo_url, [
- 'A /trunk/bar (from /trunk/lib/foo:6)',
- 'A /trunk/bar/y2 (from /trunk/lib/foo/y2:6)',
- 'A /trunk/bar/z (from /trunk/lib/foo/z:6)',
+ 'A /trunk/bar (from /trunk/lib/foo:5)',
+ 'A /trunk/bar/y2 (from /trunk/lib/foo/y2:5)',
+ 'A /trunk/bar/z (from /trunk/lib/foo/z:5)',
'D /trunk/lib/foo',
],
- 'merge', 'branches/br1@6', 'trunk', 'trunk@3')
+ 'merge', 'branches/br1@5', 'trunk', 'trunk@2')
- # merge the edits in trunk (excluding the merge r7) to branch (r8)
+ # merge the edits in trunk (excluding the merge r6) to branch (r7)
test_svnmover(repo_url, [
'D /branches/br1/bar/x',
'D /branches/br1/bar/y',
- 'A /branches/br1/bar/y2 (from /branches/br1/bar/y:7)',
+ 'A /branches/br1/bar/y2 (from /branches/br1/bar/y:6)',
'A /branches/br1/bar/z',
],
- 'merge', 'trunk@6', 'branches/br1', 'trunk@3')
+ 'merge', 'trunk@5', 'branches/br1', 'trunk@2')
######################################################################