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

Reply via email to