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

Re: [PATCH] Re: Code cleanup: Harmonized tests (Take 2)

From: Erik Hülsmann <e.huelsmann_at_gmx.net>
Date: 2003-08-30 19:24:09 CEST
('binary' encoding is not supported, stored as-is) Sorry, meant to send the message below to the list too. Was accedentally only sent to cmpilato and Fitz

bye,

Erik

------- Original message -------
Hi!

Ok, I sat down and started rewriting svntest.main.svn_run to svntest.actions.run_and_verify_svn calls. I left alone those instances where the context does not do any output-checks.

The code is not completely finished: there is one tests which keeps failing. I have not been able to find out why yet:
 
XPASS: commit_tests.py 15: hook testing

Looking at the code I don't understand why commit_tests.py 15 should be marked XFail.

I thought I could submit this before the final state of the patch, because it would take quite some time to review it anyway. And I would have some time to fix commit_tests 15 before the patch is accepted anyway.

One last remark cmpilato wrote he would have liked to have the space changes as a separate patch. I decided that if you all don't mind too much, I could make a separate patch doing the rest of the space changes, but leaving the current patch as-is. Since it would take so much time to undo the space-change stuff...

BTW: the patch statistics have become a bit more aggressive than they were:
Total number of lines: 6100
Number of lines added: 1236
Number of lines removed: 1819

Let me know what you think.

bye,

Erik.

Log:
[[[
Rewrite the test suite to new philosophy where
exceptions are raised to pass errors back to
the caller.

* subversion/tests/clients/cmdline/basic_tests.py
* subversion/tests/clients/cmdline/commit_tests.py
* subversion/tests/clients/cmdline/copy_tests.py
* subversion/tests/clients/cmdline/diff_tests.py
* subversion/tests/clients/cmdline/export_tests.py
* subversion/tests/clients/cmdline/externals_tests.py
* subversion/tests/clients/cmdline/log_tests.py
* subversion/tests/clients/cmdline/merge_tests.py
* subversion/tests/clients/cmdline/prop_tests.py
* subversion/tests/clients/cmdline/schedule_tests.py
* subversion/tests/clients/cmdline/stat_tests.py
* subversion/tests/clients/cmdline/svnadmin_tests.py
* subversion/tests/clients/cmdline/svnlook_tests.py
* subversion/tests/clients/cmdline/trans_tests.py
* subversion/tests/clients/cmdline/update_tests.py
* subversion/tests/clients/cmdline/utf8_tests.py

]]]

>> "B. W. Fitzpatrick" <fitz@red-bean.com> writes:
>>
>> > > > Last week I submitted a little change to the svnversion test. Before
>> > > > the test was found acceptable, I had to rewrite it so that it was
>> > > > written as a 'new style' test: one which uses the Python exception
>> > > > handling instead of the return 0 / return 1 structure.
>> > >
>> > > I'm reviewing this now.
>> >
>> > I have a few comments about the patch:
>> >
>> > 1. Yay!
>> >
>> > 2. I'd like to see the whitespace changes in a separate patch, but
>> > that's not really A Big Deal.
>> >
>> > 3. I found a couple of places where you're doing this:
>> >
>> > stat_output, err_output = svntest.main.run_svn(None, 'stat', '-vN')
>> > if err_output:
>> > raise svntest.Failure
>> >
>> > I'd like to see you use
>> >
>> > run_and_verify_svn(message, expected_stdout, expected_stderr, *varargs):
>> >
>> > in these cases. It integrates the checking for different outputs on
>> > stderr and stdout. I've already converted a bunch of the tests to use
>> > it, so there are plenty of examples.
>>
>> These fixes, plus addressing the "raise 1" oopsy, plus my sudden lack
>> of immediate time to review and apply the patch are good reasons to
>> suggest that the patch be resubmitted with the proper fixes in place.
>> At that later date, perhaps I'll have more review/application time to
>> offer.
>
>OK. Erik, if you want to make those changes and resubmit, I'll do my
>best to review ASAP, but I can't guarantee anything this week cause
>I'm swamperoonied.
>
>-Fitz
>

Index: diff_tests.py
===================================================================
--- diff_tests.py (revision 6929)
+++ diff_tests.py (working copy)
@@ -21,6 +21,7 @@
 
 # Our testing module
 import svntest
+from svntest import SVNAnyOutput
 
 # (abbreviation)
 Skip = svntest.testcase.Skip
@@ -405,7 +406,6 @@
   "multiple revisions diff'd forwards and backwards"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # rev 2
@@ -445,7 +445,6 @@
   "non-recursive behaviour"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   change_diff_commit_diff(wc_dir, 1,
@@ -484,7 +483,6 @@
   "diff only part of the repository"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   was_cwd = os.getcwd()
@@ -511,7 +509,6 @@
   "non version controlled files"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   svntest.main.file_append(os.path.join(wc_dir, 'A', 'D', 'foo'), "a new file")
@@ -534,8 +531,8 @@
   "pure repository diff update a file"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
+
   was_cwd = os.getcwd()
   os.chdir(wc_dir)
 
@@ -626,27 +623,26 @@
   ### really ought to check that the property diff gets output.
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   current_dir = os.getcwd();
   os.chdir(sbox.wc_dir);
   try:
+ svntest.actions.run_and_verify_svn( None, None, [],
+ 'propset',
+ 'svn:eol-style', 'native', 'iota')
 
- output, errput = svntest.main.run_svn(None, 'propset',
- 'svn:eol-style', 'native', 'iota')
- if errput: raise svntest.Failure
- output, errput = svntest.main.run_svn(None, 'ci', '-m', 'empty-msg')
- if errput: raise svntest.Failure
+ svntest.actions.run_and_verify_svn( None, None, [],
+ 'ci', '-m', 'empty-msg')
 
- output, errput = svntest.main.run_svn(None, 'diff', '-r', '1:2')
- if errput: raise svntest.Failure
+ svntest.actions.run_and_verify_svn( None, None, [],
+ 'diff', '-r', '1:2')
 
- output, errput = svntest.main.run_svn(None, 'diff', '-r', '2:1')
- if errput: raise svntest.Failure
+ svntest.actions.run_and_verify_svn( None, None, [],
+ 'diff', '-r', '2:1')
 
- output, errput = svntest.main.run_svn(None, 'diff', '-r', '1')
- if errput: raise svntest.Failure
+ svntest.actions.run_and_verify_svn( None, None, [],
+ 'diff', '-r', '1')
 
   finally:
     os.chdir(current_dir)
@@ -661,7 +657,6 @@
   "don't diff file marked as binary type"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
   
   # Add a binary file to the project.
@@ -689,10 +684,9 @@
     })
 
   # Commit the new binary file, creating revision 2.
- if svntest.actions.run_and_verify_commit(wc_dir, expected_output,
- expected_status, None,
- None, None, None, None, wc_dir):
- raise svntest.Failure
+ svntest.actions.run_and_verify_commit(wc_dir, expected_output,
+ expected_status, None,
+ None, None, None, None, wc_dir)
 
   # Update the whole working copy to HEAD (rev 2)
   expected_output = svntest.wc.State(wc_dir, {})
@@ -708,13 +702,12 @@
     'A/theta' : Item(status=' ', wc_rev=2, repos_rev=2),
     })
 
- if svntest.actions.run_and_verify_update(wc_dir,
- expected_output,
- expected_disk,
- expected_status,
- None, None, None, None, None,
- 1): # verify props, too.
- raise svntest.Failure
+ svntest.actions.run_and_verify_update(wc_dir,
+ expected_output,
+ expected_disk,
+ expected_status,
+ None, None, None, None, None,
+ 1) # verify props, too.
 
   # Make a local mod to the binary file.
   svntest.main.file_append(theta_path, "some extra junk")
@@ -757,10 +750,9 @@
     'A/theta' : Item(status=' ', wc_rev=3, repos_rev=3),
     })
 
- if svntest.actions.run_and_verify_commit(wc_dir, expected_output,
- expected_status, None,
- None, None, None, None, wc_dir):
- raise svntest.Failure
+ svntest.actions.run_and_verify_commit(wc_dir, expected_output,
+ expected_status, None,
+ None, None, None, None, wc_dir)
 
   # Third diff use-case: 'svn diff -r2:3 wc' will compare two
   # repository trees.
@@ -812,12 +804,11 @@
   # Modify the file to ensure that the diff is non-empty.
   svntest.main.file_append(new_mu_path, "\nActually, it's a new mu.")
 
- diff_output, err_output = svntest.main.run_svn(None, 'diff', '-r', 'HEAD',
- new_mu_path)
- if diff_output == []:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, SVNAnyOutput, None,
+ 'diff', '-r', 'HEAD', new_mu_path)
 
 
+
 #----------------------------------------------------------------------
 # Regression test for issue #977: make 'svn diff -r BASE:N' compare a
 # repository tree against the wc's text-bases, rather than the wc's
@@ -827,7 +818,6 @@
   "diff text-bases against repository"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   iota_path = os.path.join(sbox.wc_dir, 'iota')
@@ -863,11 +853,9 @@
   # If we run 'svn diff -r 1', we should see diffs that include *both*
   # the rev2 changes and local mods. That's because the working files
   # are being compared to the repository.
- diff_output, err_output = svntest.main.run_svn(None, 'diff', '-r', '1',
- wc_dir)
- if err_output:
- raise svntest.Failure
-
+ diff_output, err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'diff',
+ '-r', '1', wc_dir)
   line1 = "+This is the file 'iota'.some rev2 iota text.an iota local mod.\n"
 
   for line in diff_output:
@@ -879,11 +867,9 @@
   # If we run 'svn diff -r BASE:1', we should see diffs that only show
   # the rev2 changes and NOT the local mods. That's because the
   # text-bases are being compared to the repository.
- diff_output, err_output = svntest.main.run_svn(None, 'diff', '-r',
- 'BASE:1', wc_dir)
- if err_output:
- raise svntest.Failure
-
+ diff_output, err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'diff', '-r', 'BASE:1',
+ wc_dir)
   line1 = "-This is the file 'iota'.some rev2 iota text.\n"
 
   for line in diff_output:
@@ -898,10 +884,9 @@
   # For example, we just ran 'svn diff -rBASE:1'. The output should
   # look exactly the same as 'svn diff -r2:1'. (If you remove the
   # header commentary)
- diff_output2, err_output = svntest.main.run_svn(None, 'diff', '-r',
- '2:1', wc_dir)
- if err_output:
- raise svntest.Failure
+ diff_output2, err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'diff', '-r', '2:1',
+ wc_dir)
 
   diff_output[2:4] = []
   diff_output2[2:4] = []
@@ -910,15 +895,14 @@
     raise svntest.Failure
 
   # and similarly, does 'svn diff -r1:2' == 'svn diff -r1:BASE' ?
- diff_output, err_output = svntest.main.run_svn(None, 'diff', '-r',
- '1:2', wc_dir)
- if err_output:
- raise svntest.Failure
+ diff_output, err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'diff',
+ '-r', '1:2', wc_dir)
   
- diff_output2, err_output = svntest.main.run_svn(None, 'diff', '-r',
- '1:BASE', wc_dir)
- if err_output:
- raise svntest.Failure
+ diff_output2, err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'diff',
+ '-r', '1:BASE',
+ wc_dir)
 
   diff_output[2:4] = []
   diff_output2[2:4] = []
@@ -942,25 +926,21 @@
   # once again, verify that -r1:2 and -r1:BASE look the same, as do
   # -r2:1 and -rBASE:1. None of these diffs should mention the
   # scheduled addition or deletion.
- diff_output, err_output = svntest.main.run_svn(None, 'diff', '-r',
- '1:2', wc_dir)
- if err_output:
- raise svntest.Failure
+ diff_output, err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'diff', '-r',
+ '1:2', wc_dir)
 
- diff_output2, err_output = svntest.main.run_svn(None, 'diff', '-r',
- '1:BASE', wc_dir)
- if err_output:
- raise svntest.Failure
+ diff_output2, err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'diff', '-r',
+ '1:BASE', wc_dir)
 
- diff_output3, err_output = svntest.main.run_svn(None, 'diff', '-r',
- '2:1', wc_dir)
- if err_output:
- raise svntest.Failure
+ diff_output3, err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'diff', '-r',
+ '2:1', wc_dir)
 
- diff_output4, err_output = svntest.main.run_svn(None, 'diff', '-r',
- 'BASE:1', wc_dir)
- if err_output:
- raise svntest.Failure
+ diff_output4, err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'diff', '-r',
+ 'BASE:1', wc_dir)
 
   diff_output[2:4] = []
   diff_output2[2:4] = []
@@ -1008,15 +988,13 @@
   
   # Now 'svn diff -r3:2' should == 'svn diff -rBASE:2', showing the
   # removal of changes to iota, the adding of mu, and deletion of newfile.
- diff_output, err_output = svntest.main.run_svn(None, 'diff', '-r',
- '3:2', wc_dir)
- if err_output:
- raise svntest.Failure
+ diff_output, err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'diff', '-r',
+ '3:2', wc_dir)
 
- diff_output2, err_output = svntest.main.run_svn(None, 'diff', '-r',
- 'BASE:2', wc_dir)
- if err_output:
- raise svntest.Failure
+ diff_output2, err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'diff', '-r',
+ 'BASE:2', wc_dir)
 
   # to do the comparison, remove all output lines starting with +++ or ---
   re_infoline = re.compile('^(\+\+\+|---).*$')
@@ -1043,7 +1021,6 @@
   "repos-repos diff on item deleted from HEAD"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   A_path = os.path.join(sbox.wc_dir, 'A')
@@ -1091,10 +1068,9 @@
   # Doing an 'svn diff -r1:2' on the URL of directory A should work,
   # especially over the DAV layer.
   the_url = sbox.repo_url + '/A'
- diff_output, err_output = svntest.main.run_svn(None, 'diff', '-r',
- '1:2', the_url)
- if err_output:
- raise svntest.Failure
+ diff_output = svntest.actions.run_and_verify_svn(None, None, [],
+ 'diff', '-r',
+ '1:2', the_url)
 
 
 #----------------------------------------------------------------------
@@ -1174,64 +1150,64 @@
   A_url = svntest.main.current_repo_url + '/A'
   A2_url = svntest.main.current_repo_url + '/A2'
 
- out, err = svntest.main.run_svn(None, 'cp', '-m', 'log msg', A_url, A2_url)
- if err: raise svntest.Failure
+ svntest.actions.run_and_verify_svn( None, None, [],
+ 'cp', '-m', 'log msg',
+ A_url, A2_url)
 
- out, err = svntest.main.run_svn(None, 'up', sbox.wc_dir)
- if err: raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'up', sbox.wc_dir)
 
   A_alpha = os.path.join(sbox.wc_dir, 'A', 'B', 'E', 'alpha')
   A2_alpha = os.path.join(sbox.wc_dir, 'A2', 'B', 'E', 'alpha')
 
   svntest.main.file_append(A_alpha, "\nfoo\n")
- out, err = svntest.main.run_svn(None, 'ci', '-m', 'log msg', sbox.wc_dir)
- if err: raise svntest.Failure
+ out = svntest.actions.run_and_verify_svn(None, None, [],
+ 'ci', '-m', 'log msg', sbox.wc_dir)
 
   svntest.main.file_append(A2_alpha, "\nbar\n")
- out, err = svntest.main.run_svn(None, 'ci', '-m', 'log msg', sbox.wc_dir)
- if err: raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'ci', '-m', 'log msg', sbox.wc_dir)
 
   svntest.main.file_append(A_alpha, "zig\n")
 
   # Compare repository file on one branch against repository file on
   # another branch
   rel_path = os.path.join('B', 'E', 'alpha')
- diff_output, err_output = svntest.main.run_svn(None, 'diff',
- '--old', A_url,
- '--new', A2_url,
- rel_path)
- if err_output: raise svntest.Failure
+ diff_output, err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'diff',
+ '--old', A_url,
+ '--new', A2_url,
+ rel_path)
   verify_expected_output(diff_output, "-foo")
   verify_expected_output(diff_output, "+bar")
 
   # Same again but using whole branch
- diff_output, err_output = svntest.main.run_svn(None, 'diff',
- '--old', A_url,
- '--new', A2_url)
- if err_output: raise svntest.Failure
+ diff_output, err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'diff',
+ '--old', A_url,
+ '--new', A2_url)
   verify_expected_output(diff_output, "-foo")
   verify_expected_output(diff_output, "+bar")
 
   # Compare two repository files on different branches
- diff_output, err_output = svntest.main.run_svn(None, 'diff',
- A_url + '/B/E/alpha',
- A2_url + '/B/E/alpha')
- if err_output: raise svntest.Failure
+ diff_output, err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'diff',
+ A_url + '/B/E/alpha',
+ A2_url + '/B/E/alpha')
   verify_expected_output(diff_output, "-foo")
   verify_expected_output(diff_output, "+bar")
 
   # Compare two versions of a file on a single branch
- diff_output, err_output = svntest.main.run_svn(None, 'diff',
- A_url + '/B/E/alpha@2',
- A_url + '/B/E/alpha@3')
- if err_output: raise svntest.Failure
+ diff_output, err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'diff',
+ A_url + '/B/E/alpha@2',
+ A_url + '/B/E/alpha@3')
   verify_expected_output(diff_output, "+foo")
 
   # Compare identical files on different branches
- diff_output, err_output = svntest.main.run_svn(None, 'diff',
- A_url + '/B/E/alpha@2',
- A2_url + '/B/E/alpha@3')
- if diff_output or err_output: raise svntest.Failure
+ diff_output, err = svntest.actions.run_and_verify_svn(
+ None, [], [],
+ 'diff', A_url + '/B/E/alpha@2', A2_url + '/B/E/alpha@3')
 
 
 #----------------------------------------------------------------------
@@ -1243,22 +1219,23 @@
   A_url = svntest.main.current_repo_url + '/A'
   A2_url = svntest.main.current_repo_url + '/A2'
 
- out, err = svntest.main.run_svn(None, 'cp', '-m', 'log msg', A_url, A2_url)
- if err: raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'cp', '-m', 'log msg',
+ A_url, A2_url)
 
- out, err = svntest.main.run_svn(None, 'up', sbox.wc_dir)
- if err: raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'up', sbox.wc_dir)
 
   A_alpha = os.path.join(sbox.wc_dir, 'A', 'B', 'E', 'alpha')
   A2_alpha = os.path.join(sbox.wc_dir, 'A2', 'B', 'E', 'alpha')
 
   svntest.main.file_append(A_alpha, "\nfoo\n")
- out, err = svntest.main.run_svn(None, 'ci', '-m', 'log msg', sbox.wc_dir)
- if err: raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'ci', '-m', 'log msg', sbox.wc_dir)
 
   svntest.main.file_append(A2_alpha, "\nbar\n")
- out, err = svntest.main.run_svn(None, 'ci', '-m', 'log msg', sbox.wc_dir)
- if err: raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'ci', '-m', 'log msg', sbox.wc_dir)
 
   svntest.main.file_append(A_alpha, "zig\n")
 
@@ -1266,19 +1243,20 @@
   # another branch
   A_path = os.path.join(sbox.wc_dir, 'A')
   rel_path = os.path.join('B', 'E', 'alpha')
- diff_output, err_output = svntest.main.run_svn(None, 'diff',
- '--old', A2_url,
- '--new', A_path,
- rel_path)
- if err_output: raise svntest.Failure
+ diff_output, err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'diff',
+ '--old', A2_url,
+ '--new', A_path,
+ rel_path)
   verify_expected_output(diff_output, "-bar")
   verify_expected_output(diff_output, "+foo")
   verify_expected_output(diff_output, "+zig")
 
   # Same again but using whole branch
- diff_output, err_output = svntest.main.run_svn(None, 'diff',
- '--old', A2_url,
- '--new', A_path)
+ diff_output, err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'diff',
+ '--old', A2_url,
+ '--new', A_path)
   verify_expected_output(diff_output, "-bar")
   verify_expected_output(diff_output, "+foo")
   verify_expected_output(diff_output, "+zig")
@@ -1299,40 +1277,42 @@
   os.remove(iota_path)
   svntest.main.file_append(iota_path, "foo\nbar\nsnafu\n")
   
- out, err = svntest.main.run_svn(None, 'ci', '-m', 'log msg', iota_path)
- if err: raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'ci', '-m', 'log msg', iota_path)
 
   # Now, copy the file elsewhere, twice.
- out, err = svntest.main.run_svn(None, 'cp', '-m', 'log msg',
- iota_url, iota_copy_url)
- if err: raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'cp', '-m', 'log msg',
+ iota_url, iota_copy_url)
 
- out, err = svntest.main.run_svn(None, 'cp', '-m', 'log msg',
- iota_url, iota_copy2_url)
- if err: raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'cp', '-m', 'log msg',
+ iota_url, iota_copy2_url)
 
   # Update (to get the copies)
- out, err = svntest.main.run_svn(None, 'up', sbox.wc_dir)
- if err: raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'up', sbox.wc_dir)
 
   # Now, make edits to one of the copies of iota, and commit.
   os.remove(iota_copy_path)
   svntest.main.file_append(iota_copy_path, "foo\nsnafu\nabcdefg\nopqrstuv\n")
 
- out, err = svntest.main.run_svn(None, 'ci', '-m', 'log msg', iota_copy_path)
- if err: raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'ci', '-m', 'log msg', iota_copy_path)
 
   # Finally, do a diff between the first and second copies of iota,
   # and verify that we got the expected lines. And then do it in reverse!
- out, err = svntest.main.run_svn(None, 'diff', iota_copy_url, iota_copy2_url)
- if err: raise svntest.Failure
+ out, err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'diff',
+ iota_copy_url, iota_copy2_url)
 
   verify_expected_output(out, "+bar")
   verify_expected_output(out, "-abcdefg")
   verify_expected_output(out, "-opqrstuv")
 
- out, err = svntest.main.run_svn(None, 'diff', iota_copy2_url, iota_copy_url)
- if err: raise svntest.Failure
+ out, err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'diff',
+ iota_copy2_url, iota_copy_url)
 
   verify_expected_output(out, "-bar")
   verify_expected_output(out, "+abcdefg")
Index: copy_tests.py
===================================================================
--- copy_tests.py (revision 6929)
+++ copy_tests.py (working copy)
@@ -21,8 +21,8 @@
 
 # Our testing module
 import svntest
+from svntest import SVNAnyOutput
 
-
 # (abbreviation)
 Skip = svntest.testcase.Skip
 XFail = svntest.testcase.XFail
@@ -112,7 +112,6 @@
   "basic copy and move commands -- on files only"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   mu_path = os.path.join(wc_dir, 'A', 'mu')
@@ -256,7 +255,6 @@
   # -- Lars
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   unver_path = os.path.join(wc_dir, 'A', 'unversioned')
@@ -281,7 +279,6 @@
   "receive a copied directory during update"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Make a backup copy of the working copy.
@@ -376,7 +373,6 @@
   "resurrect a deleted directory"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Delete directory A/D/G, commit that as r2.
@@ -454,16 +450,14 @@
   dirURL2 = svntest.main.current_repo_url + "/A/D/H"
 
   # Expect out-of-date failure if 'svn cp URL URL' tries to overwrite a file
