Noorul Islam K M <noo...@collab.net> writes: > +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)))
Can't we use the verify.py stuff instead? > + > + 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"] What determines the order of the locks? I think it should be using UnorderedOutput. > + # 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", 'lamdbas' ? > + "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 > + ] That's probably a reasonably well-defined order. > + > + # 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"] That also looks like it should be using UnorderedOutput. > + > + 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__': -- uberSVN: Apache Subversion Made Easy http://www.uberSVN.com