[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: [PATCH] New test for 'svnadmin lslocks' and 'svnadmin rmlocks'

From: Philip Martin <philip.martin_at_wandisco.com>
Date: Mon, 25 Jul 2011 15:42:48 +0100

Noorul Islam K M <noorul_at_collab.net> writes:

> Index: subversion/tests/cmdline/svnadmin_tests.py
> ===================================================================
> --- subversion/tests/cmdline/svnadmin_tests.py (revision 1150581)
> +++ subversion/tests/cmdline/svnadmin_tests.py (working copy)
> @@ -26,6 +26,7 @@
>
> # General modules
> import os
> +import re
> import shutil
> import sys
>
> @@ -33,6 +34,7 @@
> import svntest
> from svntest.verify import SVNExpectedStdout, SVNExpectedStderr
> from svntest.verify import SVNUnexpectedStderr
> +from svntest.verify import UnorderedOutput
> from svntest.main import SVN_PROP_MERGEINFO
>
> # (abbreviation)
> @@ -1381,6 +1383,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."""
> + expected_output = svntest.verify.UnorderedRegexOutput(expected)
> + svntest.verify.compare_and_display_lines('message', 'label',
> + expected_output, output)
> + svntest.verify.verify_exit_code(None, exit_code, 0)

So exit_code is the variable of that name that is in scope at the call
site? I'm not much of a Python expert, is that good practice?

> +
> + 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

Don't use print, use

    raise svntest.Failure("...")

> +
> + expected_output = UnorderedOutput(
> + ["'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/lambda",
> + "UUID Token: opaquelocktoken",
> + "Owner: jrandom",
> + "Created:",
> + "Expires:",
> + "Comment \(1 line\):",
> + "Locking files",
> + "Path: /iota",
> + "UUID Token: opaquelocktoken.*",
> + "\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

       raise SVNUnexpectedStderr(errput)

> +
> + 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
> +
> + expected_output = [
> + "Path: /A/B/lambda",
> + "UUID Token: opaquelocktoken",
> + "Owner: jrandom",
> + "Created:",
> + "Expires:",
> + "Comment \(1 line\):",
> + "Locking files",
> + "\n", # empty line
> + ]
> +
> + verify_lslocks_output(expected_output, output)
> +
> + # Remove locks
> + exit_code, output, errput = svntest.main.run_svnadmin("rmlocks",
> + sbox.repo_dir,
> + "iota",
> + "A/B/lambda")
> + expected_output = UnorderedOutput(["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 +1498,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
Received on 2011-07-25 16:43:31 CEST

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.