- outlines, errlines = svntest.main.run_svn(1,
- 'cp', fileURL1, fileURL2,
- '--username',
- svntest.main.wc_author,
- '--password',
- svntest.main.wc_passwd,
- '-m', 'fooogle')
- if not errlines:
- print "Whoa, I was able to overwrite a file!"
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn( "Whoa, I was able to overwrite a file!",
+ None, SVNAnyOutput,
+ 'cp', fileURL1, fileURL2,
+ '--username',
+ svntest.main.wc_author,
+ '--password',
+ svntest.main.wc_passwd,
+ '-m', 'fooogle')
 
   # Create A/D/H/G by running 'svn cp ...A/D/G .../A/D/H'
   svntest.actions.run_and_verify_svn(None, None, [],
@@ -473,16 +467,13 @@
                                      '-m', 'fooogle')
 
   # Repeat the last command. It should *fail* because A/D/H/G already exists.
- outlines, errlines = svntest.main.run_svn(1,
- 'cp', dirURL1, dirURL2,
- '--username',
- svntest.main.wc_author,
- '--password',
- svntest.main.wc_passwd,
- '-m', 'fooogle')
- if not errlines:
- print "Whoa, I was able to overwrite a directory!"
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(
+ "Whoa, I was able to overwrite a directory!",
+ None, SVNAnyOutput,
+ 'cp', dirURL1, dirURL2,
+ '--username', svntest.main.wc_author,
+ '--password', svntest.main.wc_passwd,
+ '-m', 'fooogle')
 
 #----------------------------------------------------------------------
 
@@ -528,15 +519,12 @@
   # These copies should fail
   pi_path = os.path.join(wc_dir, 'A', 'D', 'G', 'pi')
   alpha_path = os.path.join(wc_dir, 'A', 'B', 'E', 'alpha')
- outlines, errlines = svntest.main.run_svn(1, 'cp', pi_path, rho_path)
- if not errlines:
- raise svntest.Failure
- outlines, errlines = svntest.main.run_svn(1, 'cp', pi_path, tau_path)
- if not errlines:
- raise svntest.Failure
- outlines, errlines = svntest.main.run_svn(1, 'cp', pi_path, alpha_path)
- if not errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn( "", None, SVNAnyOutput,
+ 'cp', pi_path, rho_path)
+ svntest.actions.run_and_verify_svn( "", None, SVNAnyOutput,
+ 'cp', pi_path, tau_path)
+ svntest.actions.run_and_verify_svn( "", None, SVNAnyOutput,
+ 'cp', pi_path, alpha_path)
 
   # Status after failed copies should not have changed
   extra_files = [ 'tau' ]
@@ -554,8 +542,8 @@
   "copy and tree and modify before commit"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
+
   svntest.actions.run_and_verify_svn(None, None, [], 'cp',
                                      wc_dir + '/A/B', wc_dir + '/A/B2',
                                      '-m', 'fooogle')
@@ -661,7 +649,6 @@
   "copy a tree and delete part of it before commit"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # copy a tree
@@ -714,7 +701,6 @@
   "move and revert a directory"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Issue 931: move failed to lock the directory being deleted
@@ -745,7 +731,6 @@
 
   # Bootstrap
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Create two paths
@@ -790,7 +775,6 @@
   "working-copy to repository copy"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   beta_path = os.path.join(wc_dir, "A", "B", "E", "beta")
@@ -861,7 +845,6 @@
   "repository to working-copy copy"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # We have a standard repository and working copy. Now we create a
@@ -925,9 +908,8 @@
   pi_url = other_repo_url + "/A/D/G/pi"
 
   # Expect an error in the directory case
- output, errput = svntest.main.run_svn(1, 'copy', E_url, wc_dir)
- if not errput:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn("", None, SVNAnyOutput,
+ 'copy', E_url, wc_dir)
 
   # But file case should work fine.
   svntest.actions.run_and_verify_svn(None, None, [], 'copy', pi_url, wc_dir)
@@ -962,6 +944,7 @@
 
   sbox.build()
   wc_dir = sbox.wc_dir
+
   B_url = svntest.main.current_repo_url + "/A/B"
   F_url = svntest.main.current_repo_url + "/A/B/F"
 
@@ -1012,6 +995,7 @@
 
   sbox.build()
   wc_dir = sbox.wc_dir
+
   B_url = svntest.main.current_repo_url + "/A/B"
   F_B_url = svntest.main.current_repo_url + "/A/B/F/B"
 
@@ -1093,9 +1077,8 @@
 
   # Delete a file in the repository via immediate commit
   rho_url = svntest.main.current_repo_url + '/A/D/G/rho'
- outlines,errlines = svntest.main.run_svn(None, 'rm', rho_url, '-m', 'rev 2')
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'rm', rho_url, '-m', 'rev 2')
 
   # Update the wc to HEAD (r2)
   expected_output = svntest.wc.State(wc_dir, {
@@ -1111,13 +1094,8 @@
                                         expected_status)
 
   # repos->wc copy, to resurrect deleted file.
- outlines,errlines = svntest.main.run_svn(None, 'cp', '-r', '1',
- rho_url, wc_dir)
- if errlines:
- print "Copy Error:"
- for line in errlines:
- print line
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn("Copy error:", None, [],
+ 'cp', '-r', '1', rho_url, wc_dir)
 
   # status should now show the file scheduled for addition-with-history
   expected_status.add({
Index: stat_tests.py
===================================================================
--- stat_tests.py (revision 6929)
+++ stat_tests.py (working copy)
@@ -29,6 +29,7 @@
 Item = svntest.wc.StateItem
 
 
+
 ######################################################################
 # Tests
 #
@@ -39,9 +40,7 @@
 def status_unversioned_file_in_current_dir(sbox):
   "status on unversioned file in current directory"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
 
   was_cwd = os.getcwd()
@@ -50,15 +49,9 @@
 
     svntest.main.file_append('foo', 'a new file')
 
- stat_output, err_output = svntest.main.run_svn(None, 'stat', 'foo')
+ svntest.actions.run_and_verify_svn(None, [ "? foo\n" ], [],
+ 'stat', 'foo')
 
- if len(stat_output) != 1:
- return 1
-
- if len(err_output) != 0:
- return 1
-
- return 0
   finally:
     os.chdir(was_cwd)
 
@@ -68,9 +61,7 @@
 def status_update_with_nested_adds(sbox):
   "run 'status -u' when nested additions are pending"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
 
   # Make a backup copy of the working copy
@@ -103,10 +94,9 @@
     })
 
   # Commit.
- if svntest.actions.run_and_verify_commit (wc_dir, expected_output,
- expected_status, None,
- None, None, None, None, wc_dir):
- return 1
+ svntest.actions.run_and_verify_commit (wc_dir, expected_output,
+ expected_status, None,
+ None, None, None, None, wc_dir)
 
   # Now we go to the backup working copy, still at revision 1.
   # We will run 'svn st -u', and make sure that newdir/newfile is reported
@@ -124,73 +114,62 @@
   # an error happens, we'll catch it here. So that's a good enough
   # regression test for now. Someday, though, it would be nice to
   # positively match the mostly-empty lines.
- return svntest.actions.run_and_verify_unquiet_status(wc_backup,
- expected_status)
-
+ svntest.actions.run_and_verify_unquiet_status(wc_backup,
+ expected_status)
+
 #----------------------------------------------------------------------
 
 # svn status -vN should include all entries in a directory
 def status_shows_all_in_current_dir(sbox):
   "status -vN shows all items in current directory"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
   was_cwd = os.getcwd()
 
   os.chdir(wc_dir)
+ try:
 
- stat_output, err_output = svntest.main.run_svn(None, 'stat', '-vN')
- if err_output:
- return 1
+ output, err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'stat', '-vN')
 
- entries_in_wc = len(os.listdir("."))
+ if (len(output) != len(os.listdir("."))):
+ raise svntest.Failure
 
- os.chdir(was_cwd)
+ finally:
+ os.chdir(was_cwd)
 
- if (len(stat_output) != entries_in_wc):
- return 1
 
- return 0
-
-
 #----------------------------------------------------------------------
 
 def status_missing_file(sbox):
   "status with a versioned file missing"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
+
   was_cwd = os.getcwd()
-
+
   os.chdir(wc_dir)
+ try:
 
- os.remove('iota')
+ os.remove('iota')
 
- stat_output, err_output = svntest.main.run_svn(None, 'status')
- if err_output:
- return 1
- for line in stat_output:
- if not re.match("! +iota", line):
- return 1
-
- os.chdir(was_cwd)
+ output, err = svntest.actions.run_and_verify_svn(None, None, [], 'status')
+ for line in output:
+ if not re.match("! +iota", line):
+ raise svntest.Failure
+ finally:
+ os.chdir(was_cwd)
 
- return 0
-
-
 #----------------------------------------------------------------------
 
 def status_type_change(sbox):
   "status on versioned items whose type has changed"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
+
   was_cwd = os.getcwd()
 
   os.chdir(wc_dir)
@@ -202,51 +181,48 @@
     os.rename('A', 'iota')
     os.rename('was_iota', 'A')
 
- stat_output, err_output = svntest.main.run_svn(None, 'status')
- if err_output or len(stat_output) != 2:
- return 1
- for line in stat_output:
+ output, err = svntest.actions.run_and_verify_svn( None, None, [], 'status')
+ if len(output) != 2:
+ raise svntest.Failure
+ for line in output:
       if not re.match("~ +(iota|A)", line):
- return 1
+ raise svntest.Failure
 
     # Now change the file that is obstructing the versioned dir into an
     # unversioned dir.
     os.remove('A')
     os.mkdir('A')
 
- stat_output, err_output = svntest.main.run_svn(None, 'status')
- if err_output or len(stat_output) != 2:
- return 1
- for line in stat_output:
+ output, err = svntest.actions.run_and_verify_svn( None, None, [], 'status')
+ if len(output) != 2:
+ raise svntest.Failure
+ for line in output:
       if not re.match("~ +(iota|A)", line):
- return 1
+ raise svntest.Failure
 
     # Now change the versioned dir that is obstructing the file into an
     # unversioned dir.
     svntest.main.safe_rmtree('iota')
     os.mkdir('iota')
 
- stat_output, err_output = svntest.main.run_svn(None, 'status')
- if err_output or len(stat_output) != 2:
- return 1
- for line in stat_output:
+ output, err = svntest.actions.run_and_verify_svn( None, None, [], 'status')
+ if len(output) != 2:
+ raise svntest.Failure
+ for line in output:
       if not re.match("~ +(iota|A)", line):
- return 1
+ raise svntest.Failure
 
   finally:
     os.chdir(was_cwd)
 
- return 0
-
 #----------------------------------------------------------------------
 
 def status_type_change_to_symlink(sbox):
   "status on versioned items replaced by symlinks"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
+
   was_cwd = os.getcwd()
 
   os.chdir(wc_dir)
@@ -258,12 +234,12 @@
     svntest.main.safe_rmtree('A/D')
     os.symlink('bar', 'A/D')
 
- stat_output, err_output = svntest.main.run_svn(None, 'status')
- if err_output or len(stat_output) != 2:
- return 1
- for line in stat_output:
+ output, err = svntest.actions.run_and_verify_svn( None, None, [], 'status')
+ if len(output) != 2:
+ raise svntest.Failure
+ for line in output:
       if not re.match("~ +(iota|A/D)", line):
- return 1
+ raise svntest.Failure
 
     # "valid" symlinks
     os.remove('iota')
@@ -271,72 +247,64 @@
     os.symlink('A/mu', 'iota')
     os.symlink('C', 'A/D')
 
- stat_output, err_output = svntest.main.run_svn(None, 'status')
- if err_output or len(stat_output) != 2:
- return 1
- for line in stat_output:
+ output, err = svntest.actions.run_and_verify_svn( None, None, [], 'status')
+ if len(output) != 2:
+ raise svntest.Failure
+ for line in output:
       if not re.match("~ +(iota|A/D)", line):
- return 1
+ raise svntest.Failure
 
   finally:
     os.chdir(was_cwd)
 
- return 0
-
-
 #----------------------------------------------------------------------
 # Regression test for revision 3686.
 
 def status_with_new_files_pending(sbox):
   "status -u with new files in the repository"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
+
   was_cwd = os.getcwd()
 
   os.chdir(wc_dir)
+ try:
+ svntest.main.file_append('newfile', 'this is a new file')
+ svntest.main.run_svn(None, 'add', 'newfile')
+ svntest.main.run_svn(None, 'ci', '-m', 'logmsg')
+ svntest.main.run_svn(None, 'up', '-r', '1')
 
- svntest.main.file_append('newfile', 'this is a new file')
- svntest.main.run_svn(None, 'add', 'newfile')
- svntest.main.run_svn(None, 'ci', '-m', 'logmsg')
- svntest.main.run_svn(None, 'up', '-r', '1')
+ output, err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'status', '-u')
 
- stat_output, err_output = svntest.main.run_svn(None, 'status', '-u')
- if err_output:
- return 1
+ # The bug fixed in revision 3686 was a seg fault. We don't have a
+ # reliable way to detect a seg fault here, since we haven't dealt
+ # with the popen2{Popen3,Popen4} mess in Python yet (the latter two
+ # are classes within the first, which is a module, and the Popen3
+ # class is not the same as os.popen3(). Got that?) See the Python
+ # docs for details; in the meantime, no output means there was a
+ # problem.
+ for line in output:
+ if line.find('newfile') != -1:
+ break;
+ else:
+ raise svntest.Failure
 
- # The bug fixed in revision 3686 was a seg fault. We don't have a
- # reliable way to detect a seg fault here, since we haven't dealt
- # with the popen2{Popen3,Popen4} mess in Python yet (the latter two
- # are classes within the first, which is a module, and the Popen3
- # class is not the same as os.popen3(). Got that?) See the Python
- # docs for details; in the meantime, no output means there was a
- # problem.
- for line in stat_output:
- if line.find('newfile') != -1:
- break;
- else:
- return 1
+ finally:
+ os.chdir(was_cwd)
 
- os.chdir(was_cwd)
-
- return 0
-
-
 #----------------------------------------------------------------------
 
 def status_for_unignored_file(sbox):
   "status for unignored file and directory"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
+
   was_cwd = os.getcwd()
 
   os.chdir(wc_dir)
-
   try:
     svntest.main.file_append('newfile', 'this is a new file')
     os.makedirs('newdir')
@@ -374,13 +342,12 @@
   os.chdir(wc_dir)
 
   try:
- stat_output, err_output = svntest.main.run_svn(None, 'status',
- 'nonexistent-file')
- if err_output:
- raise svntest.Failure
+ output, err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'status',
+ 'nonexistent-file')
 
     # there should *not* be a status line printed for the nonexistent file
- for line in stat_output:
+ for line in output:
       if re.match(" +nonexistent-file", line):
         raise svntest.Failure
   
@@ -417,10 +384,9 @@
   # any issue for this bug, so this comment and the thread are your
   # audit trail :-).
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
+
   other_wc = sbox.add_wc_path('other')
 
   svntest.actions.duplicate_dir(wc_dir, other_wc)
@@ -431,7 +397,6 @@
   svntest.main.file_append('crontab.root', 'New file crontab.root.\n')
   svntest.main.run_svn(None, 'add', 'crontab.root')
   svntest.main.run_svn(None, 'ci', '-m', 'log msg')
-
   os.chdir(was_cwd)
   os.chdir(other_wc)
   svntest.main.run_svn(None, 'up')
@@ -445,18 +410,15 @@
   # the -v flag, which we don't want, as this bug never appeared when
   # -v was passed. So we run status by hand:
   os.chdir(was_cwd)
- out, err = svntest.main.run_svn(None, 'status', '-u', other_wc)
- if err:
- return 1
+ out, err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'status', '-u', other_wc)
 
- saw_it = 0
   for line in out:
     if re.match("\\s+\\*.*crontab\\.root$", line):
- saw_it = 1
+ break
+ else:
+ raise svntest.Failure
 
- return not saw_it
-
-
 #----------------------------------------------------------------------
 
 def status_uninvited_parent_directory(sbox):
@@ -485,10 +447,9 @@
   # reverted because it caused other status problems (see the test
   # status_file_needs_update(), which fails when 4181 is present).
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
+
   other_wc = sbox.add_wc_path('other')
 
   svntest.actions.duplicate_dir(wc_dir, other_wc)
@@ -510,27 +471,21 @@
   # We don't want a full status tree here, just one line (or two, if
   # the bug is present). So run status by hand:
   os.chdir(was_cwd)
- out, err = svntest.main.run_svn(None, 'status', '-u',
- os.path.join(other_wc, 'newfile'))
- if err:
- return 1
+ out, err = svntest.actions.run_and_verify_svn(
+ None, None, [],
+ 'status', '-u', os.path.join(other_wc, 'newfile'))
 
- saw_uninvited_parent_dir = 0
   for line in out:
     # The "/?" is just to allow for an optional trailing slash.
     if re.match("\\s+\\*.*\.other/?$", line):
- saw_uninvited_parent_dir = 1
+ raise svntest.Failure
 
- return saw_uninvited_parent_dir
-
-
 def status_on_forward_deletion(sbox):
   "status -u on working copy deleted in HEAD"
   # See issue #1289.
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
+
   top_url = svntest.main.current_repo_url
   A_url = top_url + '/A'
 
@@ -548,9 +503,7 @@
     # svn: Working copy not locked
     # svn: directory '' not locked
     #
- out, err = svntest.main.run_svn(None, 'st', '-u', 'wc')
- if err:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [], 'st', '-u', 'wc')
 
     # Try again another way; the error would look like this:
     #
@@ -564,9 +517,7 @@
     #
     svntest.main.safe_rmtree('wc')
     svntest.main.run_svn(None, 'co', '-r1', A_url, 'wc')
- out, err = svntest.main.run_svn(None, 'st', '-u', 'wc')
- if err:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [], 'st', '-u', 'wc')
     
   finally:
     os.chdir(saved_cwd)
Index: svnversion_tests.py
===================================================================
--- svnversion_tests.py (revision 6929)
+++ svnversion_tests.py (working copy)
@@ -69,10 +69,9 @@
   if errput or output != [ "1:2\n" ]:
     raise svntest.Failure
 
- output, errput = svntest.main.run_svn(None, 'propset', 'blue', 'azul',
- os.path.join(wc_dir, 'A', 'mu'))
- if errput:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'propset', 'blue', 'azul',
+ os.path.join(wc_dir, 'A', 'mu'))
 
   # Prop modified, mixed
   output, errput = svntest.main.run_svnversion(wc_dir, repo_url)
Index: svnadmin_tests.py
===================================================================
--- svnadmin_tests.py (revision 6929)
+++ svnadmin_tests.py (working copy)
@@ -102,7 +102,6 @@
   "'svnadmin createtxn'"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
   repo_dir = sbox.repo_dir
 
@@ -121,7 +120,6 @@
   "'svnadmin rmtxns'"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
   repo_dir = sbox.repo_dir
 
@@ -149,6 +147,7 @@
 
 def dump_copied_dir(sbox):
   "'svnadmin dump' on copied directory"
+
   sbox.build()
   wc_dir = sbox.wc_dir
   repo_dir = sbox.repo_dir
@@ -170,6 +169,7 @@
 
 def dump_move_dir_modify_child(sbox):
   "'svnadmin dump' on modified child of copied dir"
+
   sbox.build()
   wc_dir = sbox.wc_dir
   repo_dir = sbox.repo_dir
@@ -181,32 +181,30 @@
   svntest.main.run_svn(None, 'ci', wc_dir, '--quiet', '-m', 'log msg')
 
   output, errput = svntest.main.run_svnadmin("dump", repo_dir)
- if svntest.actions.compare_and_display_lines(
+ svntest.actions.compare_and_display_lines(
     "Output of 'svnadmin dump' is unexpected.",
     'STDERR', ["* Dumped revision 0.\n",
                "* Dumped revision 1.\n",
- "* Dumped revision 2.\n"], errput):
- raise svntest.Failure
+ "* Dumped revision 2.\n"], errput)
 
   output, errput = svntest.main.run_svnadmin("dump", "-r", "0:HEAD", repo_dir)
- if svntest.actions.compare_and_display_lines(
+ svntest.actions.compare_and_display_lines(
     "Output of 'svnadmin dump' is unexpected.",
     'STDERR', ["* Dumped revision 0.\n",
                "* Dumped revision 1.\n",
- "* Dumped revision 2.\n"], errput):
- raise svntest.Failure
+ "* Dumped revision 2.\n"], errput)
 
 #----------------------------------------------------------------------
 
 def dump_quiet(sbox):
   "'svnadmin dump --quiet'"
+
   sbox.build()
 
   output, errput = svntest.main.run_svnadmin("dump", sbox.repo_dir, '--quiet')
- if svntest.actions.compare_and_display_lines(
+ svntest.actions.compare_and_display_lines(
     "Output of 'svnadmin dump --quiet' is unexpected.",
- 'STDERR', [], errput):
- raise svntest.Failure
+ 'STDERR', [], errput)
 
 
 ########################################################################
Index: prop_tests.py
===================================================================
--- prop_tests.py (revision 6929)
+++ prop_tests.py (working copy)
@@ -53,7 +53,6 @@
 
   # Bootstrap
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Add properties to one file and one directory
@@ -97,7 +96,6 @@
 
   # Bootstrap
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Add a property to a file and a directory
@@ -135,7 +133,6 @@
 
   # Bootstrap
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Make a backup copy of the working copy
@@ -199,7 +196,6 @@
 
   # Bootstrap
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   iota_path = os.path.join(wc_dir, 'iota')
@@ -272,7 +268,6 @@
 
   # Bootstrap
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Add a property to a file
@@ -324,7 +319,6 @@
 
   # Bootstrap
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Add a property to a file and a directory
@@ -394,7 +388,6 @@
 
   # Bootstrap
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Add a property to two files
@@ -453,7 +446,6 @@
 
   # Bootstrap
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Add a property to two files
@@ -521,8 +513,8 @@
 
   # Bootstrap
   sbox.build()
-
   wc_dir = sbox.wc_dir
+
   A_path = os.path.join(wc_dir, 'A')
   E_path = os.path.join(wc_dir, 'A', 'B', 'E')
   iota_path = os.path.join(wc_dir, 'iota')
@@ -622,7 +614,6 @@
 
   # Bootstrap
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   orig_mime_type = 'image/fake_image'
@@ -709,8 +700,8 @@
 
   # Bootstrap
   sbox.build()
-
   wc_dir = sbox.wc_dir
+
   A_path = os.path.join(wc_dir, 'A')
   B_path = os.path.join(wc_dir, 'A', 'B')
   iota_path = os.path.join(wc_dir, 'iota')
Index: export_tests.py
===================================================================
--- export_tests.py (revision 6929)
+++ export_tests.py (working copy)
@@ -40,13 +40,13 @@
 def export_empty_directory(sbox):
   "export an empty directory"
   sbox.build()
+
   svntest.main.safe_rmtree(sbox.wc_dir)
   export_target = sbox.wc_dir
   empty_dir_url = svntest.main.current_repo_url + '/A/C'
   svntest.main.run_svn(None, 'export', empty_dir_url, export_target)
   if not os.path.exists(export_target):
     raise svntest.Failure
- return 0
 
 
 ########################################################################
Index: basic_tests.py
===================================================================
--- basic_tests.py (revision 6929)
+++ basic_tests.py (working copy)
@@ -21,7 +21,7 @@
 
 # Our testing module
 import svntest
-from svntest import wc
+from svntest import wc, SVNAnyOutput
 
 # (abbreviation)
 Skip = svntest.testcase.Skip
@@ -52,20 +52,19 @@
   "basic checkout of a wc"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Checkout of a different URL into a working copy fails
   A_url = svntest.main.current_repo_url + '/A'
