Log [[[ New test for 'svnadmin lslocks' and 'svnadmin rmlocks'.
* subversion/tests/cmdline/svnadmin_tests.py (test_lslocks_and_rmlocks): New test. (test_list): Run it. Patch by: Noorul Islam K M <noorul{_AT_}collab.net> ]]] Thanks and Regards Noorul
Index: subversion/tests/cmdline/svnadmin_tests.py =================================================================== --- subversion/tests/cmdline/svnadmin_tests.py (revision 1145067) +++ subversion/tests/cmdline/svnadmin_tests.py (working copy) @@ -26,6 +26,7 @@ # General modules import os +import re import shutil import sys @@ -1381,6 +1382,92 @@ 'STDERR', expected_stderr, errput): raise svntest.Failure +def test_lslocks_and_rmlocks(sbox): + "test 'svnadmin lslocks' and 'svnadmin rmlocks'" + + def verify_lslocks_output(expected, actual): + """Verify expected output and actual output match.""" + if len(expected) != len(actual): + raise svntest.verify.SVNUnexpectedStdout( + "Expected %d lines, found %d lines" + % (len(expected), len(actual))) + + for index in range(len(actual)): + if not re.match(expected[index], actual[index]): + raise svntest.verify.SVNUnexpectedStdout( + "\nEXPECTED:\n%s\nACTUAL:\n%s" + % ('\n'.join(expected), ''.join(actual))) + + sbox.build(create_wc=False) + iota_url = sbox.repo_url + '/iota' + lambda_url = sbox.repo_url + '/A/B/lambda' + + exit_code, output, errput = svntest.main.run_svnadmin("lslocks", + sbox.repo_dir) + + if exit_code or errput or output: + print("Error: 'lslocks' failed") + raise svntest.Failure + + expected_output = ["'A/B/lambda' locked by user 'jrandom'.\n", + "'iota' locked by user 'jrandom'.\n"] + + # Lock iota and A/B/lambda using svn client + svntest.actions.run_and_verify_svn(None, expected_output, + [], "lock", "-m", "Locking files", + iota_url, lambda_url) + + expected_output = [ + "Path: /A/B/lambdas", + "UUID Token: opaquelocktoken.*", + "Owner: jrandom", + "Created: .*", + "Expires: ", + "Comment \(1 line\):", + "Locking files", + "\n", # empty line + "Path: /iota", + "UUID Token: opaquelocktoken.*", + "Owner: jrandom", + "Created: .*", + "Expires: ", + "Comment \(1 line\):", + "Locking files", + "\n" # empty line + ] + + # List all locks + exit_code, output, errput = svntest.main.run_svnadmin("lslocks", + sbox.repo_dir) + + if errput: + print("Error: 'lsocks' failed") + raise svntest.Failure + + verify_lslocks_output(expected_output, output) + + # List lock in path /A + exit_code, output, errput = svntest.main.run_svnadmin("lslocks", + sbox.repo_dir, + "A") + if errput: + print("Error: 'lsocks' failed") + raise svntest.Failure + + verify_lslocks_output(expected_output[:len(output)], output) + + # Remove locks + exit_code, output, errput = svntest.main.run_svnadmin("rmlocks", + sbox.repo_dir, + "iota", + "A/B/lambda") + expected_output = ["Removed lock on '/iota'.\n", + "Removed lock on '/A/B/lambda'.\n"] + + svntest.verify.verify_outputs( + "Unexpected output while running 'svnadmin rmlocks'.", + output, [], expected_output, None) + ######################################################################## # Run the tests @@ -1410,6 +1497,7 @@ hotcopy_symlink, load_bad_props, verify_non_utf8_paths, + test_lslocks_and_rmlocks, ] if __name__ == '__main__':