diff options
Diffstat (limited to 'subversion/tests/cmdline/input_validation_tests.py')
-rwxr-xr-x | subversion/tests/cmdline/input_validation_tests.py | 82 |
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__': |