summaryrefslogtreecommitdiff
path: root/subversion/tests/cmdline/input_validation_tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'subversion/tests/cmdline/input_validation_tests.py')
-rwxr-xr-xsubversion/tests/cmdline/input_validation_tests.py82
1 files changed, 63 insertions, 19 deletions
diff --git a/subversion/tests/cmdline/input_validation_tests.py b/subversion/tests/cmdline/input_validation_tests.py
index 20c0fef..a454ac9 100755
--- a/subversion/tests/cmdline/input_validation_tests.py
+++ b/subversion/tests/cmdline/input_validation_tests.py
@@ -104,25 +104,22 @@ def invalid_copy_target(sbox):
sbox.build(read_only=True)
mu_path = os.path.join('A', 'mu')
C_path = os.path.join('A', 'C')
- run_and_verify_svn_in_wc(sbox, "svn: E155007: Path '.*' is not a directory",
+ run_and_verify_svn_in_wc(sbox, "svn: E155(007|010): Path '.*' is not a directory",
'copy', mu_path, C_path, "iota")
def invalid_delete_targets(sbox):
"invalid targets for 'delete'"
sbox.build(read_only=True)
for (target1, target2) in [("iota", "^/"), ("file://", "iota")]:
- run_and_verify_svn_in_wc(sbox, "svn: E205000: Cannot mix repository and working "
+ run_and_verify_svn_in_wc(sbox, "svn: E200009: Cannot mix repository and working "
"copy targets", 'delete', target1, target2)
def invalid_diff_targets(sbox):
"invalid targets for 'diff'"
sbox.build(read_only=True)
- for (target1, target2) in [("iota", "^/"), ("file://", "iota")]:
- run_and_verify_svn_in_wc(sbox, "svn: E205000: Cannot mix repository and working "
- "copy targets", 'diff', target1, target2)
- run_and_verify_svn_in_wc(sbox, "svn: E200007: Summarizing diff can only compare "
- "repository to repository",
- 'diff', '--summarize', "iota", "A")
+ for (target1, target2, target3) in [("iota", "^/", "A/mu"), ("file://", "iota", "A/mu")]:
+ run_and_verify_svn_in_wc(sbox, "svn: E200009: Cannot mix repository and working "
+ "copy targets", 'diff', target1, target2, target3)
def invalid_export_targets(sbox):
"invalid targets for 'export'"
@@ -154,18 +151,23 @@ def invalid_log_targets(sbox):
def invalid_merge_args(sbox):
"invalid arguments for 'merge'"
sbox.build(read_only=True)
- run_and_verify_svn_in_wc(sbox, "svn: E195002: A working copy merge source needs "
- "an explicit revision", 'merge', 'iota', '^/')
- for (src, target) in [('iota@HEAD', '^/'), ('iota@BASE', 'file://')]:
- run_and_verify_svn_in_wc(sbox, "svn: E205000: Merge sources must both be either "
- "paths or URLs", 'merge', src, target)
- run_and_verify_svn_in_wc(sbox, "svn: E155010: Path '.*' does not exist",
- 'merge', 'iota@BASE', 'iota@HEAD', 'nonexistent')
+ for args in [('iota', 'A/mu@HEAD'),
+ ('iota@BASE', 'A/mu@HEAD')]:
+ run_and_verify_svn_in_wc(sbox, "svn: E195002: .* working copy .* revision",
+ 'merge', *args)
+ for args in [(sbox.repo_url, 'A@1', 'A'),
+ ('^/A', 'A@HEAD', 'A'),
+ ('A@HEAD', '^/A', 'A'),
+ ('A@HEAD', '^/A')]:
+ run_and_verify_svn_in_wc(sbox, "svn: E205000: Merge sources must both "
+ "be either paths or URLs", 'merge', *args)
+ run_and_verify_svn_in_wc(sbox, "svn: E155010: .* was not found",
+ 'merge', '^/@0', '^/@1', 'nonexistent')
run_and_verify_svn_in_wc(sbox, "svn: E205000: Too many arguments given",
'merge', '-c42', '^/A/B', '^/A/C', 'iota')
run_and_verify_svn_in_wc(sbox, "svn: E205000: Cannot specify a revision range with" +
" two URLs", 'merge', '-c42', '^/mu', '^/')
- run_and_verify_svn_in_wc(sbox, "svn: E155010: Path '.*' does not exist",
+ run_and_verify_svn_in_wc(sbox, "svn: E155010: .* was not found",
'merge', '-c42', '^/mu', 'nonexistent')
def invalid_wcpath_upgrade(sbox):
@@ -200,14 +202,14 @@ def invalid_lock_targets(sbox):
"wc paths and repo URL target mixture for 'lock'"
sbox.build(read_only=True)
for (target1, target2) in [("iota", "^/"), ("file://", "iota")]:
- run_and_verify_svn_in_wc(sbox, "svn: E205000: Cannot mix repository and working "
+ run_and_verify_svn_in_wc(sbox, "svn: E200009: Cannot mix repository and working "
"copy targets", 'lock', target1, target2)
def invalid_unlock_targets(sbox):
"wc paths and repo URL target mixture for 'unlock'"
sbox.build(read_only=True)
for (target1, target2) in [("iota", "^/"), ("file://", "iota")]:
- run_and_verify_svn_in_wc(sbox, "svn: E205000: Cannot mix repository and working "
+ run_and_verify_svn_in_wc(sbox, "svn: E200009: Cannot mix repository and working "
"copy targets", 'unlock', target1, target2)
def invalid_status_targets(sbox):
@@ -241,7 +243,7 @@ def invalid_relocate_targets(sbox):
def invalid_mkdir_targets(sbox):
"invalid targets for 'mkdir'"
sbox.build(read_only=True)
- run_and_verify_svn_in_wc(sbox, "svn: E205000: Cannot mix repository and working "
+ run_and_verify_svn_in_wc(sbox, "svn: E200009: Cannot mix repository and working "
"copy targets", 'mkdir', "folder", "^/folder")
def invalid_update_targets(sbox):
@@ -250,6 +252,47 @@ def invalid_update_targets(sbox):
run_and_verify_svn_in_wc(sbox, "svn:.*is not a local path", 'update',
"^/")
+def delete_repos_root(sbox):
+ "do stupid things with the repository root"
+
+ sbox.build(read_only=True)
+ wc_dir = sbox.wc_dir
+ repo_url = sbox.repo_url
+
+ expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+
+ expected_status.tweak('A/D/G', switched='S')
+ expected_status.remove('A/D/G/pi', 'A/D/G/rho', 'A/D/G/tau')
+ svntest.actions.run_and_verify_switch(sbox.wc_dir, sbox.ospath('A/D/G'),
+ repo_url,
+ None, None, expected_status,
+ None, None, None, None, None, None,
+ '--set-depth', 'empty', '--ignore-ancestry')
+
+ expected_status.tweak('A/B/F', switched='S')
+ svntest.actions.run_and_verify_switch(sbox.wc_dir, sbox.ospath('A/B/F'),
+ repo_url,
+ None, None, expected_status,
+ None, None, None, None, None, None,
+ '--depth', 'empty', '--ignore-ancestry')
+
+ # Delete the wcroot (which happens to be the repository root)
+ expected_error = 'svn: E155035: \'.*\' is the root of a working copy ' + \
+ 'and cannot be deleted'
+ svntest.actions.run_and_verify_svn('Delete root', [], expected_error,
+ 'rm', wc_dir)
+
+ # This should produce some error, because we can never commit this
+ expected_error = '.*repository root.*'
+ svntest.actions.run_and_verify_svn('Move root', None, expected_error,
+ 'mv', sbox.ospath('A/D/G'),
+ sbox.ospath('Z'))
+
+ # And this currently fails with another nasty error about a wc-lock
+ expected_error = '.*repository root.*'
+ svntest.actions.run_and_verify_svn('Delete root', [], expected_error,
+ 'rm', sbox.ospath('A/B/F'))
+
########################################################################
# Run the tests
@@ -279,6 +322,7 @@ test_list = [ None,
invalid_relocate_targets,
invalid_mkdir_targets,
invalid_update_targets,
+ delete_repos_root,
]
if __name__ == '__main__':