- stdout_lines, stderr_lines = svntest.main.run_svn ("Obstructed update",
- 'co', A_url,
- '--username',
- svntest.main.wc_author,
- '--password',
- svntest.main.wc_passwd,
- wc_dir)
- if not stderr_lines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn( "No error where some expected",
+ None, SVNAnyOutput,
+# "Obstructed update",
+ 'co', A_url,
+ '--username',
+ svntest.main.wc_author,
+ '--password',
+ svntest.main.wc_passwd,
+ wc_dir)
 
   # Make some changes to the working copy
   mu_path = os.path.join(wc_dir, 'A', 'mu')
@@ -114,7 +113,6 @@
   "basic status command"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Created expected output tree for 'svn status'
@@ -128,7 +126,6 @@
   "basic commit command"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Make a couple of local mods to files
@@ -164,7 +161,6 @@
   "basic update command"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Make a backup copy of the working copy
@@ -223,6 +219,7 @@
   "basic mkdir URL"
 
   sbox.build()
+
   Y_url = svntest.main.current_repo_url + '/Y'
   Y_Z_url = svntest.main.current_repo_url + '/Y/Z'
 
@@ -270,7 +267,6 @@
   ## Here we go...
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Make the "other" working copy
@@ -379,7 +375,6 @@
   "receiving text merges as part of an update"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
   
   # First change the greek tree to make two files 10 lines long
@@ -490,7 +485,6 @@
   "basic conflict creation and resolution"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Make a backup copy of the working copy
@@ -603,7 +597,6 @@
   "basic cleanup command"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Lock some directories.
@@ -636,7 +629,6 @@
   "basic revert command"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Modify some files.
@@ -760,7 +752,6 @@
   "basic switch command"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   ### Switch the file `iota' to `A/D/gamma'.
@@ -841,7 +832,6 @@
                                         expected_disk,
                                         expected_status)
 
-
 #----------------------------------------------------------------------
 
 def verify_file_deleted(message, path):
@@ -853,7 +843,6 @@
   ###TODO We should raise a less generic error here. which?
   raise Failure
   
-
 def can_cd_to_dir(path):
   current_dir = os.getcwd();
   try: os.chdir(path)
@@ -865,7 +854,6 @@
   "basic delete command"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # modify text of chi
@@ -918,31 +906,31 @@
   svntest.actions.run_and_verify_status(wc_dir, expected_output)
 
   # 'svn rm' that should fail
- svntest.actions.run_and_verify_svn(None, None, svntest.SVNAnyOutput,
+ svntest.actions.run_and_verify_svn(None, None, SVNAnyOutput,
                                      'rm', chi_path)
 
- svntest.actions.run_and_verify_svn(None, None, svntest.SVNAnyOutput,
+ svntest.actions.run_and_verify_svn(None, None, SVNAnyOutput,
                                      'rm', chi_parent_path)
   
- svntest.actions.run_and_verify_svn(None, None, svntest.SVNAnyOutput,
+ svntest.actions.run_and_verify_svn(None, None, SVNAnyOutput,
                                      'rm', rho_path)
 
- svntest.actions.run_and_verify_svn(None, None, svntest.SVNAnyOutput,
+ svntest.actions.run_and_verify_svn(None, None, SVNAnyOutput,
                                      'rm', rho_parent_path)
   
- svntest.actions.run_and_verify_svn(None, None, svntest.SVNAnyOutput,
+ svntest.actions.run_and_verify_svn(None, None, SVNAnyOutput,
                                      'rm', F_path)
 
- svntest.actions.run_and_verify_svn(None, None, svntest.SVNAnyOutput,
+ svntest.actions.run_and_verify_svn(None, None, SVNAnyOutput,
                                      'rm', F_parent_path)
   
- svntest.actions.run_and_verify_svn(None, None, svntest.SVNAnyOutput,
+ svntest.actions.run_and_verify_svn(None, None, SVNAnyOutput,
                                      'rm', sigma_path)
 
- svntest.actions.run_and_verify_svn(None, None, svntest.SVNAnyOutput,
+ svntest.actions.run_and_verify_svn(None, None, SVNAnyOutput,
                                      'rm', sigma_parent_path)
 
- svntest.actions.run_and_verify_svn(None, None, svntest.SVNAnyOutput,
+ svntest.actions.run_and_verify_svn(None, None, SVNAnyOutput,
                                      'rm', X_path)
 
   # check status has not changed
@@ -1065,7 +1053,6 @@
   "checkout a path no longer in HEAD"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Delete A/D and commit.
@@ -1122,7 +1109,7 @@
 
   # Try and fail to create a directory (file scheduled for deletion)
   svntest.actions.run_and_verify_svn('Cannot change node kind',
- None, svntest.SVNAnyOutput,
+ None, SVNAnyOutput,
                                      'mkdir', gamma_path)
 
   # Status is unchanged
@@ -1142,7 +1129,7 @@
 
   # Try and fail to create a directory (file deleted)
   svntest.actions.run_and_verify_svn('Cannot change node kind',
- None, svntest.SVNAnyOutput,
+ None, SVNAnyOutput,
                                      'mkdir', gamma_path)
 
   # Status is unchanged
@@ -1166,7 +1153,6 @@
   "basic import of single new file"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # create a new directory with files of various permissions
@@ -1229,7 +1215,6 @@
   "basic import of executable files"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # create a new directory with files of various permissions
@@ -1313,7 +1298,6 @@
   "basic cat of files"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   mu_path = os.path.join(wc_dir, 'A', 'mu')
@@ -1402,7 +1386,7 @@
   # the root directory, the test could fail, and that's just too bad :-).
 
   output, errput = svntest.actions.run_and_verify_svn(
- None, None, svntest.SVNAnyOutput,
+ None, None, SVNAnyOutput,
     'log', 'file:///nonexistent_path')
 
   for line in errput:
@@ -1420,8 +1404,8 @@
   "basic auth caching"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
+
   repo_dir = sbox.repo_dir
   repo_url = sbox.repo_url
 
@@ -1468,7 +1452,6 @@
   # svn_wc_is_ignored function.
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   dir_path = os.path.join(wc_dir, 'dir')
@@ -1479,11 +1462,10 @@
   open(foo_c_path, 'w')
   open(foo_o_path, 'w')
 
- (output, errput) = svntest.main.run_svn (None, 'add', dir_path)
+ output, err = svntest.actions.run_and_verify_svn(
+ "No output where some expected", SVNAnyOutput, None,
+ 'add', dir_path)
 
- if not output:
- raise svntest.actions.SVNUnexpectedOutput
-
   for line in output:
     # If we see foo.o in the add output, fail the test.
     if re.match(r'^A\s+.*foo.o$', line):
@@ -1507,7 +1489,6 @@
   # svn_wc_is_ignored function.
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   dir_path = os.path.join(wc_dir, 'dir')
@@ -1521,7 +1502,6 @@
   # import new dir into repository
   url = os.path.join(svntest.main.current_repo_url, 'dir')
 
-
   output, errput = svntest.actions.run_and_verify_svn(
     None, None, [], 'import',
     '--username', svntest.main.wc_author,
@@ -1567,7 +1547,6 @@
                                         None, None, None,
                                         None, None, 1)
 
-
 def uri_syntax(sbox):
   'make sure URI syntaxes are parsed correctly'
 
@@ -1579,13 +1558,13 @@
   url = svntest.main.current_repo_url
   schema = url[:string.find(url, ":")]
   url = schema + "://some_nonexistent_host_with_no_trailing_slash"
- output, errput = svntest.main.run_svn (1, 'co', url, wc_dir)
+ svntest.actions.run_and_verify_svn( "No error where one expected",
+ None, SVNAnyOutput,
+ 'co', url, wc_dir)
 
   # Different RA layers give different errors for failed checkouts;
   # for us, it's only important to know that it _did_ error (as
   # opposed to segfaulting), so we don't examine the error text.
- if not errput:
- raise svntest.Failure
 
 
 #----------------------------------------------------------------------
Index: log_tests.py
===================================================================
--- log_tests.py (revision 6929)
+++ log_tests.py (working copy)
@@ -21,6 +21,7 @@
 
 # Our testing module
 import svntest
+from svntest import SVNAnyOutput
 
 
 ######################################################################
@@ -67,7 +68,6 @@
   global max_revision
 
   sbox.build()
-
   wc_path = sbox.wc_dir
 
   # Now we have a repos and wc at revision 1.
@@ -315,25 +315,20 @@
 
   guarantee_repos_and_wc(sbox)
 
- result = 0
-
   was_cwd = os.getcwd()
   os.chdir(sbox.wc_dir)
 
- output, errput = svntest.main.run_svn (None, 'log')
+ try:
+ output, err = svntest.actions.run_and_verify_svn ("", None, [], 'log')
 
- if errput:
+ log_chain = parse_log_output (output)
+ if check_log_chain (log_chain, range(max_revision, 1 - 1, -1)):
+ raise svntest.Failure
+
+ finally:
     os.chdir (was_cwd)
- raise svntest.Failure
 
- log_chain = parse_log_output (output)
- if check_log_chain (log_chain, range(max_revision, 1 - 1, -1)):
- os.chdir (was_cwd)
- raise svntest.Failure
 
- os.chdir (was_cwd)
-
-
 #----------------------------------------------------------------------
 def versioned_log_message(sbox):
   "'svn commit -F foo' when foo is a versioned file"
@@ -343,50 +338,37 @@
   was_cwd = os.getcwd ()
   os.chdir (sbox.wc_dir)
 
- iota_path = os.path.join ('iota')
- mu_path = os.path.join ('A', 'mu')
- log_path = os.path.join ('A', 'D', 'H', 'omega')
+ try:
+ iota_path = os.path.join ('iota')
+ mu_path = os.path.join ('A', 'mu')
+ log_path = os.path.join ('A', 'D', 'H', 'omega')
+
+ svntest.main.file_append (iota_path, "2")
+
+ # try to check in a change using a versioned file as your log entry.
+ svntest.actions.run_and_verify_svn( "", None, SVNAnyOutput,
+ 'ci', '-F', log_path)
 
- svntest.main.file_append (iota_path, "2")
+ # force it. should not produce any errors.
+ svntest.actions.run_and_verify_svn ( "", None, [],
+ 'ci', '-F', log_path, '--force-log')
 
- # try to check in a change using a versioned file as your log entry.
- stdout_lines, stderr_lines = svntest.main.run_svn (1, 'ci', '-F', log_path)
+ svntest.main.file_append (mu_path, "2")
 
- # make sure we failed.
- if (len(stderr_lines) <= 0):
- os.chdir (was_cwd)
- raise svntest.Failure
+ # try the same thing, but specifying the file to commit explicitly.
+ svntest.actions.run_and_verify_svn( "", None, SVNAnyOutput,
+ 'ci', '-F', log_path, mu_path)
 
- # force it. should not produce any errors.
- stdout_lines, stderr_lines = \
- svntest.main.run_svn (None, 'ci', '-F', log_path, '--force-log')
+ # force it... should succeed.
+ svntest.actions.run_and_verify_svn ( "", None, [],
+ 'ci',
+ '-F', log_path,
+ '--force-log', mu_path)
 
- if (len(stderr_lines) != 0):
+ finally:
     os.chdir (was_cwd)
- raise svntest.Failure
 
- svntest.main.file_append (mu_path, "2")
 
- # try the same thing, but specifying the file to commit explicitly.
- stdout_lines, stderr_lines = \
- svntest.main.run_svn (1, 'ci', '-F', log_path, mu_path)
-
- # make sure it failed.
- if (len(stderr_lines) <= 0):
- os.chdir (was_cwd)
- raise svntest.Failure
-
- # force it... should succeed.
- stdout_lines, stderr_lines = \
- svntest.main.run_svn (None, 'ci', '-F', log_path, '--force-log', mu_path)
-
- if (len(stderr_lines) != 0):
- os.chdir (was_cwd)
- raise svntest.Failure
-
- os.chdir (was_cwd)
-
-
 #----------------------------------------------------------------------
 def log_with_empty_repos(sbox):
   "'svn log' on an empty repository"
@@ -397,16 +379,12 @@
   svntest.main.create_repos(sbox.repo_dir)
   svntest.main.set_repos_paths(sbox.repo_dir)
 
- stdout_lines, stderr_lines = svntest.main.run_svn\
- (None, 'log',
- '--username', svntest.main.wc_author,
- '--password', svntest.main.wc_passwd,
- svntest.main.current_repo_url)
+ svntest.actions.run_and_verify_svn ( "", None, [],
+ 'log',
+ '--username', svntest.main.wc_author,
+ '--password', svntest.main.wc_passwd,
+ svntest.main.current_repo_url)
 
- if (len(stderr_lines) != 0):
- raise svntest.Failure
-
-
 #----------------------------------------------------------------------
 def log_where_nothing_changed(sbox):
   "'svn log -rN some_dir_unchanged_in_N'"
@@ -438,53 +416,43 @@
   sbox.build()
 
   # This used to the segfault the server.
- stdout_lines, stderr_lines = svntest.main.run_svn(0, 'log', '-v',
- '-r', '1:0', sbox.wc_dir)
- if stderr_lines:
- raise svntest.Failure
+
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'log', '-v',
+ '-r', '1:0', sbox.wc_dir)
 
-
 #----------------------------------------------------------------------
 def log_with_path_args(sbox):
   "'svn log', no args, top of wc"
 
   guarantee_repos_and_wc(sbox)
 
- result = 0
-
   was_cwd = os.getcwd()
   os.chdir(sbox.wc_dir)
 
- output, errput = svntest.main.run_svn (None, 'log',
- svntest.main.current_repo_url,
- 'A/D/G', 'A/D/H')
+ try:
+ output, err = svntest.actions.run_and_verify_svn(
+ None, None, [],
+ 'log', svntest.main.current_repo_url, 'A/D/G', 'A/D/H')
 
- if errput:
- os.chdir (was_cwd)
- raise svntest.Failure
+ log_chain = parse_log_output (output)
+ if check_log_chain (log_chain, [8, 6, 5, 3, 1]):
+ raise svntest.Failure
 
- log_chain = parse_log_output (output)
- if check_log_chain (log_chain, [8, 6, 5, 3, 1]):
+ finally:
     os.chdir (was_cwd)
- raise svntest.Failure
 
- os.chdir (was_cwd)
-
 #----------------------------------------------------------------------
 def url_missing_in_head(sbox):
   "'svn log -r N URL' when URL is not in HEAD "
 
   guarantee_repos_and_wc(sbox)
 
- result = 0
-
   my_url = svntest.main.current_repo_url + "/A/B/E/alpha"
- output, errput = svntest.main.run_svn (None, 'log', '-r', '8', my_url)
+
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'log', '-r', '8', my_url)
 
- if errput:
- os.chdir (was_cwd)
- raise svntest.Failure
-
 #----------------------------------------------------------------------
 def log_through_copyfrom_history(sbox):
   "'svn log TGT' with copyfrom history"
@@ -516,44 +484,38 @@
   svntest.actions.run_and_verify_svn (None, None, [], 'up', wc_dir)
 
   # The full log for mu2 is relatively unsurprising
- output, errput = svntest.main.run_svn (None, 'log', mu2_path)
- if errput:
- raise svntest.Failure
+ output, err = svntest.actions.run_and_verify_svn (None, None, [],
+ 'log', mu2_path)
   log_chain = parse_log_output (output)
   if check_log_chain (log_chain, [6, 5, 2, 1]):
     raise svntest.Failure
 
- output, errput = svntest.main.run_svn (None, 'log', mu2_URL)
- if errput:
- raise svntest.Failure
+ output, err = svntest.actions.run_and_verify_svn (None, None, [],
+ 'log', mu2_URL)
   log_chain = parse_log_output (output)
   if check_log_chain (log_chain, [6, 5, 2, 1]):
     raise svntest.Failure
 
   # First "oddity", the full log for mu2 doesn't include r3, but the -r3
   # log works!
- output, errput = svntest.main.run_svn (None, 'log', '-r', '3', mu2_path)
- if errput:
- raise svntest.Failure
+ output, err = svntest.actions.run_and_verify_svn (None, None, [],
+ 'log', '-r', '3', mu2_path)
   log_chain = parse_log_output (output)
   if check_log_chain (log_chain, [3]):
     raise svntest.Failure
 
- output, errput = svntest.main.run_svn (None, 'log', '-r', '3', mu2_URL)
- if errput:
- raise svntest.Failure
+ output, err = svntest.actions.run_and_verify_svn (None, None, [],
+ 'log', '-r', '3', mu2_URL)
   log_chain = parse_log_output (output)
   if check_log_chain (log_chain, [3]):
     raise svntest.Failure
 
   # Second "oddity", the full log for mu2 includes r2, but the -r2 log
   # fails!
- output, errput = svntest.main.run_svn (1, 'log', '-r', '2', mu2_path)
- if not errput or output:
- raise svntest.Failure
- output, errput = svntest.main.run_svn (1, 'log', '-r', '2', mu2_URL)
- if not errput or output:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn (None, [], SVNAnyOutput,
+ 'log', '-r', '2', mu2_path)
+ svntest.actions.run_and_verify_svn (None, [], SVNAnyOutput,
+ 'log', '-r', '2', mu2_URL)
   
 ########################################################################
 # Run the tests
Index: update_tests.py
===================================================================
--- update_tests.py (revision 6929)
+++ update_tests.py (working copy)
@@ -72,7 +72,6 @@
   "update a locally-modified binary file"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Add a binary file to the project.
@@ -181,15 +180,12 @@
     print extra_files
     raise svntest.Failure
 
- return 0
-
 #----------------------------------------------------------------------
 
 def update_binary_file_2(sbox):
   "update to an old revision of a binary files"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Suck up contents of a test .png file.
@@ -290,13 +286,13 @@
 
   # Do an update from revision 2 and make sure that our binary file
   # gets reverted to its original contents.
- return svntest.actions.run_and_verify_update(wc_dir,
- expected_output,
- expected_disk,
- expected_status,
- None, None, None,
- None, None, 1,
- '-r', '2', wc_dir)
+ svntest.actions.run_and_verify_update(wc_dir,
+ expected_output,
+ expected_disk,
+ expected_status,
+ None, None, None,
+ None, None, 1,
+ '-r', '2', wc_dir)
 
 
 #----------------------------------------------------------------------
@@ -305,7 +301,6 @@
   "update missing items (by name) in working copy"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Remove some files and dirs from the working copy.
@@ -344,13 +339,13 @@
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
   
   # Do the update and check the results in three ways.
- return svntest.actions.run_and_verify_update(wc_dir,
- expected_output,
- expected_disk,
- expected_status,
- None, None, None, None, None, 0,
- mu_path, rho_path,
- E_path, H_path)
+ svntest.actions.run_and_verify_update(wc_dir,
+ expected_output,
+ expected_disk,
+ expected_status,
+ None, None, None, None, None, 0,
+ mu_path, rho_path,
+ E_path, H_path)
 
 #----------------------------------------------------------------------
 
@@ -358,7 +353,6 @@
   "update should not munge adds or replaces"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Commit something so there's actually a new revision to update to.
@@ -402,10 +396,10 @@
     })
   
   # Do the update and check the results in three ways.
- return svntest.actions.run_and_verify_update(wc_dir,
- expected_output,
- expected_disk,
- expected_status)
+ svntest.actions.run_and_verify_update(wc_dir,
+ expected_output,
+ expected_disk,
+ expected_status)
   
 
 #----------------------------------------------------------------------
@@ -414,7 +408,6 @@
   "update to revision 0"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   iota_path = os.path.join(wc_dir, 'iota')
@@ -430,14 +423,13 @@
   expected_disk = svntest.wc.State(wc_dir, { })
   
   # Do the update and check the results.
- return svntest.actions.run_and_verify_update(wc_dir,
- expected_output,
- expected_disk,
- None, None,
- None, None, None, None, 0,
- '-r', '0', wc_dir)
+ svntest.actions.run_and_verify_update(wc_dir,
+ expected_output,
+ expected_disk,
+ None, None,
+ None, None, None, None, 0,
+ '-r', '0', wc_dir)
 
-
 #----------------------------------------------------------------------
 
 def receive_overlapping_same_change(sbox):
@@ -462,7 +454,6 @@
   ### the two modifications are identical.
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Modify iota.
@@ -503,10 +494,10 @@
   expected_status = svntest.actions.get_virginal_state(other_wc, 2)
   
   # Do the update and check the results in three ways.
- return svntest.actions.run_and_verify_update(other_wc,
- expected_output,
- expected_disk,
- expected_status)
+ svntest.actions.run_and_verify_update(other_wc,
+ expected_output,
+ expected_disk,
+ expected_status)
 
 #----------------------------------------------------------------------
 
@@ -530,7 +521,6 @@
   "delete files and update to resolve text conflicts"
   
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Make a backup copy of the working copy
@@ -634,8 +624,7 @@
   expected_status = svntest.actions.get_virginal_state(wc_backup, 2)
   expected_status.tweak('A/D/G/rho', status=' C')
 
- return svntest.actions.run_and_verify_status (wc_backup,
- expected_status)
+ svntest.actions.run_and_verify_status(wc_backup, expected_status)
 
 #----------------------------------------------------------------------
 
@@ -654,42 +643,29 @@
   "update that deletes modified files"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Delete a file
   alpha_path = os.path.join(wc_dir, 'A', 'B', 'E', 'alpha')
- stdout_lines, stderr_lines = svntest.main.run_svn(None, 'rm', alpha_path)
- if len(stderr_lines) != 0:
- print "deleting alpha failed"
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn( "deleting alpha failed", None, [],
+ 'rm', alpha_path)
 
   # Delete a directory containing files
   G_path = os.path.join(wc_dir, 'A', 'D', 'G')
- stdout_lines, stderr_lines = svntest.main.run_svn(None, 'rm', G_path)
- if len(stderr_lines) != 0:
- print "deleting G failed"
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn( "deleting G failed", None, [],
+ 'rm', G_path)
 
   # Commit
- stdout_lines, stderr_lines = svntest.main.run_svn(None, 'ci',
- '-m', 'log msg', wc_dir)
- if len(stderr_lines) != 0:
- print "committing deletes failed"
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn( "committing deletes failed", None, [],
+ 'ci', '-m', 'log msg', wc_dir)
 
   # ### Update before backdating to avoid obstructed update error for G
- stdout_lines, stderr_lines = svntest.main.run_svn(None, 'up', wc_dir)
- if len(stderr_lines) != 0:
- print "updating after commit failed"
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn( "updating after commit failed", None, [],
+ 'up', wc_dir)
 
   # Backdate to restore deleted items
- stdout_lines, stderr_lines = svntest.main.run_svn(None, 'up', '-r', '1',
- wc_dir)
- if len(stderr_lines) != 0:
- print "backdating failed"
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn( "backdating failed", None, [],
+ 'up', '-r', '1', wc_dir)
 
   # Modify the file to be deleted, and a file in the directory to be deleted
   svntest.main.file_append(alpha_path, 'appended alpha text')
@@ -703,10 +679,8 @@
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
   # Update that 'deletes' modified files
- stdout_lines, stderr_lines = svntest.main.run_svn(None, 'up', wc_dir)
- if len(stderr_lines) != 0:
- print "updating failed"
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn( "updating failed", None, [],
+ 'up', wc_dir)
 
   # Modified files should still exist but are now unversioned
   expected_status = svntest.actions.get_virginal_state(wc_dir, 2)
@@ -728,15 +702,12 @@
   "update after add/rm of deleted state"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Delete a file and directory from WC
   alpha_path = os.path.join(wc_dir, 'A', 'B', 'E', 'alpha')
   F_path = os.path.join(wc_dir, 'A', 'B', 'F')
- outlines, errlines = svntest.main.run_svn(None, 'rm', alpha_path, F_path)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [], 'rm', alpha_path, F_path)
 
   # Commit deletion
   expected_output = svntest.wc.State(wc_dir, {
@@ -753,13 +724,10 @@
 
   # alpha and F are now in state "deleted", next we add a new ones
   svntest.main.file_append(alpha_path, "new alpha")
- outlines, errlines = svntest.main.run_svn(None, 'add', alpha_path)
- if errlines:
- raise svntest.Failure
- outlines, errlines = svntest.main.run_svn(None, 'mkdir', F_path)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [], 'add', alpha_path)
 
+ svntest.actions.run_and_verify_svn(None, None, [], 'mkdir', F_path)
+
   # New alpha and F should be in add state A
   expected_status.add({
     'A/B/E/alpha' : Item(status='A ', wc_rev=0, repos_rev=2),
@@ -768,9 +736,11 @@
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
   
   # Forced removal of new alpha and F must restore "deleted" state
- outlines, errlines = svntest.main.run_svn(None, 'rm', '--force',
- alpha_path, F_path)
- if errlines or os.path.exists(alpha_path) or os.path.exists(F_path):
+
+ outlines, errlines = svntest.actions.run_and_verify_svn(None, None, [],
+ 'rm', '--force',
+ alpha_path, F_path)
+ if os.path.exists(alpha_path) or os.path.exists(F_path):
     raise svntest.Failure
 
   # "deleted" state is not visible in status
@@ -779,9 +749,7 @@
 
   # Although parent dir is already at rev 1, the "deleted" state will cause
   # alpha and F to be restored in the WC when updated to rev 1
- outlines, errlines = svntest.main.run_svn(None, 'up', '-r', '1', wc_dir)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [], 'up', '-r', '1', wc_dir)
   expected_status.add({
     'A/B/E/alpha' : Item(status=' ', wc_rev=1, repos_rev=2),
     'A/B/F' : Item(status=' ', wc_rev=1, repos_rev=2),
@@ -795,14 +763,11 @@
   "update that replaces a directory"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Delete a directory
   F_path = os.path.join(wc_dir, 'A', 'B', 'F')
- outlines, errlines = svntest.main.run_svn(None, 'rm', F_path)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [], 'rm', F_path)
 
   # Commit deletion
   expected_output = svntest.wc.State(wc_dir, {
@@ -816,9 +781,7 @@
                                         None, None, None, None, wc_dir)
 
   # Add replacement directory
- outlines, errlines = svntest.main.run_svn(None, 'mkdir', F_path)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [], 'mkdir', F_path)
 
   # Commit addition
   expected_output = svntest.wc.State(wc_dir, {
@@ -857,9 +820,7 @@
   # '-r', '1', wc_dir)
 
   # Update to revision 1 replaces the directory
- outlines, errlines = svntest.main.run_svn(None, 'up', '-r', '1', wc_dir)
- if errlines:
- return 1
+ svntest.actions.run_and_verify_svn(None, None, [], 'up', '-r', '1', wc_dir)
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
   expected_status.tweak(repos_rev=3)
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
@@ -870,7 +831,6 @@
   "update with explicit file target"
   
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   expected_disk = svntest.main.greek_state.copy()
@@ -893,13 +853,14 @@
   # At one stage 'svn up file' failed with a parent lock error
   was_cwd = os.getcwd()
   os.chdir(os.path.join(wc_dir, 'A'))
- ### Can't get run_and_verify_update to work having done the chdir.
- outlines, errlines = svntest.main.run_svn(None, 'up', '-r', '1', 'mu')
- os.chdir(was_cwd)
- if errlines:
- print "update failed"
- raise svntest.Failure
 
+ try:
+ ### Can't get run_and_verify_update to work having done the chdir.
+ svntest.actions.run_and_verify_svn("update failed", None, [],
+ 'up', '-r', '1', 'mu')
+ finally:
+ os.chdir(was_cwd)
+
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
   expected_status.tweak(repos_rev=2)
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
@@ -909,8 +870,8 @@
   "receive prop update to file scheduled for deletion"
   
   sbox.build()
-
   wc_dir = sbox.wc_dir
+
   other_wc = sbox.add_wc_path('other')
 
   # Make the "other" working copy.
@@ -952,20 +913,21 @@
   expected_status.tweak('iota', status='D ')
   
   # Do the update and check the results in three ways.
- return svntest.actions.run_and_verify_update(other_wc,
- expected_output,
- expected_disk,
- expected_status)
- return 0
+ svntest.actions.run_and_verify_update(other_wc,
+ expected_output,
+ expected_disk,
+ expected_status)
 
 #----------------------------------------------------------------------
 
 def update_receive_illegal_name(sbox):
   "bail when receive a file or dir named .svn"
+
   sbox.build()
+ wc_dir = sbox.wc_dir
 
   # This tests the revision 4334 fix for issue #1068.
- wc_dir = sbox.wc_dir
+
   legal_url = svntest.main.current_repo_url + '/A/D/G/svn'
   illegal_url = svntest.main.current_repo_url + '/A/D/G/.svn'
   # Ha! The client doesn't allow us to mkdir a '.svn' but it does
@@ -989,8 +951,8 @@
   "update missing dir to rev in which it is absent"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
+
   E_path = os.path.join(wc_dir, 'A', 'B', 'E')
   H_path = os.path.join(wc_dir, 'A', 'D', 'H')
 
@@ -1058,7 +1020,6 @@
   "another \"hudson\" problem: updates that delete"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Delete/commit gamma thus making it 'deleted'
@@ -1077,11 +1038,10 @@
                                          wc_dir)
 
   # Delete directory G from the repository
- out, err = svntest.main.run_svn(None, 'rm',
- '-m', 'log msg',
- svntest.main.current_repo_url + '/A/D/G')
- if out != ['\n', 'Committed revision 3.\n']:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None,
+ ['\n', 'Committed revision 3.\n'], None,
+ 'rm', '-m', 'log msg',
+ svntest.main.current_repo_url + '/A/D/G')
 
   # Remove corresponding tree from working copy
   G_path = os.path.join(wc_dir, 'A', 'D', 'G')
@@ -1092,9 +1052,10 @@
 
   # Sigh, I can't get run_and_verify_update to work (but not because
   # of issue 919 as far as I can tell)
- out, err = svntest.main.run_svn(None, 'up', G_path)
- if out != ['D '+G_path+'\n', 'Updated to revision 3.\n']:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None,
+ ['D '+G_path+'\n',
+ 'Updated to revision 3.\n'], None,
+ 'up', G_path)
 
   # Both G and gamma should be 'deleted', update should produce no output
   expected_output = svntest.wc.State(wc_dir, { })
@@ -1118,12 +1079,11 @@
   wc_dir = sbox.wc_dir
 
   # Create a new directory ("spacey dir") directly in repository
- out, err = svntest.main.run_svn(None, 'mkdir',
- '-m', 'log msg',
- svntest.main.current_repo_url
- + '/A/spacey%20dir')
- if out != ['\n', 'Committed revision 2.\n']:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None,
+ ['\n', 'Committed revision 2.\n'], None,
+ 'mkdir', '-m', 'log msg',
+ svntest.main.current_repo_url
+ + '/A/spacey%20dir')
 
   # Update, and make sure ra_dav doesn't choke on the space.
   expected_output = svntest.wc.State(wc_dir, {
@@ -1200,16 +1160,13 @@
   # incomplete ("!" in status).
   sbox.build()
   wc_dir = sbox.wc_dir
+
   C_url = svntest.main.current_repo_url + '/A/C'
 
   svntest.main.safe_rmtree(wc_dir)
- out, err = svntest.main.run_svn(None, 'checkout', C_url, wc_dir)
- if err:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [], 'checkout', C_url, wc_dir)
 
- out, err = svntest.main.run_svn(None, 'status', wc_dir)
- if out or err:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, [], [], 'status', wc_dir)
 
 
 #----------------------------------------------------------------------
@@ -1222,7 +1179,6 @@
   "update target till it's gone, then get it back"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   iota_path = os.path.join(wc_dir, 'iota')
Index: utf8_tests.py
===================================================================
--- utf8_tests.py (revision 6929)
+++ utf8_tests.py (working copy)
@@ -50,9 +50,7 @@
 def basic_utf8_conversion(sbox):
   "conversion of paths and logs to/from utf8"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
 
   # Make sure the test runs in an ISO-8859-1 environment. Otherwise,
@@ -70,24 +68,14 @@
 
   # Create the new i18n file and schedule it for addition
   svntest.main.file_append(os.path.join(wc_dir, i18n_filename), "hi")
- outlines, errlines = svntest.main.run_svn(None,
- 'add',
- os.path.join(wc_dir,
- i18n_filename))
- if errlines:
- print "Failed to schedule i18n filename for addition"
- return 1
+ svntest.actions.run_and_verify_svn(
+ "Failed to schedule i18n filename for addition", None, [],
+ 'add', os.path.join(wc_dir, i18n_filename))
 
- outlines, inlines = svntest.main.run_svn(None, # no error expected
- 'commit', '-m', i18n_logmsg,
- wc_dir)
- if errlines:
- print "Failed to commit i18n filename"
- return 1
+ svntest.actions.run_and_verify_svn(
+ "Failed to commit i18n filename", None, [],
+ 'commit', '-m', i18n_logmsg, wc_dir)
 
-
- return 0
-
 # Here's how the test should really work:
 
 # 1. sh LC_ALL=ISO-8859-1 svn commit <filename> -m "<logmsg>"
Index: trans_tests.py
===================================================================
--- trans_tests.py (revision 6929)
+++ trans_tests.py (working copy)
@@ -179,7 +179,6 @@
   "commit new files with keywords active from birth"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   setup_working_copy (wc_dir)
@@ -315,7 +314,6 @@
   "update modified file with eol-style 'native'"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Replace contents of rho and set eol translation to 'native'
@@ -438,14 +436,13 @@
                                        'svn:eol-style', 'CRLF', foo_path)
 
   # check 1: did new contents get transmitted?
- output, errput = svntest.main.run_svn(None, 'ci', '-m', 'log msg', foo_path)
- if errput:
- raise svntest.Failure
- output = _tweak_paths(output) # FIXME: see commend at _tweak_paths
- if output != ["Sending " + foo_path + "\n",
- "Transmitting file data .\n",
- "Committed revision 3.\n"]:
- raise svntest.Failure
+ expected_output = ["Sending " + foo_path + "\n",
+ "Transmitting file data .\n",
+ "Committed revision 3.\n"]
+ # FIXME: see commend at _tweak_paths
+ expected_output = _tweak_paths(expected_output)
+ svntest.actions.run_and_verify_svn(None, expected_output, [],
+ 'ci', '-m', 'log msg', foo_path)
 
   # check 2: do the files have the right contents now?
   f = open(foo_path, 'rb')
@@ -547,9 +544,9 @@
 
   # At one stage the keywords were expanded to values for the requested
   # revision, not to those committed revision
- out, err = svntest.main.run_svn (None, 'cat', '-r', 'HEAD', mu_path)
- if err or out[1] != "$Rev: 2 $":
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn (None, [ "This is the file 'mu'.\n",
+ "$Rev: 2 $" ], None,
+ 'cat', '-r', 'HEAD', mu_path)
   
 
 ########################################################################
Index: commit_tests.py
===================================================================
--- commit_tests.py (revision 6929)
+++ commit_tests.py (working copy)
@@ -21,6 +21,7 @@
 
 # Our testing module
 import svntest
+from svntest import SVNAnyOutput
 
 # (abbreviation)
 Skip = svntest.testcase.Skip
@@ -117,10 +118,8 @@
   expected_status = get_standard_state(wc_dir)
 
   # Verify status -- all local mods should be present.
- if svntest.actions.run_and_verify_status(wc_dir, expected_status):
- return 1
+ svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
- return 0
 
 ######################################################################
 # Tests
@@ -133,13 +132,11 @@
 def commit_one_file(sbox):
   "commit one file"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
 
   # Make standard slew of changes to working copy.
- if make_standard_slew_of_changes(wc_dir): return 1
+ make_standard_slew_of_changes(wc_dir)
 
   omega_path = os.path.join(wc_dir, 'A', 'D', 'H', 'omega')
 
@@ -154,13 +151,13 @@
   expected_status.tweak('A/D/H/omega', wc_rev=2, status=' ')
 
   # Commit the one file.
- return svntest.actions.run_and_verify_commit (wc_dir,
- expected_output,
- expected_status,
- None,
- None, None,
- None, None,
- omega_path)
+ svntest.actions.run_and_verify_commit (wc_dir,
+ expected_output,
+ expected_status,
+ None,
+ None, None,
+ None, None,
+ omega_path)
 
   
 #----------------------------------------------------------------------
@@ -168,13 +165,11 @@
 def commit_one_new_file(sbox):
   "commit one newly added file"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
 
   # Make standard slew of changes to working copy.
- if make_standard_slew_of_changes(wc_dir): return 1
+ make_standard_slew_of_changes(wc_dir)
 
   gloo_path = os.path.join(wc_dir, 'A', 'D', 'H', 'gloo')
 
@@ -189,13 +184,13 @@
   expected_status.tweak('A/D/H/gloo', wc_rev=2, status=' ')
 
   # Commit the one file.
- return svntest.actions.run_and_verify_commit (wc_dir,
- expected_output,
- expected_status,
- None,
- None, None,
- None, None,
- gloo_path)
+ svntest.actions.run_and_verify_commit (wc_dir,
+ expected_output,
+ expected_status,
+ None,
+ None, None,
+ None, None,
+ gloo_path)
 
 
 #----------------------------------------------------------------------
@@ -203,13 +198,11 @@
 def commit_one_new_binary_file(sbox):
   "commit one newly added binary file"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
 
   # Make standard slew of changes to working copy.
- if make_standard_slew_of_changes(wc_dir): return 1
+ make_standard_slew_of_changes(wc_dir)
 
   gloo_path = os.path.join(wc_dir, 'A', 'D', 'H', 'gloo')
   svntest.main.run_svn(None, 'propset', 'svn:mime-type',
@@ -226,13 +219,13 @@
   expected_status.tweak('A/D/H/gloo', wc_rev=2, status=' ')
 
   # Commit the one file.
- return svntest.actions.run_and_verify_commit (wc_dir,
- expected_output,
- expected_status,
- None,
- None, None,
- None, None,
- gloo_path)
+ svntest.actions.run_and_verify_commit (wc_dir,
+ expected_output,
+ expected_status,
+ None,
+ None, None,
+ None, None,
+ gloo_path)
 
 
 #----------------------------------------------------------------------
@@ -240,9 +233,7 @@
 def commit_multiple_targets(sbox):
   "commit multiple targets"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
 
   # This test will commit three targets: psi, B, and pi. In that order.
@@ -285,13 +276,13 @@
   # A/D/G should still have a local property set, too.
   expected_status.tweak('A/D/G', status=' M')
 
- return svntest.actions.run_and_verify_commit (wc_dir,
- expected_output,
- expected_status,
- None,
- None, None,
- None, None,
- psi_path, AB_path, pi_path)
+ svntest.actions.run_and_verify_commit (wc_dir,
+ expected_output,
+ expected_status,
+ None,
+ None, None,
+ None, None,
+ psi_path, AB_path, pi_path)
 
 #----------------------------------------------------------------------
 
@@ -299,9 +290,7 @@
 def commit_multiple_targets_2(sbox):
   "commit multiple targets, 2nd variation"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
 
   # This test will commit three targets: psi, B, omega and pi. In that order.
@@ -346,27 +335,25 @@
   # A/D/G should still have a local property set, too.
   expected_status.tweak('A/D/G', status=' M')
 
- return svntest.actions.run_and_verify_commit (wc_dir,
- expected_output,
- expected_status,
- None,
- None, None,
- None, None,
- psi_path, AB_path,
- omega_path, pi_path)
+ svntest.actions.run_and_verify_commit (wc_dir,
+ expected_output,
+ expected_status,
+ None,
+ None, None,
+ None, None,
+ psi_path, AB_path,
+ omega_path, pi_path)
 
 #----------------------------------------------------------------------
 
 def commit_inclusive_dir(sbox):
   "commit wc_dir/A/D -- includes D. (anchor=A, tgt=D)"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
 
   # Make standard slew of changes to working copy.
- if make_standard_slew_of_changes(wc_dir): return 1
+ make_standard_slew_of_changes(wc_dir)
 
   # Create expected output tree.
   D_path = os.path.join(wc_dir, 'A', 'D')
@@ -397,26 +384,24 @@
   expected_status.tweak('A/D/H/chi', 'A/D/H/gloo', wc_rev=2, status=' ')
 
   # Commit the one file.
- return svntest.actions.run_and_verify_commit (wc_dir,
- expected_output,
- expected_status,
- None,
- None, None,
- None, None,
- D_path)
+ svntest.actions.run_and_verify_commit (wc_dir,
+ expected_output,
+ expected_status,
+ None,
+ None, None,
+ None, None,
+ D_path)
 
 #----------------------------------------------------------------------
 
 def commit_top_dir(sbox):
   "commit wc_dir -- (anchor=wc_dir, tgt={})"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
 
   # Make standard slew of changes to working copy.
- if make_standard_slew_of_changes(wc_dir): return 1
+ make_standard_slew_of_changes(wc_dir)
 
   # Create expected output tree.
   top_path = wc_dir
@@ -462,13 +447,13 @@
                         'A/D/H/gloo', wc_rev=2, status=' ')
 
   # Commit the one file.
- return svntest.actions.run_and_verify_commit (wc_dir,
- expected_output,
- expected_status,
- None,
- None, None,
- None, None,
- wc_dir)
+ svntest.actions.run_and_verify_commit (wc_dir,
+ expected_output,
+ expected_status,
+ None,
+ None, None,
+ None, None,
+ wc_dir)
 
 #----------------------------------------------------------------------
 
@@ -489,23 +474,21 @@
 def commit_unversioned_thing(sbox):
   "committing unversioned object produces error"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
 
   # Create an unversioned file in the wc.
   svntest.main.file_append(os.path.join(wc_dir, 'blorg'), "nothing to see")
 
   # Commit a non-existent file and *expect* failure:
- return svntest.actions.run_and_verify_commit (wc_dir,
- None,
- None,
- "Can't find an entry",
- None, None,
- None, None,
- os.path.join(wc_dir,'blorg'))
-
+ svntest.actions.run_and_verify_commit (wc_dir,
+ None,
+ None,
+ "Can't find an entry",
+ None, None,
+ None, None,
+ os.path.join(wc_dir,'blorg'))
+
 #----------------------------------------------------------------------
 
 # regression test for bug #391
@@ -513,9 +496,7 @@
 def nested_dir_replacements(sbox):
   "replace two nested dirs, verify empty contents"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
 
   # Delete and re-add A/D (a replacement), and A/D/H (another replace).
@@ -546,8 +527,7 @@
                         'A/D/H/chi', 'A/D/H/omega', 'A/D/H/psi', 'A/D/gamma',
                         status='D ')
 
- if svntest.actions.run_and_verify_status(wc_dir, expected_status):
- return 1
+ svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
   # Build expected post-commit trees:
 
@@ -569,13 +549,13 @@
                         'A/D/H/chi', 'A/D/H/omega', 'A/D/H/psi', 'A/D/gamma')
 
   # Commit from the top of the working copy and verify output & status.
- return svntest.actions.run_and_verify_commit (wc_dir,
- expected_output,
- expected_status,
- None,
- None, None,
- None, None,
- wc_dir)
+ svntest.actions.run_and_verify_commit (wc_dir,
+ expected_output,
+ expected_status,
+ None,
+ None, None,
+ None, None,
+ wc_dir)
 
 #----------------------------------------------------------------------
 
@@ -587,9 +567,7 @@
 def hudson_part_1(sbox):
   "hudson prob 1.0: delete file, commit, update"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
 
   # Remove gamma from the working copy.
@@ -607,12 +585,11 @@
   expected_status.remove('A/D/gamma')
   
   # Commit the deletion of gamma and verify.
- if svntest.actions.run_and_verify_commit (wc_dir,
- expected_output,
- expected_status,
- None, None, None, None, None,
- wc_dir):
- return 1
+ svntest.actions.run_and_verify_commit (wc_dir,
+ expected_output,
+ expected_status,
+ None, None, None, None, None,
+ wc_dir)
 
   # Now gamma should be marked as `deleted' under the hood. When we
   # update, we should no output, and a perfect, virginal status list
@@ -629,10 +606,10 @@
   expected_status = svntest.actions.get_virginal_state(wc_dir, 2)
   expected_status.remove('A/D/gamma')
 
- return svntest.actions.run_and_verify_update(wc_dir,
- expected_output,
- expected_disk,
- expected_status)
+ svntest.actions.run_and_verify_update(wc_dir,
+ expected_output,
+ expected_disk,
+ expected_status)
 
 
 #----------------------------------------------------------------------
@@ -643,9 +620,7 @@
 def hudson_part_1_variation_1(sbox):
   "hudson prob 1.1: delete dir, commit, update"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
 
   # Remove H from the working copy.
@@ -663,12 +638,11 @@
   expected_status.remove('A/D/H', 'A/D/H/chi', 'A/D/H/omega', 'A/D/H/psi')
   
   # Commit the deletion of H and verify.
- if svntest.actions.run_and_verify_commit (wc_dir,
- expected_output,
- expected_status,
- None, None, None, None, None,
- wc_dir):
- return 1
+ svntest.actions.run_and_verify_commit (wc_dir,
+ expected_output,
+ expected_status,
+ None, None, None, None, None,
+ wc_dir)
 
   # Now H should be marked as `deleted' under the hood. When we
   # update, we should no see output, and a perfect, virginal status
@@ -685,10 +659,10 @@
   expected_status = svntest.actions.get_virginal_state(wc_dir, 2)
   expected_status.remove('A/D/H', 'A/D/H/chi', 'A/D/H/omega', 'A/D/H/psi')
 
- return svntest.actions.run_and_verify_update(wc_dir,
- expected_output,
- expected_disk,
- expected_status)
+ svntest.actions.run_and_verify_update(wc_dir,
+ expected_output,
+ expected_disk,
+ expected_status)
 
 #----------------------------------------------------------------------
 
@@ -699,9 +673,7 @@
 def hudson_part_1_variation_2(sbox):
   "hudson prob 1.2: delete, commit, re-add, commit"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
 
   # Remove gamma from the working copy.
@@ -719,12 +691,11 @@
   expected_status.remove('A/D/gamma')
   
   # Commit the deletion of gamma and verify.
- if svntest.actions.run_and_verify_commit (wc_dir,
- expected_output,
- expected_status,
- None, None, None, None, None,
- wc_dir):
- return 1
+ svntest.actions.run_and_verify_commit (wc_dir,
+ expected_output,
+ expected_status,
+ None, None, None, None, None,
+ wc_dir)
 
   # Now gamma should be marked as `deleted' under the hood.
   # Go ahead and re-add gamma, so that is *also* scheduled for addition.
@@ -737,8 +708,7 @@
   expected_status.tweak(wc_rev=1)
   expected_status.tweak('A/D/gamma', wc_rev=0, status='A ')
 
- if svntest.actions.run_and_verify_status(wc_dir, expected_status):
- return 1
+ svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
   # Create expected commit output.
   expected_output = svntest.wc.State(wc_dir, {
@@ -750,11 +720,11 @@
   expected_status.tweak(wc_rev=1)
   expected_status.tweak('A/D/gamma', wc_rev=3)
 
- return svntest.actions.run_and_verify_commit (wc_dir,
- expected_output,
- expected_status,
- None, None, None, None, None,
- wc_dir)
+ svntest.actions.run_and_verify_commit (wc_dir,
+ expected_output,
+ expected_status,
+ None, None, None, None, None,
+ wc_dir)
 
 
 #----------------------------------------------------------------------
@@ -767,9 +737,7 @@
 def hudson_part_2(sbox):
   "hudson prob 2.0: prop commit on old dir fails"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
 
   # Remove gamma from the working copy.
@@ -788,12 +756,11 @@
   expected_status.remove('A/D/gamma')
   
   # Commit the deletion of gamma and verify.
- if svntest.actions.run_and_verify_commit (wc_dir,
- expected_output,
- expected_status,
- None, None, None, None, None,
- wc_dir):
- return 1
+ svntest.actions.run_and_verify_commit (wc_dir,
+ expected_output,
+ expected_status,
+ None, None, None, None, None,
+ wc_dir)
 
   # Now gamma should be marked as `deleted' under the hood, at
   # revision 2. Meanwhile, A/D is still lagging at revision 1.
@@ -802,13 +769,13 @@
   svntest.main.run_svn(None, 'ps', 'foo', 'bar', D_path)
 
   # Commit and *expect* a repository Merge failure:
- return svntest.actions.run_and_verify_commit (wc_dir,
- None,
- None,
- "out.of.date",
- None, None,
- None, None,
- wc_dir)
+ svntest.actions.run_and_verify_commit (wc_dir,
+ None,
+ None,
+ "out.of.date",
+ None, None,
+ None, None,
+ wc_dir)
 
 #----------------------------------------------------------------------
 
@@ -822,9 +789,7 @@
 def hudson_part_2_1(sbox):
   "hudson prob 2.1: move files, update empty dir"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
 
   # Move all the files in H to G
@@ -895,9 +860,7 @@
 def hook_test(sbox):
   "hook testing"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   # Get paths to the working copy and repository
   wc_dir = sbox.wc_dir
   repo_dir = sbox.repo_dir
@@ -932,16 +895,12 @@
   expected_output = (abs_repo_dir + "\n",
                      abs_repo_dir + " 1\n",
                      abs_repo_dir + " 2\n")
- output, errput = svntest.main.run_svn (None, 'ci', '--quiet',
- '-m', 'log msg', wc_dir)
+
+ svntest.actions.run_and_verify_svn ( "",
+ expected_output, None,
+ 'ci', '--quiet',
+ '-m', 'log msg', wc_dir)
 
- # Make sure we got the right output.
- if output != expected_output:
- return 1
-
- return 0
-
-
 #----------------------------------------------------------------------
 
 # Regression test for bug #469, whereby merge() was once reporting
@@ -951,9 +910,7 @@
 def merge_mixed_revisions(sbox):
   "commit mixed-rev wc (no erroneous merge error)"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
 
   # Make some convenient paths.
@@ -979,12 +936,11 @@
   expected_status.tweak(wc_rev=1)
   expected_status.tweak('iota', 'A/D/H/chi', wc_rev=2)
 
- if svntest.actions.run_and_verify_commit (wc_dir,
- expected_output,
- expected_status,
- None, None, None, None, None,
- wc_dir):
- return 1
+ svntest.actions.run_and_verify_commit (wc_dir,
+ expected_output,
+ expected_status,
+ None, None, None, None, None,
+ wc_dir)
 
 
   # 2. svn up A/D/H
@@ -1000,11 +956,10 @@
     'psi' : Item("This is the file 'psi'."),
     })
   expected_output = svntest.wc.State(wc_dir, { })
- if svntest.actions.run_and_verify_update (H_path,
- expected_output,
- expected_disk,
- expected_status):
- return 1
+ svntest.actions.run_and_verify_update (H_path,
+ expected_output,
+ expected_disk,
+ expected_status)
 
 
   # 3. echo "moo" >> iota; svn ci iota
@@ -1018,12 +973,11 @@
                         wc_rev=2)
   expected_status.tweak('iota', wc_rev=3)
 
- if svntest.actions.run_and_verify_commit (wc_dir,
- expected_output,
- expected_status,
- None, None, None, None, None,
- wc_dir):
- return 1
+ svntest.actions.run_and_verify_commit (wc_dir,
+ expected_output,
+ expected_status,
+ None, None, None, None, None,
+ wc_dir)
 
 
   # 4. echo "moo" >> A/D/H/chi; svn ci A/D/H/chi
@@ -1036,12 +990,11 @@
   expected_status.tweak('A/D/H/chi', wc_rev=4)
   expected_status.tweak('A/D/H', 'A/D/H/omega', 'A/D/H/psi', wc_rev=2)
   expected_status.tweak('iota', wc_rev=3)
- if svntest.actions.run_and_verify_commit (wc_dir,
- expected_output,
- expected_status,
- None, None, None, None, None,
- wc_dir):
- return 1
+ svntest.actions.run_and_verify_commit (wc_dir,
+ expected_output,
+ expected_status,
+ None, None, None, None, None,
+ wc_dir)
 
   # 5. echo "moo" >> iota; svn ci iota
   svntest.main.file_append(iota_path, "moomoo")
@@ -1053,12 +1006,11 @@
   expected_status.tweak('A/D/H', 'A/D/H/omega', 'A/D/H/psi', wc_rev=2)
   expected_status.tweak('A/D/H/chi', wc_rev=4)
   expected_status.tweak('iota', wc_rev=5)
- if svntest.actions.run_and_verify_commit (wc_dir,
- expected_output,
- expected_status,
- None, None, None, None, None,
- wc_dir):
- return 1
+ svntest.actions.run_and_verify_commit (wc_dir,
+ expected_output,
+ expected_status,
+ None, None, None, None, None,
+ wc_dir)
 
   # At this point, here is what our tree should look like:
   # _ 1 ( 5) working_copies/commit_tests-10
@@ -1098,20 +1050,18 @@
   expected_status.tweak('iota', 'A/D/H/omega', wc_rev=6)
   expected_status.tweak('A/D/H', 'A/D/H/psi', wc_rev=2)
   expected_status.tweak('A/D/H/chi', wc_rev=4)
- return svntest.actions.run_and_verify_commit (wc_dir,
- expected_output,
- expected_status,
- None, None, None, None, None,
- wc_dir)
+ svntest.actions.run_and_verify_commit (wc_dir,
+ expected_output,
+ expected_status,
+ None, None, None, None, None,
+ wc_dir)
 
 #----------------------------------------------------------------------
 
 def commit_uri_unsafe(sbox):
   "commit files and dirs with URI-unsafe characters"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
 
   # Note: on Windows, files can't have angle brackets in them, so we
@@ -1188,11 +1138,11 @@
   for item in expected_output.desc.keys():
     expected_status.add({ item : Item(wc_rev=2, repos_rev=2, status=' ') })
 
- return svntest.actions.run_and_verify_commit (wc_dir,
- expected_output,
- expected_status,
- None, None, None, None, None,
- wc_dir)
+ svntest.actions.run_and_verify_commit (wc_dir,
+ expected_output,
+ expected_status,
+ None, None, None, None, None,
+ wc_dir)
 
 
 #----------------------------------------------------------------------
@@ -1200,9 +1150,7 @@
 def commit_deleted_edited(sbox):
   "commit deleted yet edited files"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
 
   # Make some convenient paths.
@@ -1229,20 +1177,18 @@
   expected_status.remove('iota', 'A/mu')
   expected_status.tweak(wc_rev=1)
 
- return svntest.actions.run_and_verify_commit (wc_dir,
- expected_output,
- expected_status,
- None, None, None, None, None,
- wc_dir)
+ svntest.actions.run_and_verify_commit (wc_dir,
+ expected_output,
+ expected_status,
+ None, None, None, None, None,
+ wc_dir)
   
 #----------------------------------------------------------------------
 
 def commit_in_dir_scheduled_for_addition(sbox):
   "commit a file inside dir scheduled for addition"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
 
   A_path = os.path.join(wc_dir, 'A')
@@ -1253,14 +1199,13 @@
 
   # Commit a copied thing inside an added-with-history directory,
   # expecting a specific error to occur!
- if svntest.actions.run_and_verify_commit (wc_dir,
- None,
- None,
- "unversioned",
- None, None,
- None, None,
- mu_path):
- return 1
+ svntest.actions.run_and_verify_commit (wc_dir,
+ None,
+ None,
+ "unversioned",
+ None, None,
+ None, None,
+ mu_path)
   
   Q_path = os.path.join(wc_dir, 'Q')
   bloo_path = os.path.join(Q_path, 'bloo')
@@ -1271,13 +1216,13 @@
   
   # Commit a regular added thing inside an added directory,
   # expecting a specific error to occur!
- return svntest.actions.run_and_verify_commit (wc_dir,
- None,
- None,
- "not versioned",
- None, None,
- None, None,
- bloo_path)
+ svntest.actions.run_and_verify_commit (wc_dir,
+ None,
+ None,
+ "not versioned",
+ None, None,
+ None, None,
+ bloo_path)
   
 #----------------------------------------------------------------------
 
@@ -1285,9 +1230,7 @@
 def commit_rmd_and_deleted_file(sbox):
   "commit deleted (and missing) file"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
   mu_path = os.path.join(wc_dir, 'A', 'mu')
 
@@ -1295,21 +1238,17 @@
   svntest.main.run_svn(None, 'rm', mu_path)
 
   # Commit, hoping to see no errors
- out, err = svntest.main.run_svn(None, 'commit', '-m', 'logmsg', mu_path)
- if len(err) != 0:
- return 1
+ svntest.actions.run_and_verify_svn( "Output on stderr where none expected",
+ SVNAnyOutput, None,
+ 'commit', '-m', 'logmsg', mu_path)
 
- return 0
-
 #----------------------------------------------------------------------
 
 # Issue #644 which failed over ra_dav.
 def commit_add_file_twice(sbox):
   "issue 644 attempt to add a file twice"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
 
   # Create a file
@@ -1331,14 +1270,13 @@
   expected_status.tweak('A/D/H/gloo', wc_rev=2, status=' ')
 
   # Commit should succeed
- if svntest.actions.run_and_verify_commit (wc_dir,
- expected_output,
- expected_status,
- None,
- None, None,
- None, None,
- wc_dir):
- return 1
+ svntest.actions.run_and_verify_commit (wc_dir,
+ expected_output,
+ expected_status,
+ None,
+ None, None,
+ None, None,
+ wc_dir)
 
   # Update to state before commit
   svntest.main.run_svn(None, 'up', '-r', '1', wc_dir)
@@ -1349,13 +1287,13 @@
   svntest.main.run_svn(None, 'add', gloo_path)
 
   # Commit and *expect* a failure:
- return svntest.actions.run_and_verify_commit (wc_dir,
- None,
- None,
- "already exists",
- None, None,
- None, None,
- wc_dir)
+ svntest.actions.run_and_verify_commit (wc_dir,
+ None,
+ None,
+ "already exists",
+ None, None,
+ None, None,
+ wc_dir)
 
 #----------------------------------------------------------------------
 
@@ -1367,8 +1305,8 @@
   "commit from a dir with a longer name than the wc"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
+
   was_dir = os.getcwd()
   abs_wc_dir = os.path.join(was_dir, wc_dir)
   
@@ -1405,30 +1343,28 @@
 def commit_with_lock(sbox):
   "try to commit when directory is locked"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   # modify gamma and lock its directory
   wc_dir = sbox.wc_dir
+
   D_path = os.path.join(wc_dir, 'A', 'D')
   gamma_path = os.path.join(D_path, 'gamma')
   svntest.main.file_append(gamma_path, "modified gamma")
   svntest.actions.lock_admin_dir(D_path)
 
   # this commit should fail
- if svntest.actions.run_and_verify_commit(wc_dir,
- None,
- None,
- 'already-locked',
- None, None,
- None, None,
- wc_dir):
- return 1
+ svntest.actions.run_and_verify_commit(wc_dir,
+ None,
+ None,
+ 'already-locked',
+ None, None,
+ None, None,
+ wc_dir)
                                            
   # unlock directory
- outlines, errlines = svntest.main.run_svn(None, 'cleanup', D_path)
- if errlines:
- return 1
+ svntest.actions.run_and_verify_svn( "Output on stderr where none expected",
+ [], None,
+ 'cleanup', D_path)
 
   # this commit should succeed
   expected_output = svntest.wc.State(wc_dir, {
@@ -1437,16 +1373,14 @@
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
   expected_status.tweak(repos_rev=2) # post-commit status
   expected_status.tweak('A/D/gamma', wc_rev=2)
- if svntest.actions.run_and_verify_commit(wc_dir,
- expected_output,
- expected_status,
- None,
- None, None,
- None, None,
- wc_dir):
- return 1
+ svntest.actions.run_and_verify_commit(wc_dir,
+ expected_output,
+ expected_status,
+ None,
+ None, None,
+ None, None,
+ wc_dir)
 
-
 #----------------------------------------------------------------------
 
 # Explicitly commit the current directory. This did at one point fail
@@ -1491,9 +1425,7 @@
 def failed_commit(sbox):
   "commit with conflicts and check txn in repo"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
 
   # Make the other working copy
@@ -1508,21 +1440,20 @@
   svntest.main.file_append (other_iota_path, "More different stuff in iota")
 
   # Commit both working copies. The second commit should fail.
- output, errput = svntest.main.run_svn(None, 'commit', '-m', 'log', wc_dir)
- if errput:
- return 1
+ svntest.actions.run_and_verify_svn( "Output on stderr where none expected",
+ SVNAnyOutput, None,
+ 'commit', '-m', 'log', wc_dir)
 
- output, errput = svntest.main.run_svn(1, 'commit', '-m', 'log', other_wc_dir)
- if not errput:
- return 1
+ svntest.actions.run_and_verify_svn( "Output on stderr expected",
+ None, SVNAnyOutput,
+ 'commit', '-m', 'log', other_wc_dir)
 
   # Now list the txns in the repo. The list should be empty.
   output, errput = svntest.main.run_svnadmin('lstxns', sbox.repo_dir)
- if svntest.actions.compare_and_display_lines(
+ svntest.actions.compare_and_display_lines(
     "Error running 'svnadmin lstxns'.",
- 'STDERR', [], errput):
- return 1
- return svntest.actions.compare_and_display_lines(
+ 'STDERR', [], errput)
+ svntest.actions.compare_and_display_lines(
     "Output of 'svnadmin lstxns' is unexpected.",
     'STDOUT', [], output)
 
@@ -1536,22 +1467,20 @@
 def commit_multiple_wc(sbox):
   "attempted commit from multiple wc fails"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
 
   # Checkout a second working copy
   wc2_dir = os.path.join(wc_dir, 'A', 'wc2')
   url = svntest.main.current_repo_url
- stdout_lines, stderr_lines = svntest.main.run_svn (None, 'checkout',
- '--username',
- svntest.main.wc_author,
- '--password',
- svntest.main.wc_passwd,
- url, wc2_dir)
- if len (stderr_lines) != 0:
- return 1
+ svntest.actions.run_and_verify_svn ( "Output on stderr where none expected",
+ SVNAnyOutput, None,
+ 'checkout',
+ '--username',
+ svntest.main.wc_author,
+ '--password',
+ svntest.main.wc_passwd,
+ url, wc2_dir)
 
   # Modify both working copies
   mu_path = os.path.join(wc_dir, 'A', 'mu')
@@ -1562,32 +1491,26 @@
   # Verify modified status
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
   expected_status.tweak('A/mu', status='M ')
- if svntest.actions.run_and_verify_status(wc_dir, expected_status):
- return 1
+ svntest.actions.run_and_verify_status(wc_dir, expected_status)
   expected_status2 = svntest.actions.get_virginal_state(wc2_dir, 1)
   expected_status2.tweak('A/B/lambda', status='M ')
- if svntest.actions.run_and_verify_status(wc2_dir, expected_status2):
- return 1
+ svntest.actions.run_and_verify_status(wc2_dir, expected_status2)
 
   # Commit should fail, even though one target is a "child" of the other.
- output, errput = svntest.main.run_svn("Not locked", 'commit', '-m', 'log',
- wc_dir, wc2_dir)
- if not errput:
- return 1
+ svntest.actions.run_and_verify_svn( "Output on stderr expected",
+ None, "Not locked",
+ 'commit', '-m', 'log',
+ wc_dir, wc2_dir)
 
   # Verify status unchanged
- if svntest.actions.run_and_verify_status(wc_dir, expected_status):
- return 1
- if svntest.actions.run_and_verify_status(wc2_dir, expected_status2):
- return 1
+ svntest.actions.run_and_verify_status(wc_dir, expected_status)
+ svntest.actions.run_and_verify_status(wc2_dir, expected_status2)
 
 
 def commit_symlink(sbox):
   "committing a symlink should fail"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
 
   newfile_path = os.path.join(wc_dir, 'newfile')
@@ -1598,14 +1521,13 @@
   os.remove(newfile_path)
   os.symlink('linktarget', newfile_path)
 
- out, err = svntest.main.run_svn(1, 'ci', '-m', 'log msg', wc_dir)
- if err:
- return 0
- else:
- return 1
+ svntest.actions.run_and_verify_svn( "Output on stderr expected",
+ None, SVNAnyOutput,
+ 'ci', '-m', 'log msg', wc_dir)
 
 def commit_nonrecursive(sbox):
   "commit named targets with -N (issues #1195, #1239)"
+
   sbox.build()
   wc_dir = sbox.wc_dir
 
@@ -1645,15 +1567,15 @@
   svntest.main.file_append(os.path.join(wc_dir, file4_path), 'this is file4')
 
   # Add them to version control.
- out, err = svntest.main.run_svn(None, 'add', '-N',
- os.path.join(wc_dir, file1_path),
- os.path.join(wc_dir, dir1_path),
- os.path.join(wc_dir, file2_path),
- os.path.join(wc_dir, file3_path),
- os.path.join(wc_dir, dir2_path),
- os.path.join(wc_dir, file4_path))
- if err:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn( "",
+ SVNAnyOutput, None,
+ 'add', '-N',
+ os.path.join(wc_dir, file1_path),
+ os.path.join(wc_dir, dir1_path),
+ os.path.join(wc_dir, file2_path),
+ os.path.join(wc_dir, file3_path),
+ os.path.join(wc_dir, dir2_path),
+ os.path.join(wc_dir, file4_path))
 
   # Commit. We should see all 6 items (2 dirs, 4 files) get sent.
   expected_output = svntest.wc.State(
@@ -1748,15 +1670,14 @@
   svntest.main.file_append(os.path.join(wc_dir, nocommit_path), 'nocommit')
 
   # Add them to version control.
- out, err = svntest.main.run_svn(None, 'add', '-N',
- os.path.join(wc_dir, dirA_path),
- os.path.join(wc_dir, fileA_path),
- os.path.join(wc_dir, fileB_path),
- os.path.join(wc_dir, dirB_path),
- os.path.join(wc_dir, fileC_path),
- os.path.join(wc_dir, nocommit_path))
- if err:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn( "", SVNAnyOutput, None,
+ 'add', '-N',
+ os.path.join(wc_dir, dirA_path),
+ os.path.join(wc_dir, fileA_path),
+ os.path.join(wc_dir, fileB_path),
+ os.path.join(wc_dir, dirB_path),
+ os.path.join(wc_dir, fileC_path),
+ os.path.join(wc_dir, nocommit_path))
 
   expected_output = svntest.wc.State(
     wc_dir,
@@ -1812,9 +1733,7 @@
 def commit_out_of_date_deletions(sbox):
   "commit deletion of out-of-date file or dir"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
 
   # Make a backup copy of the working copy
@@ -1836,14 +1755,13 @@
   expected_status.tweak(wc_rev=1)
   expected_status.tweak('A/D/H/omega', 'A/C', wc_rev=2, status=' ')
 
- if svntest.actions.run_and_verify_commit (wc_dir,
- expected_output,
- expected_status,
- None,
- None, None,
- None, None,
- wc_dir):
- return 1
+ svntest.actions.run_and_verify_commit (wc_dir,
+ expected_output,
+ expected_status,
+ None,
+ None, None,
+ None, None,
+ wc_dir)
 
   # Now, in the second working copy, schedule both omega and C for deletion.
   omega_path = os.path.join(wc_backup, 'A', 'D', 'H', 'omega')
@@ -1860,7 +1778,7 @@
       out_of_date_error = 1;
 
   if out_of_date_error == 0:
- return 1
+ raise svntest.Failure
 
   # Attempt to delete directory C. This should return an (expected)
   # out-of-dateness error.
@@ -1872,18 +1790,14 @@
       out_of_date_error = 1;
 
   if out_of_date_error == 0:
- return 1
+ raise svntest.Failure
 
- return 0
-
-
 def commit_with_bad_log_message(sbox):
   "commit with a log message containing bad data"
 
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
+
   iota_path = os.path.join(wc_dir, 'iota')
   log_msg_path = os.path.join(wc_dir, 'log-message')
 
@@ -1894,16 +1808,14 @@
   svntest.main.file_append(log_msg_path, '\x00')
 
   # Commit and expect an error.
- if svntest.actions.run_and_verify_commit(wc_dir,
- None, None,
- "contains a zero byte",
- None, None,
- None, None,
- '-F', log_msg_path,
- iota_path):
- return 1
+ svntest.actions.run_and_verify_commit(wc_dir,
+ None, None,
+ "contains a zero byte",
+ None, None,
+ None, None,
+ '-F', log_msg_path,
+ iota_path)
 
-
 def from_wc_top_with_bad_editor(sbox):
   "commit with invalid external editor cmd"
 
@@ -1930,20 +1842,17 @@
   sbox.build()
   wc_dir = sbox.wc_dir
   
- out, err = svntest.main.run_svn(None, 'pset', 'fish', 'food', wc_dir)
- if err:
- print "Unexpected failure from propset."
- raise svntest.Failure
-
+ svntest.actions.run_and_verify_svn("Unexpected failure from propset.",
+ SVNAnyOutput, None,
+ 'pset', 'fish', 'food', wc_dir)
   was_cwd = os.getcwd()
   try:
     os.chdir(wc_dir)
- out, err = svntest.main.run_svn(1, 'ci', '--editor-cmd', 'no_such-editor')
+ out, err = svntest.actions.run_and_verify_svn(
+ "Commit succeeded when should have failed.",
+ None, SVNAnyOutput,
+ 'ci', '--editor-cmd', 'no_such-editor')
 
- if not err:
- print "Commit succeeded when should have failed."
- raise svntest.Failure
-
     err = string.join(map(string.strip, err), ' ')
     if not (re.match(".*no_such-editor.*", err)
             and re.match(".*Commit failed.*", err)):
Index: svnlook_tests.py
===================================================================
--- svnlook_tests.py (revision 6929)
+++ svnlook_tests.py (working copy)
@@ -47,7 +47,6 @@
   "test 'svnlook youngest' subcommand"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
   repo_dir = sbox.repo_dir
 
@@ -69,14 +68,13 @@
   expected_status.tweak(wc_rev=1)
   expected_status.tweak('A/mu', 'A/D/G/rho', wc_rev=2)
 
- if svntest.actions.run_and_verify_commit (wc_dir,
- expected_output,
- expected_status,
- None,
- None, None,
- None, None,
- wc_dir):
- raise svntest.Failure
+ svntest.actions.run_and_verify_commit (wc_dir,
+ expected_output,
+ expected_status,
+ None,
+ None, None,
+ None, None,
+ wc_dir)
 
   # Youngest revision should now be 2. Let's verify that.
   output, errput = svntest.main.run_svnlook("youngest", repo_dir)
@@ -97,11 +95,9 @@
   # move E to E2 and delete E2/alpha
   E_path = os.path.join(wc_dir, 'A', 'B', 'E')
   E2_path = os.path.join(wc_dir, 'A', 'B', 'E2')
- output, errput = svntest.main.run_svn(None, 'mv', E_path, E2_path)
- if errput: raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [], 'mv', E_path, E2_path)
   alpha_path = os.path.join(E2_path, 'alpha')
- output, errput = svntest.main.run_svn(None, 'rm', alpha_path)
- if errput: raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [], 'rm', alpha_path)
 
   # commit
   expected_output = svntest.wc.State(wc_dir, {
@@ -116,18 +112,16 @@
     'A/B/E2' : Item(status=' ', wc_rev=2, repos_rev=2),
     'A/B/E2/beta' : Item(status=' ', wc_rev=2, repos_rev=2),
     })
- if svntest.actions.run_and_verify_commit (wc_dir,
- expected_output,
- expected_status,
- None,
- None, None,
- None, None,
- wc_dir):
- raise svntest.Failure
+ svntest.actions.run_and_verify_commit (wc_dir,
+ expected_output,
+ expected_status,
+ None,
+ None, None,
+ None, None,
+ wc_dir)
 
   output, errput = svntest.main.run_svnlook("dirs-changed", repo_dir)
- if errput:
- raise svntest.Failure
+ if errput: raise svntest.Failure
 
   # Okay. No failure, but did we get the right output?
   if len(output) != 2:
@@ -148,22 +142,21 @@
 
   # Add a bogus property to iota
   iota_path = os.path.join(wc_dir, 'iota')
- output, errput = svntest.main.run_svn(None, 'propset',
- 'bogus_prop', 'bogus_val', iota_path)
- if errput: raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [], 'propset',
+ 'bogus_prop', 'bogus_val', iota_path)
 
   # commit the change
- output, errput = svntest.main.run_svn(None, 'ci', '-m', 'log msg', iota_path)
- if errput: raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'ci', '-m', 'log msg', iota_path)
 
   # Grab the diff
- expected_output, errput = svntest.main.run_svn(None, 'diff', '-r',
- 'PREV', iota_path)
- if errput: raise svntest.Failure
+ expected_output, err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'diff',
+ '-r', 'PREV',
+ iota_path)
 
   output, errput = svntest.main.run_svnlook("diff", repo_dir)
- if errput:
- raise svntest.Failure
+ if errput: raise svntest.Failure
 
   # Okay. No failure, but did we get the right output?
   if len(output) != len(expected_output):
Index: schedule_tests.py
===================================================================
--- schedule_tests.py (revision 6929)
+++ schedule_tests.py (working copy)
@@ -64,11 +64,9 @@
 def add_files(sbox):
   "schedule: add some files"
 
+ sbox.build()
   wc_dir = sbox.wc_dir
 
- if svntest.actions.make_repo_and_wc(sbox):
- return 1
-
   # Create some files, then schedule them for addition
   delta_path = os.path.join(wc_dir, 'delta')
   zeta_path = os.path.join(wc_dir, 'A', 'B', 'zeta')
@@ -88,18 +86,16 @@
     'A/D/G/epsilon' : Item(status='A ', wc_rev=0, repos_rev=1),
     })
 
- return svntest.actions.run_and_verify_status(wc_dir, expected_status)
+ svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
 #----------------------------------------------------------------------
 
 def add_directories(sbox):
   "schedule: add some directories"
 
+ sbox.build()
   wc_dir = sbox.wc_dir
-
- if svntest.actions.make_repo_and_wc(sbox):
- return 1
-
+
   # Create some directories, then schedule them for addition
   X_path = os.path.join(wc_dir, 'X')
   Y_path = os.path.join(wc_dir, 'A', 'C', 'Y')
@@ -119,18 +115,16 @@
     'A/D/H/Z' : Item(status='A ', wc_rev=0, repos_rev=1),
     })
 
- return svntest.actions.run_and_verify_status(wc_dir, expected_status)
+ svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
 #----------------------------------------------------------------------
 
 def nested_adds(sbox):
   "schedule: add some nested files and directories"
 
+ sbox.build()
   wc_dir = sbox.wc_dir
 
- if svntest.actions.make_repo_and_wc(sbox):
- return 1
-
   # Create some directories then schedule them for addition
   X_path = os.path.join(wc_dir, 'X')
   Y_path = os.path.join(wc_dir, 'A', 'C', 'Y')
@@ -178,27 +172,27 @@
     'A/D/H/Z/zeta' : Item(status='A ', wc_rev=0, repos_rev=1),
     })
 
- return svntest.actions.run_and_verify_status(wc_dir, expected_status)
+ svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
 #----------------------------------------------------------------------
 
 def add_executable(sbox):
   "schedule: add some executable files"
 
- if sbox.build():
- return 1
+ sbox.build()
+
   def runTest(wc_dir, fileName, perm, executable):
     fileName = os.path.join(wc_dir, fileName)
     if executable:
- expected = (["*\n"], [])
+ expected_out = ["*\n"]
     else:
- expected = ([], [])
+ expected_out = []
     f = open(fileName,"w")
     f.close()
     os.chmod(fileName,perm)
     svntest.main.run_svn(None, 'add', fileName)
- return expected != svntest.main.run_svn(None, 'propget',
- "svn:executable", fileName)
+ svntest.actions.run_and_verify_svn(None, expected_out, [],
+ 'propget', "svn:executable", fileName)
   test_cases = [
     ("all_exe", 0777, 1),
     ("none_exe", 0666, 0),
@@ -207,19 +201,16 @@
     ("other_exe", 0667, 0),
     ]
   for test_case in test_cases:
- if runTest(sbox.wc_dir, *test_case):
- return 1
+ runTest(sbox.wc_dir, *test_case)
 
 #----------------------------------------------------------------------
 
 def delete_files(sbox):
   "schedule: delete some files"
 
+ sbox.build()
   wc_dir = sbox.wc_dir
 
- if svntest.actions.make_repo_and_wc(sbox):
- return 1
-
   # Schedule some files for deletion
   iota_path = os.path.join(wc_dir, 'iota')
   mu_path = os.path.join(wc_dir, 'A', 'mu')
@@ -233,18 +224,16 @@
   expected_status.tweak('iota', 'A/mu', 'A/D/G/rho', 'A/D/H/omega',
                         status='D ')
 
- return svntest.actions.run_and_verify_status(wc_dir, expected_status)
+ svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
 #----------------------------------------------------------------------
 
 def delete_dirs(sbox):
   "schedule: delete some directories"
 
+ sbox.build()
   wc_dir = sbox.wc_dir
 
- if svntest.actions.make_repo_and_wc(sbox):
- return 1
-
   # Schedule some directories for deletion (this is recursive!)
   E_path = os.path.join(wc_dir, 'A', 'B', 'E')
   F_path = os.path.join(wc_dir, 'A', 'B', 'F')
@@ -265,7 +254,7 @@
                         'A/D/H', 'A/D/H/chi', 'A/D/H/omega', 'A/D/H/psi',
                         status='D ')
 
- return svntest.actions.run_and_verify_status(wc_dir, expected_status)
+ svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
 
 #######################################################################
@@ -275,11 +264,9 @@
 def revert_add_files(sbox):
   "revert: add some files"
 
+ add_files(sbox)
   wc_dir = sbox.wc_dir
 
- if add_files(sbox):
- return 1
-
   # Revert our changes recursively from wc_dir.
   delta_path = os.path.join(wc_dir, 'delta')
   zeta_path = os.path.join(wc_dir, 'A', 'B', 'zeta')
@@ -287,32 +274,26 @@
   expected_output = ["Reverted " + delta_path + "\n",
                      "Reverted " + zeta_path + "\n",
                      "Reverted " + epsilon_path + "\n"]
- output, errput = svntest.main.run_svn (None, 'revert', '--recursive', wc_dir)
 
- # Make sure we got the right output.
- if len(errput) > 0:
- print errput
- return 1
+ output, err = svntest.actions.run_and_verify_svn( None, None, [],
+ 'revert',
+ '--recursive', wc_dir)
 
   ### do we really need to sort these?
- output = _tweak_paths(output) # FIXME: see commend at _tweak_paths
+ output = _tweak_paths(output) # FIXME: see comment at _tweak_paths
   output.sort()
   expected_output.sort()
   if output != expected_output:
- return 1
+ raise svntest.Failure
 
- return 0
-
 #----------------------------------------------------------------------
 
 def revert_add_directories(sbox):
   "revert: add some directories"
 
+ add_directories(sbox)
   wc_dir = sbox.wc_dir
 
- if add_directories(sbox):
- return 1
-
   # Revert our changes recursively from wc_dir.
   X_path = os.path.join(wc_dir, 'X')
   Y_path = os.path.join(wc_dir, 'A', 'C', 'Y')
@@ -320,32 +301,21 @@
   expected_output = ["Reverted " + X_path + "\n",
                      "Reverted " + Y_path + "\n",
                      "Reverted " + Z_path + "\n"]
- output, errput = svntest.main.run_svn (None, 'revert', '--recursive', wc_dir)
 
- # Make sure we got the right output.
- if len(errput) > 0:
- print errput
- return 1
+ expected_output = _tweak_paths(expected_output)
+ output, err = svntest.actions.run_and_verify_svn (None, None, [],
+ 'revert',
+ '--recursive', wc_dir)
 
- ### do we really need to sort these?
- output = _tweak_paths(output) # FIXME: see commend at _tweak_paths
- output.sort()
- expected_output.sort()
- if output != expected_output:
- return 1
 
- return 0
-
 #----------------------------------------------------------------------
 
 def revert_nested_adds(sbox):
   "revert: add some nested files and directories"
 
+ nested_adds(sbox)
   wc_dir = sbox.wc_dir
 
- if nested_adds(sbox):
- return 1
-
   # Revert our changes recursively from wc_dir.
   X_path = os.path.join(wc_dir, 'X')
   Y_path = os.path.join(wc_dir, 'A', 'C', 'Y')
@@ -353,31 +323,19 @@
   expected_output = ["Reverted " + X_path + "\n",
                      "Reverted " + Y_path + "\n",
                      "Reverted " + Z_path + "\n"]
- output, errput = svntest.main.run_svn (None, 'revert', '--recursive', wc_dir)
+ expected_output = _tweak_paths(expected_output)
+ output, err = svntest.actions.run_and_verify_svn (None, None, [],
+ 'revert',
+ '--recursive', wc_dir)
 
- # Make sure we got the right output.
- if len(errput) > 0:
- print errput
- return 1
-
- ### do we really need to sort these?
- output = _tweak_paths(output) # FIXME: see commend at _tweak_paths
- output.sort()
- expected_output.sort()
- if output != expected_output:
- return 1
-
- return 0
-
 #----------------------------------------------------------------------
 
 def revert_add_executable(sbox):
   "revert: add some executable files"
 
- if add_executable(sbox):
- return 1
-
+ add_executable(sbox)
   wc_dir = sbox.wc_dir
+
   all_path = os.path.join(wc_dir, 'all_exe')
   none_path = os.path.join(wc_dir, 'none_exe')
   user_path = os.path.join(wc_dir, 'user_exe')
@@ -390,33 +348,19 @@
                      "Reverted " + group_path + "\n",
                      "Reverted " + other_path + "\n"]
 
- output, errput = svntest.main.run_svn (None, 'revert',
- '--recursive', wc_dir)
+ expected_output = _tweak_paths(expected_output)
+ output, err = svntest.actions.run_and_verify_svn (None, None, [],
+ 'revert',
+ '--recursive', wc_dir)
 
- # Make sure we got the right output.
- if len(errput) > 0:
- print errput
- return 1
-
- ### do we really need to sort these?
- output = _tweak_paths(output) # FIXME: see commend at _tweak_paths
- output.sort()
- expected_output.sort()
- if output != expected_output:
- return 1
-
- return 0
-
 #----------------------------------------------------------------------
 
 def revert_delete_files(sbox):
   "revert: delete some files"
 
+ delete_files(sbox)
   wc_dir = sbox.wc_dir
 
- if delete_files(sbox):
- return 1
-
   # Revert our changes recursively from wc_dir.
   iota_path = os.path.join(wc_dir, 'iota')
   mu_path = os.path.join(wc_dir, 'A', 'mu')
@@ -426,32 +370,19 @@
                      "Reverted " + mu_path + "\n",
                      "Reverted " + omega_path + "\n",
                      "Reverted " + rho_path + "\n"]
- output, errput = svntest.main.run_svn (None, 'revert', '--recursive', wc_dir)
+ expected_output = _tweak_paths(expected_output)
+ output, err = svntest.actions.run_and_verify_svn (None, None, [],
+ 'revert',
+ '--recursive', wc_dir)
 
- # Make sure we got the right output.
- if len(errput) > 0:
- print errput
- return 1
-
- ### do we really need to sort these?
- output = _tweak_paths(output) # FIXME: see commend at _tweak_paths
- output.sort()
- expected_output.sort()
- if output != expected_output:
- return 1
-
- return 0
-
 #----------------------------------------------------------------------
 
 def revert_delete_dirs(sbox):
   "revert: delete some directories"
 
+ delete_dirs(sbox)
   wc_dir = sbox.wc_dir
 
- if delete_dirs(sbox):
- return 1
-
   # Revert our changes recursively from wc_dir.
   E_path = os.path.join(wc_dir, 'A', 'B', 'E')
   F_path = os.path.join(wc_dir, 'A', 'B', 'F')
@@ -469,23 +400,11 @@
                      "Reverted " + chi_path + "\n",
                      "Reverted " + omega_path + "\n",
                      "Reverted " + psi_path + "\n"]
- output, errput = svntest.main.run_svn (None, 'revert', '--recursive', wc_dir)
+ expected_output = _tweak_paths(expected_output)
+ output, err = svntest.actions.run_and_verify_svn (None, None, [],
+ 'revert',
+ '--recursive', wc_dir)
 
- # Make sure we got the right output.
- if len(errput) > 0:
- print errput
- return 1
-
- ### do we really need to sort these?
- output = _tweak_paths(output) # FIXME: see commend at _tweak_paths
- output.sort()
- expected_output.sort()
- if output != expected_output:
- return 1
-
- return 0
-
-
 #######################################################################
 # Stage III - Commit of modifications made in Stage 1
 #
@@ -493,66 +412,55 @@
 def commit_add_files(sbox):
   "commit: add some files"
 
- if add_files(sbox):
- return 1
+ add_files(sbox)
 
- return 1
- return 0
+ raise svntest.Failure
 
 #----------------------------------------------------------------------
 
 def commit_add_directories(sbox):
   "commit: add some directories"
 
- if add_directories(sbox):
- return 1
+ add_directories(sbox)
 
- return 1
- return 0
+ raise svntest.Failure
 
 #----------------------------------------------------------------------
 
 def commit_nested_adds(sbox):
   "commit: add some nested files and directories"
 
- if nested_adds(sbox):
- return 1
+ nested_adds(sbox)
 
- return 1
- return 0
+ raise svntest.Failure
 
 #----------------------------------------------------------------------
 
 def commit_add_executable(sbox):
   "commit: add some executable files"
 
- if add_executable(sbox):
- return 1
+ add_executable(sbox)
 
- return 1
- return 0
+ raise svntest.Failure
 
+
 #----------------------------------------------------------------------
 
 def commit_delete_files(sbox):
   "commit: delete some files"
 
- if delete_files(sbox):
- return 1
+ delete_files(sbox)
 
- return 1
- return 0
+ raise svntest.Failure
 
 #----------------------------------------------------------------------
 
 def commit_delete_dirs(sbox):
   "commit: delete some directories"
 
- if delete_dirs(sbox):
- return 1
+ delete_dirs(sbox)
 
- return 1
- return 0
+ raise svntest.Failure
 
 #----------------------------------------------------------------------
 # Regression test for issue #863:
@@ -566,11 +474,9 @@
 def unschedule_missing_added(sbox):
   "unschedule addition on missing items"
 
+ sbox.build()
   wc_dir = sbox.wc_dir
 
- if svntest.actions.make_repo_and_wc(sbox):
- return 1
-
   # Create some files and dirs, then schedule them for addition
   file1_path = os.path.join(wc_dir, 'file1')
   file2_path = os.path.join(wc_dir, 'file2')
@@ -591,8 +497,7 @@
     'dir2' : Item(status='A ', wc_rev=0, repos_rev=1),
     })
 
- if svntest.actions.run_and_verify_status(wc_dir, expected_status):
- return 1
+ svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
   # Poof, all 4 added things are now missing in action.
   os.remove(file1_path)
@@ -606,11 +511,8 @@
 
   # 'svn st' should now show absolutely zero local mods.
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
- if svntest.actions.run_and_verify_status(wc_dir, expected_status):
- return 1
+ svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
- return 0
-
 #----------------------------------------------------------------------
 # Regression test for issue #962:
 #
@@ -620,10 +522,10 @@
 def delete_missing(sbox):
   "schedule and commit deletion on missing items"
 
+ sbox.build
   wc_dir = sbox.wc_dir
 
- if svntest.actions.make_repo_and_wc(sbox):
- return 1
+ svntest.actions.make_repo_and_wc(sbox)
 
   mu_path = os.path.join(wc_dir, 'A', 'mu')
   H_path = os.path.join(wc_dir, 'A', 'D', 'H')
@@ -633,9 +535,7 @@
   svntest.main.safe_rmtree(H_path)
 
   # Now schedule them for deletion anyway, and make sure no error is output.
- stdout, stderr = svntest.main.run_svn(None, 'rm', mu_path, H_path)
- if len(stderr) != 0:
- return 1
+ svntest.actions.run_and_verify_svn(None, None, [], 'rm', mu_path, H_path)
 
   # Commit the deletions.
   expected_output = svntest.wc.State(wc_dir, {
@@ -648,11 +548,11 @@
                          'A/D/H/psi', 'A/D/H/omega', 'A/D/H/chi')
   expected_status.tweak(wc_rev=1)
 
- return svntest.actions.run_and_verify_commit (wc_dir,
- expected_output,
- expected_status,
- None, None, None, None, None,
- wc_dir)
+ svntest.actions.run_and_verify_commit (wc_dir,
+ expected_output,
+ expected_status,
+ None, None, None, None, None,
+ wc_dir)
 
 ########################################################################
 # Run the tests
Index: merge_tests.py
===================================================================
--- merge_tests.py (revision 6929)
+++ merge_tests.py (working copy)
@@ -98,7 +98,6 @@
   ## we're only interested in rho here.)
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
   # url = os.path.join(svntest.main.test_area_url, sbox.repo_dir)
   
@@ -200,9 +199,8 @@
   # We skip A/D/G/rho in this merge; it will be tested with a separate
   # merge command. Temporarily put it back to revision 1, so this
   # merge succeeds cleanly.
- out, err = svntest.main.run_svn(None, 'up', '-r', '1', other_rho_path)
- if err:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn( None, None, [],
+ 'up', '-r', '1', other_rho_path)
 
   # For A/D/G/tau, we append ten different lines, to conflict with the
   # ten lines appended in revision 3.
@@ -272,13 +270,16 @@
   # whole expected_foo routine for these intermediate operations;
   # they're not what we're here to test, after all, so it's enough to
   # know that they worked. Is this a bad practice? ###
- out, err = svntest.main.run_svn(None, 'revert', other_rho_path)
+ out, err = svntest.actions.run_and_verify_svn(None, None, None,
+ 'revert', other_rho_path)
   if (err):
     for line in err:
       print "Error reverting: ", line,
     raise svntest.Failure
 
- out, err = svntest.main.run_svn(None, 'up', '-r', '2', other_rho_path)
+ out, err = svntest.actions.run_and_verify_svn(None, None, None,
+ 'up', '-r', '2',
+ other_rho_path)
   if (err):
     for line in err:
       print "Error updating: ", line,
@@ -368,7 +369,6 @@
   "merge and add new files/dirs with history"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   C_path = os.path.join(wc_dir, 'A', 'C')
@@ -448,10 +448,8 @@
   # print "merge failed"
   # return 1
 
- outlines,errlines = svntest.main.run_svn(None, 'merge', '-r', '1:2', F_url,
- C_path)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'merge', '-r', '1:2', F_url, C_path)
 
   expected_status = svntest.actions.get_virginal_state(wc_dir, 2)
   expected_status.tweak(wc_rev=1)
@@ -498,7 +496,6 @@
   "merge that deletes items"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Rev 2 copy B to B2
@@ -506,9 +503,8 @@
   B2_path = os.path.join(wc_dir, 'A', 'B2')
   B_url = svntest.main.current_repo_url + '/A/B'
 
- outlines,errlines = svntest.main.run_svn(None, 'copy', B_path, B2_path)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'copy', B_path, B2_path)
 
   expected_output = wc.State(wc_dir, {
     'A/B2' : Item(verb='Adding'),
@@ -534,9 +530,8 @@
   # Rev 3 delete E and lambda from B
   E_path = os.path.join(B_path, 'E')
   lambda_path = os.path.join(B_path, 'lambda')
- outlines, errlines = svntest.main.run_svn(None, 'delete', E_path, lambda_path)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'delete', E_path, lambda_path)
 
   expected_output = wc.State(wc_dir, {
     'A/B/E' : Item(verb='Deleting'),
@@ -558,10 +553,9 @@
   # Local mods in B2
   B2_E_path = os.path.join(B2_path, 'E')
   B2_lambda_path = os.path.join(B2_path, 'lambda')
- outlines, errlines = svntest.main.run_svn(None, 'propset', 'foo', 'foo_val',
- B2_E_path, B2_lambda_path)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'propset', 'foo', 'foo_val',
+ B2_E_path, B2_lambda_path)
   expected_status.tweak(
     'A/B2/E', 'A/B2/lambda', status=' M'
     )
@@ -570,30 +564,25 @@
   # Merge rev 3 into B2
 
   # dry-run without force fails to delete local mods
- outlines, errlines = svntest.main.run_svn(1, 'merge', '-r', '2:3', B_url,
- B2_path, '--dry-run')
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'merge', '-r', '2:3', B_url,
+ B2_path, '--dry-run')
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
   # force dry-run to delete
- outlines, errlines = svntest.main.run_svn(None, 'merge', '-r', '2:3', B_url,
- B2_path, '--dry-run', '--force')
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'merge', '-r', '2:3', B_url,
+ B2_path, '--dry-run', '--force')
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
   # merge without force fails to delete local mods
- outlines, errlines = svntest.main.run_svn(1, 'merge', '-r', '2:3', B_url,
- B2_path)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'merge', '-r', '2:3', B_url, B2_path)
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
   # force merge to delete
- outlines, errlines = svntest.main.run_svn(None, 'merge', '-r', '2:3', B_url,
- B2_path, '--force')
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'merge', '-r', '2:3', B_url,
+ B2_path, '--force')
   
   expected_status.tweak(
     'A/B2/E', 'A/B2/E/alpha', 'A/B2/E/beta', 'A/B2/lambda', status='D '
@@ -608,20 +597,18 @@
   "some simple property merges"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Add a property to a file and a directory
   alpha_path = os.path.join(wc_dir, 'A', 'B', 'E', 'alpha')
   E_path = os.path.join(wc_dir, 'A', 'B', 'E')
- outlines, errlines = svntest.main.run_svn(None, 'propset', 'foo', 'foo_val',
- alpha_path)
- if errlines:
- return 1
- outlines, errlines = svntest.main.run_svn(None, 'propset', 'foo', 'foo_val',
- E_path)
- if errlines:
- raise svntest.Failure
+
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'propset', 'foo', 'foo_val',
+ alpha_path)
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'propset', 'foo', 'foo_val',
+ E_path)
 
   # Commit change as rev 2
   expected_output = svntest.wc.State(wc_dir, {
@@ -635,41 +622,29 @@
                                          expected_output, expected_status,
                                          None, None, None, None, None,
                                          wc_dir)
- outlines, errlines = svntest.main.run_svn(None, 'up', wc_dir)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'up', wc_dir)
 
   # Copy B to B2 as rev 3
   B_url = svntest.main.current_repo_url + '/A/B'
   B2_url = svntest.main.current_repo_url + '/A/B2'
 
- outlines,errlines = svntest.main.run_svn(None, 'copy', '-m', 'fumble',
- '--username', svntest.main.wc_author,
- '--password', svntest.main.wc_passwd,
- B_url, B2_url)
- if errlines:
- raise svntest.Failure
- outlines, errlines = svntest.main.run_svn(None, 'up', wc_dir)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'copy', '-m', 'fumble',
+ '--username', svntest.main.wc_author,
+ '--password', svntest.main.wc_passwd,
+ B_url, B2_url)
+ svntest.actions.run_and_verify_svn(None, None, [], 'up', wc_dir)
 
   # Modify a property and add a property for the file and directory
- outlines, errlines = svntest.main.run_svn(None, 'propset', 'foo', 'mod_foo',
- alpha_path)
- if errlines:
- raise svntest.Failure
- outlines, errlines = svntest.main.run_svn(None, 'propset', 'bar', 'bar_val',
- alpha_path)
- if errlines:
- raise svntest.Failure
- outlines, errlines = svntest.main.run_svn(None, 'propset', 'foo', 'mod_foo',
- E_path)
- if errlines:
- raise svntest.Failure
- outlines, errlines = svntest.main.run_svn(None, 'propset', 'bar', 'bar_val',
- E_path)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'propset', 'foo', 'mod_foo', alpha_path)
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'propset', 'bar', 'bar_val', alpha_path)
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'propset', 'foo', 'mod_foo', E_path)
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'propset', 'bar', 'bar_val', E_path)
 
   # Commit change as rev 4
   expected_status = svntest.actions.get_virginal_state(wc_dir, 3)
@@ -687,9 +662,7 @@
                                          expected_output, expected_status,
                                          None, None, None, None, None,
                                          wc_dir)
- outlines, errlines = svntest.main.run_svn(None, 'up', wc_dir)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [], 'up', wc_dir)
 
   ### This test needs more work. It's good enough to test issue 953,
   ### which is what caused me to write it, but it is not a thorough
@@ -704,29 +677,35 @@
                                       })
   expected_status.tweak(wc_rev=4)
   expected_status.tweak('A/B2/E', 'A/B2/E/alpha', status=' M')
- dry_out, dry_err = svntest.main.run_svn(None, 'merge', '--dry-run',
- '-r', '3:4', B_url, B2_path)
- std_out, std_err = svntest.main.run_svn(None, 'merge',
- '-r', '3:4', B_url, B2_path)
- if dry_err or std_err or dry_out != std_out:
+ dry_out, dry_err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'merge', '--dry-run',
+ '-r', '3:4',
+ B_url, B2_path)
+ std_out, std_err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'merge',
+ '-r', '3:4',
+ B_url, B2_path)
+ if dry_out != std_out:
     raise svntest.Failure
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
   # Revert merge
- outlines, errlines = svntest.main.run_svn(None, 'revert', '--recursive',
- wc_dir)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'revert', '--recursive', wc_dir)
   expected_status.tweak('A/B2/E', 'A/B2/E/alpha', status=' ')
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
   # Merge B 2:1 into B2
   expected_status.tweak('A/B2/E', 'A/B2/E/alpha', status=' M')
- dry_out, dry_err = svntest.main.run_svn(None, 'merge', '--dry-run',
- '-r', '2:1', B_url, B2_path)
- std_out, std_err = svntest.main.run_svn(None, 'merge',
- '-r', '2:1', B_url, B2_path)
- if dry_err or std_err or dry_out != std_out:
+ dry_out, dry_err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'merge', '--dry-run',
+ '-r', '2:1',
+ B_url, B2_path)
+ std_out, std_err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'merge',
+ '-r', '2:1',
+ B_url, B2_path)
+ if dry_out != std_out:
     raise svntest.Failure
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
@@ -736,11 +715,15 @@
                                       })
   expected_status.tweak(wc_rev=4)
   expected_status.tweak('A/B2/E', 'A/B2/E/alpha', status=' C')
- dry_out, dry_err = svntest.main.run_svn(None, 'merge', '--dry-run',
- '-r', '3:4', B_url, B2_path)
- std_out, std_err = svntest.main.run_svn(None, 'merge',
- '-r', '3:4', B_url, B2_path)
- if dry_err or std_err or dry_out != std_out:
+ dry_out, dry_err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'merge', '--dry-run',
+ '-r', '3:4',
+ B_url, B2_path)
+ std_out, std_err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'merge',
+ '-r', '3:4',
+ B_url, B2_path)
+ if dry_out != std_out:
     raise svntest.Failure
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
   
@@ -753,31 +736,28 @@
   A2_url = svntest.main.current_repo_url + '/A2'
  
   # Copy to make revision 5
- outlines,errlines = svntest.main.run_svn(None, 'copy', '-m', 'fumble',
- '--username', svntest.main.wc_author,
- '--password', svntest.main.wc_passwd,
- A_url, A2_url)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'copy', '-m', 'fumble',
+ '--username', svntest.main.wc_author,
+ '--password', svntest.main.wc_passwd,
+ A_url, A2_url)
   
- outlines, errlines = svntest.main.run_svn(None, 'switch', A2_url, wc_dir)
+ svntest.main.run_svn(None, 'switch', A2_url, wc_dir)
   
   A_url = svntest.main.current_repo_url + '/A/B/E/alpha'
   alpha_path = os.path.join(wc_dir, 'B', 'E', 'alpha')
   
- outlines, errlines = svntest.main.run_svn(None, 'merge',
- '-r', '3:4', A_url, alpha_path)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'merge',
+ '-r', '3:4', A_url, alpha_path)
   
- outlines,errlines = svntest.main.run_svn(None, 'pl', alpha_path)
+ output, err = svntest.actions.run_and_verify_svn(None, None, [],
+ 'pl', alpha_path)
   
- if errlines:
- raise svntest.Failure
 
   saw_foo = 0
   saw_bar = 0
- for line in outlines:
+ for line in output:
     if re.match("\\s*foo\\s*$", line):
       saw_foo = 1
     if re.match("\\s*bar\\s*$", line):
@@ -794,7 +774,6 @@
   "merge should not die if a target file is absent"
   
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Copy G to a new directory, Q. Create Q/newfile. Commit a change
@@ -806,30 +785,23 @@
   newfile_path = os.path.join(Q_path, 'newfile')
   Q_url = svntest.main.current_repo_url + '/A/D/Q'
 
- outlines,errlines = svntest.main.run_svn(None, 'cp', G_path, Q_path)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [], 'cp', G_path, Q_path)
   
   svntest.main.file_append(newfile_path, 'This is newfile.\n')
- outlines,errlines = svntest.main.run_svn(None, 'add', newfile_path)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [], 'add', newfile_path)
   
- outlines,errlines = svntest.main.run_svn(None, 'ci', '-m', 'rev 2', Q_path)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'ci', '-m', 'rev 2', Q_path)
 
   svntest.main.file_append(newfile_path, 'A change to newfile.\n')
- outlines,errlines = svntest.main.run_svn(None, 'ci', '-m', 'rev 3', Q_path)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'ci', '-m', 'rev 3', Q_path)
 
   saved_cwd = os.getcwd()
   try:
     os.chdir(G_path)
- out, err = svntest.main.run_svn(0, 'merge', '-r', '2:3', Q_url)
- if err:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'merge', '-r', '2:3', Q_url)
   finally:
     os.chdir(saved_cwd)
 
@@ -839,7 +811,6 @@
   "merge on deleted directory in target"
   
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Copy B to a new directory, I. Modify B/E/alpha, Remove I/E. Now
@@ -851,29 +822,25 @@
   B_url = svntest.main.current_repo_url + '/A/B'
   I_url = svntest.main.current_repo_url + '/A/I'
 
- outlines,errlines = svntest.main.run_svn(None, 'cp', B_url, I_url, '-m', 'rev 2')
- if errlines:
- raise svntest.Failure
 
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'cp', B_url, I_url, '-m', 'rev 2')
+
   svntest.main.file_append(alpha_path, 'A change to alpha.\n')
   svntest.main.file_append(os.path.join(B_path, 'lambda'), 'A change to lambda.\n')
   
- outlines,errlines = svntest.main.run_svn(None, 'ci', '-m', 'rev 3', B_path)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'ci', '-m', 'rev 3', B_path)
 
   E_url = svntest.main.current_repo_url + '/A/I/E'
- outlines,errlines = svntest.main.run_svn(None, 'rm', E_url, '-m', 'rev 4')
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'rm', E_url, '-m', 'rev 4')
 
- outlines,errlines = svntest.main.run_svn(None, 'up', os.path.join(wc_dir,'A'))
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'up', os.path.join(wc_dir,'A'))
 
- outlines, errlines = svntest.main.run_svn(0, 'merge', '-r', '2:3', B_url, I_path)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'merge', '-r', '2:3', B_url, I_path)
 
 #----------------------------------------------------------------------
 # This is a regression for issue #1176.
@@ -884,7 +851,6 @@
   ## See http://subversion.tigris.org/issues/show_bug.cgi?id=1249. ##
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Simple test. Make three directories with the same content.
@@ -921,28 +887,22 @@
   os.rename(os.path.join(base2_path, 'A', 'B', 'beta'),
             os.path.join(base2_path, 'A', 'B', 'zeta'))
 
- out, err = svntest.main.run_svn(None, 'add',
- base1_path, base2_path, apply_path)
- if err:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'add', base1_path, base2_path, apply_path)
 
- out, err = svntest.main.run_svn(None, 'ci', '-m', 'rev 2', wc_dir)
- if err:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'ci', '-m', 'rev 2', wc_dir)
 
- out, err = svntest.main.run_svn(None, 'merge',
- base1_url, base2_url, apply_path)
- if err:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'merge', base1_url, base2_url, apply_path)
 
-
 #----------------------------------------------------------------------
 def merge_one_file(sbox):
   "merge one file (issue #1150)"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
+
   rho_rel_path = os.path.join('A', 'D', 'G', 'rho')
   rho_path = os.path.join(wc_dir, rho_rel_path)
   G_path = os.path.join(wc_dir, 'A', 'D', 'G')
@@ -963,18 +923,16 @@
                                          wc_dir)
   
   # Backdate rho to revision 1, so we can merge in the rev 2 changes.
- out, err = svntest.main.run_svn(0, 'up', '-r', '1', rho_path)
- if err:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'up', '-r', '1', rho_path)
 
   # Try one merge with an explicit target; it should succeed.
   # ### Yes, it would be nice to use run_and_verify_merge(), but it
   # appears to be impossible to get the expected_foo trees working
   # right. I think something is still assuming a directory target.
- out, err = svntest.main.run_svn(0, 'merge', '-r', '1:2',
- rho_url, rho_path)
- if err:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'merge', '-r', '1:2',
+ rho_url, rho_path)
 
   # Inspect rho, make sure it's right.
   rho_text = svntest.tree.get_text(rho_path)
@@ -983,18 +941,15 @@
     raise svntest.Failure
 
   # Restore rho to pristine revision 1, for another merge.
- out, err = svntest.main.run_svn(0, 'revert', rho_path)
- if err:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [], 'revert', rho_path)
 
   # Cd into the directory and run merge with no targets.
   # It should still merge into rho.
   saved_cwd = os.getcwd()
   try:
     os.chdir(G_path)
- out, err = svntest.main.run_svn(0, 'merge', '-r', '1:2', rho_url)
- if err:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'merge', '-r', '1:2', rho_url)
 
     # Inspect rho, make sure it's right.
     rho_text = svntest.tree.get_text('rho')
@@ -1012,7 +967,6 @@
   "merging a file with no explicit target path"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
   
   # Change mu for revision 2
@@ -1055,20 +1009,16 @@
     os.chdir(os.path.join(other_wc, 'A'))
 
     # merge using URL for sourcepath
- out, err = svntest.main.run_svn(0, 'merge', '-r', '2:1',
- mu_url)
- if err:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'merge', '-r', '2:1', mu_url)
 
     # sanity-check resulting file
     if (svntest.tree.get_text('mu') != orig_mu_text):
       raise svntest.Failure
 
     # merge using filename for sourcepath
- out, err = svntest.main.run_svn(0, 'merge', '-r', '1:2',
- 'mu')
- if err:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'merge', '-r', '1:2', 'mu')
 
     # sanity-check resulting file
     if (svntest.tree.get_text('mu') != orig_mu_text + added_mu_text):
@@ -1083,7 +1033,6 @@
   "merge operations using PREV revision"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
   
   # Change mu for revision 2
@@ -1134,9 +1083,8 @@
     os.chdir(os.path.join(other_wc, 'A'))
 
     # Try to revert the last change to mu via svn merge
- out, err = svntest.main.run_svn(0, 'merge', '-r', 'HEAD:PREV', 'mu')
- if err:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'merge', '-r', 'HEAD:PREV', 'mu')
 
     # sanity-check resulting file
     if (svntest.tree.get_text('mu') != orig_mu_text):
@@ -1149,16 +1097,13 @@
     os.chdir(another_wc)
 
     # ensure 'A' will be at revision 2
- out, err = svntest.main.run_svn(0, 'up')
- if err:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [], 'up')
 
     # now try a revert on a directory, and verify that it removed the zot
     # file we had added previously
- out, err = svntest.main.run_svn(0, 'merge', '-r', 'COMMITTED:PREV',
- 'A', 'A')
- if err:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'merge', '-r', 'COMMITTED:PREV',
+ 'A', 'A')
 
     if (svntest.tree.get_text('A/zot') != None):
       raise svntest.Failure
@@ -1175,7 +1120,6 @@
   "merge change into unchanged binary file"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   # Add a binary file to the project
@@ -1255,6 +1199,7 @@
 
   sbox.build()
   wc_dir = sbox.wc_dir
+
   trunk_url = svntest.main.current_repo_url + '/A/B/E';
 
   # Create a branch
@@ -1293,7 +1238,6 @@
   "merge should skip over unversioned obstructions"
 
   sbox.build()
-
   wc_dir = sbox.wc_dir
 
   C_path = os.path.join(wc_dir, 'A', 'C')
@@ -1336,44 +1280,33 @@
 
   svntest.main.file_append(os.path.join(C_path, "foo"), "foo") # unversioned
 
- outlines,errlines = svntest.main.run_svn(None, 'merge', '-r', '1:2', F_url,
- C_path)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'merge', '-r', '1:2', F_url, C_path)
 
   # Revert the local mods, and this time make "Q" obstructed. An
   # unversioned file called "Q" will obstruct the adding of the
   # directory of the same name.
 
- outlines,errlines = svntest.main.run_svn(None, 'revert', '-R', wc_dir)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'revert', '-R', wc_dir)
 
   os.unlink(os.path.join(C_path, "foo"))
   svntest.main.safe_rmtree(os.path.join(C_path, "Q"))
   svntest.main.file_append(os.path.join(C_path, "Q"), "foo") # unversioned
   
- outlines,errlines = svntest.main.run_svn(None, 'merge', '-r', '1:2', F_url,
- C_path)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'merge', '-r', '1:2', F_url, C_path)
 
   # Revert the local mods, and commit the deletion of iota and A/D/G. (r3)
   os.unlink(os.path.join(C_path, "foo"))
- outlines,errlines = svntest.main.run_svn(None, 'revert', '-R', wc_dir)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [], 'revert', '-R', wc_dir)
 
   iota_path = os.path.join(wc_dir, 'iota')
   G_path = os.path.join(wc_dir, 'A', 'D', 'G')
- outlines,errlines = svntest.main.run_svn(None, 'rm', iota_path, G_path)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [], 'rm', iota_path, G_path)
 
- outlines,errlines = svntest.main.run_svn(None, 'commit', '-m', 'msg',
- wc_dir)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'commit', '-m', 'msg', wc_dir)
 
   # Now create unversioned iota and A/D/G, try running a merge -r2:3.
   # The merge process should skip over these targets, since they're
@@ -1381,33 +1314,25 @@
   
   svntest.main.file_append(iota_path, "foo") # unversioned
   os.mkdir(G_path) # unversioned
- outlines,errlines = svntest.main.run_svn(None, 'merge', '-r', '2:3',
- svntest.main.current_repo_url,
- wc_dir)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'merge', '-r', '2:3',
+ svntest.main.current_repo_url, wc_dir)
   
   # Revert the local mods, and commit a change to A/B/lambda (r4), and then
   # commit the deletion of the same file. (r5)
   os.unlink(iota_path)
   svntest.main.safe_rmtree(G_path)
- outlines,errlines = svntest.main.run_svn(None, 'revert', '-R', wc_dir)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [], 'revert', '-R', wc_dir)
 
   lambda_path = os.path.join(wc_dir, 'A', 'B', 'lambda')
   svntest.main.file_append(lambda_path, "more text")
- outlines,errlines = svntest.main.run_svn(None, 'commit', '-m', 'msg', wc_dir)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'commit', '-m', 'msg', wc_dir)
 
- outlines,errlines = svntest.main.run_svn(None, 'rm', lambda_path)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [], 'rm', lambda_path)
 
- outlines,errlines = svntest.main.run_svn(None, 'commit', '-m', 'msg', wc_dir)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'commit', '-m', 'msg', wc_dir)
 
   # lambda is gone, so create an unversioned lambda in its place.
   # Then attempt to merge -r3:4, which is a change to lambda. The merge
@@ -1415,31 +1340,24 @@
 
   svntest.main.file_append(lambda_path, "foo") # unversioned
 
- outlines,errlines = svntest.main.run_svn(None, 'merge', '-r', '3:4',
- svntest.main.current_repo_url,
- wc_dir)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'merge', '-r', '3:4',
+ svntest.main.current_repo_url, wc_dir)
 
   # OK, so let's commit the new lambda (r6), and then delete the
   # working file. Then re-run the -r3:4 merge, and see how svn deals
   # with a file being under version control, but missing.
 
- outlines,errlines = svntest.main.run_svn(None, 'add', lambda_path)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [], 'add', lambda_path)
 
- outlines,errlines = svntest.main.run_svn(None, 'commit', '-m', 'msg', wc_dir)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'commit', '-m', 'msg', wc_dir)
 
   os.unlink(lambda_path)
 
- outlines,errlines = svntest.main.run_svn(None, 'merge', '-r', '3:4',
- svntest.main.current_repo_url,
- wc_dir)
- if errlines:
- raise svntest.Failure
+ svntest.actions.run_and_verify_svn(None, None, [],
+ 'merge', '-r', '3:4',
+ svntest.main.current_repo_url, wc_dir)
 
 
 ########################################################################
Index: externals_tests.py
===================================================================
--- externals_tests.py (revision 6929)
+++ externals_tests.py (working copy)
@@ -22,8 +22,9 @@
 
 # Our testing module
 import svntest
-
+from svntest import SVNAnyOutput
 
+
 # (abbreviation)
 Skip = svntest.testcase.Skip
 XFail = svntest.testcase.XFail
@@ -67,8 +68,7 @@
   remove a previous incarnation of the other repository.
   """
 
- if sbox.build():
- return 1
+ sbox.build()
 
   svntest.main.safe_rmtree(sbox.wc_dir) # The test itself will recreate this
 
@@ -89,39 +89,37 @@
   D_path = os.path.join(wc_init_dir, "A/D")
 
   # Create a working copy.
- out_lines, err_lines = svntest.main.run_svn \
- (None, 'checkout',
- '--username', svntest.main.wc_author,
- '--password', svntest.main.wc_passwd,
- repo_url, wc_init_dir)
- if err_lines: return 1
+ svntest.actions.run_and_verify_svn("", None, [],
+ 'checkout',
+ '--username', svntest.main.wc_author,
+ '--password', svntest.main.wc_passwd,
+ repo_url, wc_init_dir)
 
   # Make revisions 2 through 5, but don't bother with pre- and
   # post-commit status checks.
 
   svntest.main.file_append(mu_path, "\nAdded to mu in revision 2.\n")
- out_lines, err_lines = svntest.main.run_svn \
- (None, 'ci', '-m', 'log msg', '--quiet', wc_init_dir)
- if (err_lines): return 1
+ svntest.actions.run_and_verify_svn("", None, [],
+ 'ci', '-m', 'log msg',
+ '--quiet', wc_init_dir)
 
   svntest.main.file_append(pi_path, "\nAdded to pi in revision 3.\n")
- out_lines, err_lines = svntest.main.run_svn \
- (None, 'ci', '-m', 'log msg', '--quiet', wc_init_dir)
- if (err_lines): return 1
+ svntest.actions.run_and_verify_svn("", None, [],
+ 'ci', '-m', 'log msg',
+ '--quiet', wc_init_dir)
 
   svntest.main.file_append(lambda_path, "\nAdded to lambda in revision 4.\n")
- out_lines, err_lines = svntest.main.run_svn \
- (None, 'ci', '-m', 'log msg', '--quiet', wc_init_dir)
- if (err_lines): return 1
+ svntest.actions.run_and_verify_svn("", None, [],
+ 'ci', '-m', 'log msg',
+ '--quiet', wc_init_dir)
 
   svntest.main.file_append(omega_path, "\nAdded to omega in revision 5.\n")
- out_lines, err_lines = svntest.main.run_svn \
- (None, 'ci', '-m', 'log msg', '--quiet', wc_init_dir)
- if (err_lines): return 1
+ svntest.actions.run_and_verify_svn("", None, [],
+ 'ci', '-m', 'log msg',
+ '--quiet', wc_init_dir)
 
   # Get the whole working copy to revision 5.
- out_lines, err_lines = svntest.main.run_svn(None, 'up', wc_init_dir)
- if (err_lines): return 1
+ svntest.actions.run_and_verify_svn("", None, [], 'up', wc_init_dir)
 
   # Now copy the initial repository to create the "other" repository,
   # the one to which the first repository's `svn:externals' properties
@@ -136,9 +134,9 @@
 
   tmp_f = os.tempnam(wc_init_dir, 'tmp')
   svntest.main.file_append(tmp_f, externals_desc)
- out_lines, err_lines = svntest.main.run_svn \
- (None, 'pset', '-F', tmp_f, 'svn:externals', B_path)
- if err_lines: return 1
+ svntest.actions.run_and_verify_svn("", None, [],
+ 'pset',
+ '-F', tmp_f, 'svn:externals', B_path)
    
   os.remove(tmp_f)
 
@@ -153,9 +151,8 @@
            "\n"
 
   svntest.main.file_append(tmp_f, externals_desc)
- out_lines, err_lines = svntest.main.run_svn \
- (None, 'pset', '-F', tmp_f, 'svn:externals', D_path)
- if err_lines: return 1
+ svntest.actions.run_and_verify_svn("", None, [], 'pset',
+ '-F', tmp_f, 'svn:externals', D_path)
 
   os.remove(tmp_f)
 
@@ -170,11 +167,11 @@
   expected_status.tweak(repos_rev=6)
   expected_status.tweak('A/B', 'A/D', wc_rev=6, status=' ')
 
- return svntest.actions.run_and_verify_commit(wc_init_dir,
- expected_output,
- expected_status,
- None, None, None, None, None,
- wc_init_dir)
+ svntest.actions.run_and_verify_commit(wc_init_dir,
+ expected_output,
+ expected_status,
+ None, None, None, None, None,
+ wc_init_dir)
 
 
 def change_external(path, new_val):
@@ -182,11 +179,10 @@
   and commit the change."""
   tmp_f = os.tempnam(svntest.main.temp_dir, 'tmp')
   svntest.main.file_append(tmp_f, new_val)
- out_lines, err_lines = svntest.main.run_svn \
- (None, 'pset', '-F', tmp_f, 'svn:externals', path)
- out_lines, err_lines = svntest.main.run_svn \
- (None, 'ci', '-m', 'log msg', '--quiet', path)
- if (err_lines): return 1
+ svntest.actions.run_and_verify_svn("", None, [], 'pset',
+ '-F', tmp_f, 'svn:externals', path)
+ svntest.actions.run_and_verify_svn("", None, [], 'ci',
+ '-m', 'log msg', '--quiet', path)
   os.remove(tmp_f)
 
 
@@ -207,20 +203,18 @@
 def checkout_with_externals(sbox):
   "test checkouts with externals"
 
- if externals_test_setup(sbox):
- return 1
+ externals_test_setup(sbox)
 
   wc_dir = sbox.wc_dir
   repo_dir = sbox.repo_dir
   repo_url = sbox.repo_url
 
   # Create a working copy.
- out_lines, err_lines = svntest.main.run_svn \
- (None, 'checkout',
- '--username', svntest.main.wc_author,
- '--password', svntest.main.wc_passwd,
- repo_url, wc_dir)
- if err_lines: return 1
+ svntest.actions.run_and_verify_svn( "", None, [],
+ 'checkout',
+ '--username', svntest.main.wc_author,
+ '--password', svntest.main.wc_passwd,
+ repo_url, wc_dir)
 
   # Probe the working copy a bit, see if it's as expected.
   exdir_G_path = os.path.join(wc_dir, "A/B/exdir_G")
@@ -235,73 +229,58 @@
   beta_path = os.path.join(blah_path, "beta")
 
   if (not os.path.exists(exdir_G_path)):
- print "Probing for", exdir_G_path, "failed."
- return 1
+ raise svntest.Failure("Probing for " + exdir_G_path + " failed.")
   if (not os.path.exists(exdir_G_pi_path)):
- print "Probing for", exdir_G_pi_path, "failed."
- return 1
+ raise svntest.Failure("Probing for " + exdir_G_pi_path + " failed.")
   if (not os.path.exists(exdir_H_path)):
- print "Probing for", exdir_H_path, "failed."
- return 1
+ raise svntest.Failure("Probing for " + exdir_H_path + " failed.")
   if (not os.path.exists(exdir_H_omega_path)):
- print "Probing for", exdir_H_omega_path, "failed."
- return 1
+ raise svntest.Failure("Probing for " + exdir_H_omega_path + " failed.")
   if (not os.path.exists(x_path)):
- print "Probing for", x_path, "failed."
- return 1
+ raise svntest.Failure("Probing for " + x_path + " failed.")
   if (not os.path.exists(y_path)):
- print "Probing for", y_path, "failed."
- return 1
+ raise svntest.Failure("Probing for " + y_path + " failed.")
   if (not os.path.exists(z_path)):
- print "Probing for", z_path, "failed."
- return 1
+ raise svntest.Failure("Probing for " + z_path + " failed.")
   if (not os.path.exists(z_path)):
- print "Probing for", z_path, "failed."
- return 1
+ raise svntest.Failure("Probing for " + z_path + " failed.")
   if (not os.path.exists(alpha_path)):
- print "Probing for", alpha_path, "failed."
- return 1
+ raise svntest.Failure("Probing for " + alpha_path + " failed.")
   if (not os.path.exists(beta_path)):
- print "Probing for", beta_path, "failed."
- return 1
+ raise svntest.Failure("Probing for " + beta_path + " failed.")
 
   # Pick a file at random, make sure it has the expected contents.
   fp = open(exdir_H_omega_path, 'r')
   lines = fp.readlines()
   if not ((len(lines) == 1) and (lines[0] == "This is the file 'omega'.")):
- print "Unexpected contents for rev 1 of", exdir_H_omega_path
- return 1
+ raise svntest.Failure("Unexpected contents for rev 1 of " +
+ exdir_H_omega_path)
 
- return 0
-
 #----------------------------------------------------------------------
 
 def update_receive_new_external(sbox):
   "update to receive a new external module"
 
- if externals_test_setup(sbox):
- return 1
-
+ externals_test_setup(sbox)
   wc_dir = sbox.wc_dir
+
   other_wc_dir = sbox.add_wc_path('other')
   repo_dir = sbox.repo_dir
   repo_url = sbox.repo_url
   other_repo_url = repo_url + ".other"
 
   # Checkout two working copies.
- out_lines, err_lines = svntest.main.run_svn \
- (None, 'checkout',
- '--username', svntest.main.wc_author,
- '--password', svntest.main.wc_passwd,
- repo_url, wc_dir)
- if err_lines: return 1
+ svntest.actions.run_and_verify_svn( "", None, [],
+ 'checkout',
+ '--username', svntest.main.wc_author,
+ '--password', svntest.main.wc_passwd,
+ repo_url, wc_dir)
 
- out_lines, err_lines = svntest.main.run_svn \
- (None, 'checkout',
- '--username', svntest.main.wc_author,
- '--password', svntest.main.wc_passwd,
- repo_url, other_wc_dir)
- if err_lines: return 1
+ svntest.actions.run_and_verify_svn( "", None, [],
+ 'checkout',
+ '--username', svntest.main.wc_author,
+ '--password', svntest.main.wc_passwd,
+ repo_url, other_wc_dir)
 
   # Add one new external item to the property on A/D. The new item is
   # "exdir_E", deliberately added in the middle not at the end.
@@ -321,45 +300,37 @@
   change_external(os.path.join(wc_dir, "A/D"), new_externals_desc)
 
   # Update the other working copy, see if we get the new item.
- out_lines, err_lines = svntest.main.run_svn (None, 'up', other_wc_dir)
- if err_lines: return 1
+ svntest.actions.run_and_verify_svn( "", None, [], 'up', other_wc_dir)
 
   exdir_E_path = os.path.join(other_wc_dir, "A", "D", "exdir_E")
   if (not os.path.exists(exdir_E_path)):
- print "Probing for", exdir_E_path, "failed."
- return 1
+ raise svntest.Failure("Probing for " + exdir_E_path + " failed.")
 
- return 0
-
-
 #----------------------------------------------------------------------
 
 def update_lose_external(sbox):
   "update to lose an external module"
 
- if externals_test_setup(sbox):
- return 1
-
+ externals_test_setup(sbox)
   wc_dir = sbox.wc_dir
+
   other_wc_dir = sbox.add_wc_path('other')
   repo_dir = sbox.repo_dir
   repo_url = sbox.repo_url
   other_repo_url = repo_url + ".other"
 
   # Checkout two working copies.
- out_lines, err_lines = svntest.main.run_svn \
- (None, 'checkout',
- '--username', svntest.main.wc_author,
- '--password', svntest.main.wc_passwd,
- repo_url, wc_dir)
- if err_lines: return 1
+ svntest.actions.run_and_verify_svn( "", None, [],
+ 'checkout',
+ '--username', svntest.main.wc_author,
+ '--password', svntest.main.wc_passwd,
+ repo_url, wc_dir)
 
- out_lines, err_lines = svntest.main.run_svn \
- (None, 'checkout',
- '--username', svntest.main.wc_author,
- '--password', svntest.main.wc_passwd,
- repo_url, other_wc_dir)
- if err_lines: return 1
+ svntest.actions.run_and_verify_svn( "", None, [],
+ 'checkout',
+ '--username', svntest.main.wc_author,
+ '--password', svntest.main.wc_passwd,
+ repo_url, other_wc_dir)
 
   # Lose one new external item from A/D. The lost item is
   # "exdir_A", chosen because there are two other externals underneath
@@ -389,76 +360,61 @@
   change_external(os.path.join(wc_dir, "A/D"), new_externals_desc)
 
   # Update other working copy, see if lose & preserve things appropriately
- out_lines, err_lines = svntest.main.run_svn (None, 'up', other_wc_dir)
- if err_lines: return 1
+ svntest.actions.run_and_verify_svn( "", None, [], 'up', other_wc_dir)
 
   exdir_A_path = os.path.join(other_wc_dir, "A", "D", "exdir_A")
   if (not os.path.exists(exdir_A_path)):
- print "Probing for", exdir_A_path, "failed."
- return 1
+ raise svntest.Failure("Probing for " + exdir_A_path + " failed.")
 
   mu_path = os.path.join(other_wc_dir, "A", "D", "exdir_A", "mu")
   if (os.path.exists(mu_path)):
- print mu_path, "unexpectedly still exists."
- return 1
+ raise svntest.Failure(mu_path + " unexpectedly still exists.")
 
   B_path = os.path.join(other_wc_dir, "A", "D", "exdir_A", "B")
   if (os.path.exists(B_path)):
- print B_path, "unexpectedly still exists."
- return 1
+ raise svntest.Failure(B_path + " unexpectedly still exists.")
 
   C_path = os.path.join(other_wc_dir, "A", "D", "exdir_A", "C")
   if (os.path.exists(C_path)):
- print C_path, "unexpectedly still exists."
- return 1
+ raise svntest.Failure(C_path + " unexpectedly still exists.")
 
   D_path = os.path.join(other_wc_dir, "A", "D", "exdir_A", "D")
   if (os.path.exists(D_path)):
- print D_path, "unexpectedly still exists."
- return 1
+ raise svntest.Failure(D_path + " unexpectedly still exists.")
 
   G_path = os.path.join(other_wc_dir, "A", "D", "exdir_A", "G")
   if (not os.path.exists(G_path)):
- print "Probing for", G_path, "failed."
- return 1
+ raise svntest.Failure("Probing for " + G_path + " failed.")
 
   H_path = os.path.join(other_wc_dir, "A", "D", "exdir_A", "H")
   if (not os.path.exists(H_path)):
- print "Probing for", H_path, "failed."
- return 1
+ raise svntest.Failure("Probing for " + H_path + " failed.")
 
- return 0
-
-
-
 #----------------------------------------------------------------------
 
 def update_change_pristine_external(sbox):
   "update change to an unmodified external module"
 
- if externals_test_setup(sbox):
- return 1
-
+ externals_test_setup(sbox)
   wc_dir = sbox.wc_dir
+
   other_wc_dir = sbox.add_wc_path('other')
   repo_dir = sbox.repo_dir
   repo_url = sbox.repo_url
   other_repo_url = repo_url + ".other"
 
   # Checkout two working copies.
- out_lines, err_lines = svntest.main.run_svn \
- (None, 'checkout',
- '--username', svntest.main.wc_author,
- '--password', svntest.main.wc_passwd,
- repo_url, wc_dir)
- if err_lines: return 1
+ svntest.actions.run_and_verify_svn( "", None, [],
+ 'checkout',
+ '--username', svntest.main.wc_author,
+ '--password', svntest.main.wc_passwd,
+ repo_url, wc_dir)
 
- out_lines, err_lines = svntest.main.run_svn \
- (None, 'checkout',
- '--username', svntest.main.wc_author,
- '--password', svntest.main.wc_passwd,
- repo_url, other_wc_dir)
- if err_lines: return 1
+ svntest.actions.run_and_verify_svn( "", None, [],
+ 'checkout',
+ '--username', svntest.main.wc_author,
+ '--password', svntest.main.wc_passwd,
+ repo_url, other_wc_dir)
 
   # Change the "x/y/z/blah" external on A/D to point to a different
   # URL. Since no changes were made to the old checked-out external,
@@ -477,50 +433,41 @@
   change_external(os.path.join(wc_dir, "A/D"), new_externals_desc)
 
   # Update other working copy, see if get the right change.
- out_lines, err_lines = svntest.main.run_svn (None, 'up', other_wc_dir)
- if err_lines: return 1
+ svntest.actions.run_and_verify_svn( "", None, [], 'up', other_wc_dir)
 
   xyzb_path = os.path.join(other_wc_dir, "x", "y", "z", "blah")
 
   alpha_path = os.path.join(xyzb_path, "alpha")
   if (os.path.exists(alpha_path)):
- print alpha_path, "unexpectedly still exists."
- return 1
+ raise svntest.Failure(alpha_path + " unexpectedly still exists.")
 
   beta_path = os.path.join(xyzb_path, "beta")
   if (os.path.exists(beta_path)):
- print beta_path, "unexpectedly still exists."
- return 1
+ raise svntest.Failure(beta_path + " unexpectedly still exists.")
 
- return 0
-
-
 def update_change_modified_external(sbox):
   "update changes to a modified external module"
 
- if externals_test_setup(sbox):
- return 1
-
+ externals_test_setup(sbox)
   wc_dir = sbox.wc_dir
+
   other_wc_dir = sbox.add_wc_path('other')
   repo_dir = sbox.repo_dir
   repo_url = sbox.repo_url
   other_repo_url = repo_url + ".other"
 
   # Checkout two working copies.
- out_lines, err_lines = svntest.main.run_svn \
- (None, 'checkout',
- '--username', svntest.main.wc_author,
- '--password', svntest.main.wc_passwd,
- repo_url, wc_dir)
- if err_lines: return 1
+ svntest.actions.run_and_verify_svn( "", None, [],
+ 'checkout',
+ '--username', svntest.main.wc_author,
+ '--password', svntest.main.wc_passwd,
+ repo_url, wc_dir)
 
- out_lines, err_lines = svntest.main.run_svn \
- (None, 'checkout',
- '--username', svntest.main.wc_author,
- '--password', svntest.main.wc_passwd,
- repo_url, other_wc_dir)
- if err_lines: return 1
+ svntest.actions.run_and_verify_svn( "", None, [],
+ 'checkout',
+ '--username', svntest.main.wc_author,
+ '--password', svntest.main.wc_passwd,
+ repo_url, other_wc_dir)
 
   # Make a couple of mods in the "x/y/z/blah/" external.
   alpha_path = os.path.join(other_wc_dir, "A", "D",
@@ -547,50 +494,41 @@
   change_external(os.path.join(wc_dir, "A/D"), new_externals_desc)
 
   # Update other working copy, see if get the right change.
- out_lines, err_lines = svntest.main.run_svn (None, 'up', other_wc_dir)
- if err_lines: return 1
+ svntest.actions.run_and_verify_svn( "", None, [], 'up', other_wc_dir)
 
   xyzb_path = os.path.join(other_wc_dir, "x", "y", "z", "blah")
 
   alpha_path = os.path.join(xyzb_path, "alpha")
   if (os.path.exists(alpha_path)):
- print alpha_path, "unexpectedly still exists."
- return 1
+ raise svntest.Failure(alpha_path + " unexpectedly still exists.")
 
   beta_path = os.path.join(xyzb_path, "beta")
   if (os.path.exists(beta_path)):
- print beta_path, "unexpectedly still exists."
- return 1
+ raise svntest.Failure(beta_path + " unexpectedly still exists.")
 
- return 0
-
-
 def update_receive_change_under_external(sbox):
   "update changes under an external module"
 
- if externals_test_setup(sbox):
- return 1
-
+ externals_test_setup(sbox)
   wc_dir = sbox.wc_dir
+
   other_wc_dir = sbox.add_wc_path('other')
   repo_dir = sbox.repo_dir
   repo_url = sbox.repo_url
   other_repo_url = repo_url + ".other"
 
   # Checkout two working copies.
- out_lines, err_lines = svntest.main.run_svn \
- (None, 'checkout',
- '--username', svntest.main.wc_author,
- '--password', svntest.main.wc_passwd,
- repo_url, wc_dir)
- if err_lines: return 1
+ svntest.actions.run_and_verify_svn( "", None, [],
+ 'checkout',
+ '--username', svntest.main.wc_author,
+ '--password', svntest.main.wc_passwd,
+ repo_url, wc_dir)
 
- out_lines, err_lines = svntest.main.run_svn \
- (None, 'checkout',
- '--username', svntest.main.wc_author,
- '--password', svntest.main.wc_passwd,
- other_repo_url, other_wc_dir)
- if err_lines: return 1
+ svntest.actions.run_and_verify_svn( "", None, [],
+ 'checkout',
+ '--username', svntest.main.wc_author,
+ '--password', svntest.main.wc_passwd,
+ other_repo_url, other_wc_dir)
 
   # Commit some modifications from the other_wc.
   other_gamma_path = os.path.join(other_wc_dir, 'A', 'D', 'gamma')
@@ -602,14 +540,12 @@
   expected_status = svntest.actions.get_virginal_state(other_wc_dir, 5)
   expected_status.tweak(repos_rev=6)
   expected_status.tweak('A/D/gamma', wc_rev=6)
- if svntest.actions.run_and_verify_commit(other_wc_dir,
- expected_output,
- expected_status,
- None, None, None, None, None,
- other_wc_dir):
- print "commit from other working copy failed"
- return 1
-
+ svntest.actions.run_and_verify_commit(other_wc_dir,
+ expected_output,
+ expected_status,
+ None, None, None, None, None,
+ other_wc_dir)
+
   # Now update the regular wc to see if we get the change. Note that
   # none of the module *properties* in this wc have been changed; only
   # the source repository of the modules has received a change, and
@@ -618,8 +554,7 @@
   # The output's going to be all screwy because of the module
   # notifications, so don't bother parsing it, just run update
   # directly.
- out_lines, err_lines = svntest.main.run_svn (None, 'up', wc_dir)
- if err_lines: return 1
+ svntest.actions.run_and_verify_svn( "", None, [], 'up', wc_dir)
 
   external_gamma_path = os.path.join(wc_dir, 'A', 'D', 'exdir_A', 'D', 'gamma')
   fp = open(external_gamma_path, 'r')
@@ -627,8 +562,8 @@
   if not ((len(lines) == 2)
           and (lines[0] == "This is the file 'gamma'.\n")
           and (lines[1] == "New text in other gamma.")):
- print "Unexpected contents for externally modified ", external_gamma_path
- return 1
+ raise svntest.Failure("Unexpected contents for externally modified " +
+ external_gamma_path)
   fp.close()
 
   # Commit more modifications
@@ -642,17 +577,14 @@
   expected_status.tweak(repos_rev=7)
   expected_status.tweak('A/D/gamma', wc_rev=6)
   expected_status.tweak('A/D/G/rho', wc_rev=7)
- if svntest.actions.run_and_verify_commit(other_wc_dir,
- expected_output,
- expected_status,
- None, None, None, None, None,
- other_wc_dir):
- print "Commit from other working copy failed"
- return 1
+ svntest.actions.run_and_verify_commit(other_wc_dir,
+ expected_output,
+ expected_status,
+ None, None, None, None, None,
+ other_wc_dir)
 
- out_lines, err_lines = svntest.main.run_svn (None, 'up',
- os.path.join(wc_dir, "A", "B"))
- if err_lines: return 1
+ svntest.actions.run_and_verify_svn( "", None, [],
+ 'up', os.path.join(wc_dir, "A", "B"))
 
   external_rho_path = os.path.join(wc_dir, 'A', 'B', 'exdir_G', 'rho')
   fp = open(external_rho_path, 'r')
@@ -660,33 +592,28 @@
   if not ((len(lines) == 2)
           and (lines[0] == "This is the file 'rho'.\n")
           and (lines[1] == "New text in other rho.")):
- print "Unexpected contents for externally modified ", external_rho_path
- return 1
+ raise svntest.Failure("Unexpected contents for externally modified " +
+ external_rho_path)
   fp.close()
 
- return 0
-
 #----------------------------------------------------------------------
 
 def modify_and_update_receive_new_external(sbox):
   "commit and update additional externals"
 
- if externals_test_setup(sbox):
- return 1
-
+ externals_test_setup(sbox)
   wc_dir = sbox.wc_dir
+
   repo_dir = sbox.repo_dir
   repo_url = sbox.repo_url
   other_repo_url = repo_url + ".other"
 
   # Checkout a working copy
- out_lines, err_lines = svntest.main.run_svn(None, 'checkout',
- '--username',
- svntest.main.wc_author,
- '--password',
- svntest.main.wc_passwd,
- repo_url, wc_dir)
- if err_lines: return 1
+ svntest.actions.run_and_verify_svn( "", None, [],
+ 'checkout',
+ '--username', svntest.main.wc_author,
+ '--password', svntest.main.wc_passwd,
+ repo_url, wc_dir)
 
   # Add one more external item
   B_path = os.path.join(wc_dir, "A/B")
@@ -697,9 +624,9 @@
 
   tmp_f = os.tempnam()
   svntest.main.file_append(tmp_f, externals_desc)
- out_lines, err_lines = svntest.main.run_svn(None, 'pset', '-F', tmp_f,
- 'svn:externals', B_path)
- if err_lines: return 1
+ svntest.actions.run_and_verify_svn( "", None, [],
+ 'pset', '-F', tmp_f,
+ 'svn:externals', B_path)
   os.remove(tmp_f)
 
   # Now cd into A/B and try updating
@@ -707,50 +634,43 @@
   os.chdir(B_path)
   try:
     # Once upon a time there was a core-dump here
- out_lines, err_lines = svntest.main.run_svn (None, 'up')
- if err_lines or not out_lines:
- print "update failed"
- return 1
+
+ svntest.actions.run_and_verify_svn( "update failed",
+ SVNAnyOutput, [], 'up' )
 
   finally:
     os.chdir(was_cwd)
 
   exdir_Z_path = os.path.join(B_path, "exdir_Z")
   if not os.path.exists(exdir_Z_path):
- print "Probing for", exdir_Z_path, "failed."
- return 1
+ raise svntest.Failure("Probing for " + exdir_Z_path + " failed.")
 
 #----------------------------------------------------------------------
 
 def disallow_parent_directory_reference(sbox):
   "error if external target dir refers to '..'"
- if sbox.build():
- return 1
-
+ sbox.build()
   wc_dir = sbox.wc_dir
+
   wc_other = sbox.wc_dir + '.other'
   repo_dir = sbox.repo_dir
   repo_url = sbox.repo_url
 
   # Checkout the 'other' working copy, at revision 1.
   svntest.main.safe_rmtree(wc_other)
- out_lines, err_lines = svntest.main.run_svn(None, 'checkout',
- '--username',
- svntest.main.wc_author,
- '--password',
- svntest.main.wc_passwd,
- repo_url, wc_other)
- if err_lines:
- return 1
+ svntest.actions.run_and_verify_svn( "", None, [],
+ 'checkout',
+ '--username', svntest.main.wc_author,
+ '--password', svntest.main.wc_passwd,
+ repo_url, wc_other)
 
   # Set up some illegal externals in the original WC.
   def set_externals_for_path(path, val, dir):
     tmp_f = os.tempnam(dir, 'tmp')
     svntest.main.file_append(tmp_f, val)
- out_lines, err_lines = svntest.main.run_svn \
- (None, 'pset', '-F', tmp_f, 'svn:externals', path)
- if err_lines:
- return 1
+ svntest.actions.run_and_verify_svn( "", None, [],
+ 'pset', '-F', tmp_f,
+ 'svn:externals', path)
     os.remove(tmp_f)
 
   B_path = os.path.join(wc_dir, 'A', 'B')
@@ -764,10 +684,8 @@
   set_externals_for_path(G_path, externals_2, wc_dir)
   set_externals_for_path(H_path, externals_3, wc_dir)
 
- out_lines, err_lines = svntest.main.run_svn \
- (None, 'ci', '-m', 'log msg', '--quiet', wc_dir)
- if (err_lines):
- return 1
+ svntest.actions.run_and_verify_svn( "", None, [],
+ 'ci', '-m', 'log msg', '--quiet', wc_dir)
 
   # Update the corresponding parts of the other working copy,
   # expecting errors.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@subversion.tigris.org
For additional commands, e-mail: dev-help@subversion.tigris.org
Received on Sat Aug 30 19:26:36 2003

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.