subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From stef...@apache.org
Subject svn commit: r1659238 [20/21] - in /subversion/branches/fsx-1.10: ./ build/generator/ build/generator/templates/ subversion/bindings/swig/ subversion/include/ subversion/include/private/ subversion/libsvn_delta/ subversion/libsvn_fs_base/ subversion/lib...
Date Thu, 12 Feb 2015 12:21:32 GMT
Modified: subversion/branches/fsx-1.10/subversion/tests/cmdline/update_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-1.10/subversion/tests/cmdline/update_tests.py?rev=1659238&r1=1659237&r2=1659238&view=diff
==============================================================================
--- subversion/branches/fsx-1.10/subversion/tests/cmdline/update_tests.py (original)
+++ subversion/branches/fsx-1.10/subversion/tests/cmdline/update_tests.py Thu Feb 12 12:21:31 2015
@@ -728,24 +728,24 @@ def update_delete_modified_files(sbox):
 
   # Delete a file
   alpha_path = sbox.ospath('A/B/E/alpha')
-  svntest.actions.run_and_verify_svn("Deleting alpha failed", None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'rm', alpha_path)
 
   # Delete a directory containing files
   G_path = sbox.ospath('A/D/G')
-  svntest.actions.run_and_verify_svn("Deleting G failed", None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'rm', G_path)
 
   # Commit
-  svntest.actions.run_and_verify_svn("Committing deletes failed", None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'ci', '-m', 'log msg', wc_dir)
 
   ### Update before backdating to avoid obstructed update error for G
-  svntest.actions.run_and_verify_svn("Updating after commit failed", None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'up', wc_dir)
 
   # Backdate to restore deleted items
-  svntest.actions.run_and_verify_svn("Backdating failed", None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'up', '-r', '1', wc_dir)
 
   # Modify the file to be deleted, and a file in the directory to be deleted
@@ -809,7 +809,7 @@ def update_after_add_rm_deleted(sbox):
   # Delete a file and directory from WC
   alpha_path = sbox.ospath('A/B/E/alpha')
   F_path = sbox.ospath('A/B/F')
-  svntest.actions.run_and_verify_svn(None, None, [], 'rm', alpha_path, F_path)
+  svntest.actions.run_and_verify_svn(None, [], 'rm', alpha_path, F_path)
 
   # Commit deletion
   expected_output = svntest.wc.State(wc_dir, {
@@ -826,9 +826,9 @@ def update_after_add_rm_deleted(sbox):
 
   # alpha and F are now in state "deleted", next we add a new ones
   svntest.main.file_append(alpha_path, "new alpha")
-  svntest.actions.run_and_verify_svn(None, None, [], 'add', alpha_path)
+  svntest.actions.run_and_verify_svn(None, [], 'add', alpha_path)
 
-  svntest.actions.run_and_verify_svn(None, None, [], 'mkdir', F_path)
+  svntest.actions.run_and_verify_svn(None, [], 'mkdir', F_path)
 
   # New alpha and F should be in add state A
   expected_status.add({
@@ -840,7 +840,7 @@ def update_after_add_rm_deleted(sbox):
 
   # Forced removal of new alpha and F must restore "deleted" state
 
-  svntest.actions.run_and_verify_svn(None, None, [], 'rm', '--force',
+  svntest.actions.run_and_verify_svn(None, [], 'rm', '--force',
                                      alpha_path, F_path)
   if os.path.exists(alpha_path) or os.path.exists(F_path):
     raise svntest.Failure
@@ -852,7 +852,7 @@ def update_after_add_rm_deleted(sbox):
 
   # 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
-  svntest.actions.run_and_verify_svn(None, None, [], 'up', '-r', '1', wc_dir)
+  svntest.actions.run_and_verify_svn(None, [], 'up', '-r', '1', wc_dir)
 
   expected_status.add({
     'A/B/E/alpha' : Item(status='  ', wc_rev=1),
@@ -876,7 +876,7 @@ def obstructed_update_alters_wc_props(sb
 
   # Create a new dir in the repo in prep for creating an obstruction.
   #print "Adding dir to repo"
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'mkdir', '-m',
                                      'prep for obstruction',
                                      sbox.repo_url + '/A/foo')
@@ -951,7 +951,7 @@ def update_replace_dir(sbox):
 
   # Delete a directory
   F_path = sbox.ospath('A/B/F')
-  svntest.actions.run_and_verify_svn(None, None, [], 'rm', F_path)
+  svntest.actions.run_and_verify_svn(None, [], 'rm', F_path)
 
   # Commit deletion
   expected_output = svntest.wc.State(wc_dir, {
@@ -965,7 +965,7 @@ def update_replace_dir(sbox):
                                         expected_status, None, wc_dir)
 
   # Add replacement directory
-  svntest.actions.run_and_verify_svn(None, None, [], 'mkdir', F_path)
+  svntest.actions.run_and_verify_svn(None, [], 'mkdir', F_path)
 
   # Commit addition
   expected_output = svntest.wc.State(wc_dir, {
@@ -1037,7 +1037,7 @@ def update_single_file(sbox):
   os.chdir(sbox.ospath('A'))
 
   ### Can't get run_and_verify_update to work having done the chdir.
-  svntest.actions.run_and_verify_svn("update failed", None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'up', '-r', '1', 'mu')
   os.chdir(was_cwd)
 
@@ -1111,10 +1111,10 @@ def update_receive_illegal_name(sbox):
                  + '/A/D/G/' + svntest.main.get_admin_name())
   # Ha!  The client doesn't allow us to mkdir a '.svn' but it does
   # allow us to copy to a '.svn' so ...
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'mkdir', '-m', 'log msg',
                                      legal_url)
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'mv', '-m', 'log msg',
                                      legal_url, illegal_url)
 
@@ -1237,8 +1237,7 @@ def another_hudson_problem(sbox):
                                         None, wc_dir)
 
   # Delete directory G from the repository
-  svntest.actions.run_and_verify_svn(None,
-                                     ['Committing transaction...\n',
+  svntest.actions.run_and_verify_svn(['Committing transaction...\n',
                                       'Committed revision 3.\n'], [],
                                      'rm', '-m', 'log msg',
                                      sbox.repo_url + '/A/D/G')
@@ -1262,8 +1261,7 @@ def another_hudson_problem(sbox):
   # Sigh, I can't get run_and_verify_update to work (but not because
   # of issue 919 as far as I can tell)
   expected_output = svntest.verify.UnorderedOutput(expected_output)
-  svntest.actions.run_and_verify_svn(None,
-                                     expected_output, [],
+  svntest.actions.run_and_verify_svn(expected_output, [],
                                      'up', G_path)
 
   # Both G and gamma should be 'deleted', update should produce no output
@@ -1306,9 +1304,9 @@ def update_deleted_targets(sbox):
                                         None, wc_dir)
 
   # Explicit update must not remove the 'deleted=true' entries
-  svntest.actions.run_and_verify_svn(None, exp_noop_up_out(2), [],
+  svntest.actions.run_and_verify_svn(exp_noop_up_out(2), [],
                                      'update', gamma_path)
-  svntest.actions.run_and_verify_svn(None, exp_noop_up_out(2), [],
+  svntest.actions.run_and_verify_svn(exp_noop_up_out(2), [],
                                      'update', F_path)
 
   # Update to r1 to restore items, since the parent directory is already
@@ -1340,8 +1338,7 @@ def new_dir_with_spaces(sbox):
   wc_dir = sbox.wc_dir
 
   # Create a new directory ("spacey dir") directly in repository
-  svntest.actions.run_and_verify_svn(None,
-                                     ['Committing transaction...\n',
+  svntest.actions.run_and_verify_svn(['Committing transaction...\n',
                                       'Committed revision 2.\n'], [],
                                      'mkdir', '-m', 'log msg',
                                      sbox.repo_url
@@ -1437,9 +1434,9 @@ def checkout_empty_dir(sbox):
   C_url = sbox.repo_url + '/A/C'
 
   svntest.main.safe_rmtree(wc_dir)
-  svntest.actions.run_and_verify_svn(None, None, [], 'checkout', C_url, wc_dir)
+  svntest.actions.run_and_verify_svn(None, [], 'checkout', C_url, wc_dir)
 
-  svntest.actions.run_and_verify_svn(None, [], [], 'status', wc_dir)
+  svntest.actions.run_and_verify_svn([], [], 'status', wc_dir)
 
 
 #----------------------------------------------------------------------
@@ -1498,17 +1495,17 @@ def update_deletion_inside_out(sbox):
   child_path = os.path.join(parent_path, 'E')  # Could be a file, doesn't matter
 
   # Delete the parent directory.
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'rm', parent_path)
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'ci', '-m', '', wc_dir)
 
   # Update back to r1.
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'update', '-r', '1', wc_dir)
 
   # Update just the child to r2.
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'update', '-r', '2', child_path)
 
   # Now try a normal update.
@@ -1539,7 +1536,7 @@ def update_schedule_add_dir(sbox):
   # Delete directory A/D/G in the repository via immediate commit
   G_path = sbox.ospath('A/D/G')
   G_url = sbox.repo_url + '/A/D/G'
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'rm', G_url, '-m', 'rev 2')
 
   # Update the wc to HEAD (r2)
@@ -1561,7 +1558,7 @@ def update_schedule_add_dir(sbox):
   # Do a URL->wc copy, creating a new schedule-add A/D/G.
   # (Standard procedure when trying to resurrect the directory.)
   D_path = sbox.ospath('A/D')
-  svntest.actions.run_and_verify_svn("Copy error:", None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'cp', G_url + '@1', D_path)
 
   # status should now show the dir scheduled for addition-with-history
@@ -1575,7 +1572,7 @@ def update_schedule_add_dir(sbox):
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
   # Now update with the schedule-add dir as the target.
-  svntest.actions.run_and_verify_svn(None, None, [], 'up', G_path)
+  svntest.actions.run_and_verify_svn(None, [], 'up', G_path)
 
   # The update should be a no-op, and the schedule-add directory
   # should still exist!  'svn status' shouldn't change at all.
@@ -1735,7 +1732,7 @@ def conflict_markers_matching_eol(sbox):
 
   # Checkout a second working copy
   wc_backup = sbox.add_wc_path('backup')
-  svntest.actions.run_and_verify_svn(None, None, [], 'checkout',
+  svntest.actions.run_and_verify_svn(None, [], 'checkout',
                                      sbox.repo_url, wc_backup)
 
   # set starting revision
@@ -1869,7 +1866,7 @@ def update_eolstyle_handling(sbox):
 
   # Checkout a second working copy
   wc_backup = sbox.add_wc_path('backup')
-  svntest.actions.run_and_verify_svn(None, None, [], 'checkout',
+  svntest.actions.run_and_verify_svn(None, [], 'checkout',
                                      sbox.repo_url, wc_backup)
   path_backup = os.path.join(wc_backup, 'A', 'mu')
 
@@ -1966,32 +1963,32 @@ def update_copy_of_old_rev(sbox):
   url2 = sbox.repo_url + '/A2/mu'
 
   # Remember the original text of the file
-  exit_code, text_r1, err = svntest.actions.run_and_verify_svn(None, None, [],
+  exit_code, text_r1, err = svntest.actions.run_and_verify_svn(None, [],
                                                                'cat', '-r1',
                                                                url)
 
   # Commit a different version of the file
   svntest.main.file_write(file, "Second revision of 'mu'\n")
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'ci', '-m', '', wc_dir)
 
   # Copy an old revision of its directory into a new path in the WC
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'cp', '-r1', dir, dir2)
 
   # Update.  (Should do nothing, but added a bogus "revision" in "entries".)
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'up', wc_dir)
 
   # Commit, and check that it says it's committing the right thing
   exp_out = ['Adding         ' + dir2 + '\n',
              'Committing transaction...\n',
              'Committed revision 3.\n']
-  svntest.actions.run_and_verify_svn(None, exp_out, [],
+  svntest.actions.run_and_verify_svn(exp_out, [],
                                      'ci', '-m', '', wc_dir)
 
   # Verify the committed file's content
-  svntest.actions.run_and_verify_svn(None, text_r1, [],
+  svntest.actions.run_and_verify_svn(text_r1, [],
                                      'cat', url2)
 
 #----------------------------------------------------------------------
@@ -2351,7 +2348,7 @@ def update_wc_on_windows_drive(sbox):
   was_cwd = os.getcwd()
 
   try:
-    svntest.actions.run_and_verify_svn(None, None, [],
+    svntest.actions.run_and_verify_svn(None, [],
                                        'checkout',
                                        sbox.repo_url, wc_dir)
 
@@ -2812,7 +2809,7 @@ def update_with_obstructing_additions(sb
   # URL to URL copy of A/D/G to A/M.
   G_URL = sbox.repo_url + '/A/D/G'
   M_URL = sbox.repo_url + '/A/M'
-  svntest.actions.run_and_verify_svn("Copy error:", None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'cp', G_URL, M_URL, '-m', '')
 
   # WC to WC copy of A/D/H to A/M, M now scheduled for addition with
@@ -2821,13 +2818,13 @@ def update_with_obstructing_additions(sb
   A_path = sbox.ospath('A')
   M_path = sbox.ospath('A/M')
 
-  svntest.actions.run_and_verify_svn("Copy error:", None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'cp', H_path, M_path)
 
   # URL to URL copy of A/D/H/omega to omicron.
   omega_URL = sbox.repo_url + '/A/D/H/omega'
   omicron_URL = sbox.repo_url + '/omicron'
-  svntest.actions.run_and_verify_svn("Copy error:", None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'cp', omega_URL, omicron_URL,
                                      '-m', '')
 
@@ -2836,7 +2833,7 @@ def update_with_obstructing_additions(sb
   chi_path = sbox.ospath('A/D/H/chi')
   omicron_path = sbox.ospath('omicron')
 
-  svntest.actions.run_and_verify_svn("Copy error:", None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'cp', chi_path,
                                      omicron_path)
 
@@ -3138,7 +3135,7 @@ def mergeinfo_update_elision(sbox):
      "Checked out revision 1.\n",
      "A         " + B_COPY_path + "\n",
     ])
-  svntest.actions.run_and_verify_svn(None, expected_stdout, [], 'copy',
+  svntest.actions.run_and_verify_svn(expected_stdout, [], 'copy',
                                      sbox.repo_url + "/A/B", B_COPY_path)
 
   expected_output = wc.State(wc_dir, {'A/B_COPY' : Item(verb='Adding')})
@@ -3288,8 +3285,7 @@ def mergeinfo_update_elision(sbox):
 
   # run_and_verify_merge doesn't support merging to a file WCPATH
   # so use run_and_verify_svn.
-  svntest.actions.run_and_verify_svn(None,
-                                     expected_merge_output([[3,5]],
+  svntest.actions.run_and_verify_svn(expected_merge_output([[3,5]],
                                      ['U    ' + alpha_COPY_path + '\n',
                                       ' U   ' + alpha_COPY_path + '\n']),
                                      [], 'merge', '-r2:5',
@@ -3304,7 +3300,7 @@ def mergeinfo_update_elision(sbox):
   svntest.actions.run_and_verify_status(alpha_COPY_path,
                                         expected_alpha_status)
 
-  svntest.actions.run_and_verify_svn(None, ["/A/B/E/alpha:3-5\n"], [],
+  svntest.actions.run_and_verify_svn(["/A/B/E/alpha:3-5\n"], [],
                                      'propget', SVN_PROP_MERGEINFO,
                                      alpha_COPY_path)
 
@@ -3346,7 +3342,7 @@ def mergeinfo_update_elision(sbox):
                                         expected_status, None, wc_dir)
 
   # Update A to get all paths to the same working revision.
-  svntest.actions.run_and_verify_svn(None, exp_noop_up_out(7), [],
+  svntest.actions.run_and_verify_svn(exp_noop_up_out(7), [],
                                      'up', wc_dir)
 
   # Merge r6:7 into A/B_COPY/E
@@ -3389,8 +3385,7 @@ def mergeinfo_update_elision(sbox):
                                        None, 1)
 
   # r8 - Commit the merge
-  svntest.actions.run_and_verify_svn(None,
-                                     exp_noop_up_out(7),
+  svntest.actions.run_and_verify_svn(exp_noop_up_out(7),
                                      [], 'update', wc_dir)
 
   expected_output = wc.State(wc_dir,
@@ -3528,11 +3523,11 @@ def update_copied_from_replaced_and_chan
   fn3_path = sbox.ospath(fn3_relpath)
 
   # Move fn2 to fn1
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'mv', fn2_path, fn1_path)
 
   # Move fn3 to fn2
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'mv', fn3_path, fn2_path)
 
   # Commit that change, creating r2.
@@ -3626,7 +3621,7 @@ def update_copied_and_deleted_prop(sbox)
   iota2_path = sbox.ospath('iota2')
 
   # Add a property on iota
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'propset', 'foo', 'bar', iota_path)
   # Commit that change, creating r2.
   expected_output = svntest.wc.State(wc_dir, {
@@ -3640,9 +3635,9 @@ def update_copied_and_deleted_prop(sbox)
                                         expected_status_mixed, None, wc_dir)
 
   # Copy iota to iota2 and delete the property on it.
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'copy', iota_path, iota2_path)
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'propdel', 'foo', iota2_path)
 
   # Commit that change, creating r3.
@@ -3816,16 +3811,14 @@ def update_accept_conflicts(sbox):
   # iota: no accept option
   # Just leave the conflicts alone, since run_and_verify_svn already uses
   # the --non-interactive option.
-  svntest.actions.run_and_verify_svn(None,
-                                     update_output_with_conflicts(
+  svntest.actions.run_and_verify_svn(update_output_with_conflicts(
                                        2, iota_path_backup),
                                      [],
                                      'update', iota_path_backup)
 
   # lambda: --accept=postpone
   # Just leave the conflicts alone.
-  svntest.actions.run_and_verify_svn(None,
-                                     update_output_with_conflicts(
+  svntest.actions.run_and_verify_svn(update_output_with_conflicts(
                                        2, lambda_path_backup),
                                      [],
                                      'update', '--accept=postpone',
@@ -3833,8 +3826,7 @@ def update_accept_conflicts(sbox):
 
   # mu: --accept=base
   # Accept the pre-update base file.
-  svntest.actions.run_and_verify_svn(None,
-                                     update_output_with_conflicts_resolved(
+  svntest.actions.run_and_verify_svn(update_output_with_conflicts_resolved(
                                        2, mu_path_backup),
                                      [],
                                      'update', '--accept=base',
@@ -3842,8 +3834,7 @@ def update_accept_conflicts(sbox):
 
   # alpha: --accept=mine
   # Accept the user's working file.
-  svntest.actions.run_and_verify_svn(None,
-                                     update_output_with_conflicts_resolved(
+  svntest.actions.run_and_verify_svn(update_output_with_conflicts_resolved(
                                        2, alpha_path_backup),
                                      [],
                                      'update', '--accept=mine-full',
@@ -3851,8 +3842,7 @@ def update_accept_conflicts(sbox):
 
   # beta: --accept=theirs
   # Accept their file.
-  svntest.actions.run_and_verify_svn(None,
-                                     update_output_with_conflicts_resolved(
+  svntest.actions.run_and_verify_svn(update_output_with_conflicts_resolved(
                                        2, beta_path_backup),
                                      [],
                                      'update', '--accept=theirs-full',
@@ -3862,8 +3852,7 @@ def update_accept_conflicts(sbox):
   # Run editor and accept the edited file. The merge tool will leave
   # conflicts in place, so expect a message on stderr, but expect
   # svn to exit with an exit code of 0.
-  svntest.actions.run_and_verify_svn2(None,
-                                      update_output_with_conflicts_resolved(
+  svntest.actions.run_and_verify_svn2(update_output_with_conflicts_resolved(
                                         2, pi_path_backup),
                                       "system(.*) returned.*", 0,
                                       'update', '--accept=edit',
@@ -3872,8 +3861,7 @@ def update_accept_conflicts(sbox):
 
   # rho: --accept=launch
   # Run the external merge tool, it should leave conflict markers in place.
-  svntest.actions.run_and_verify_svn(None,
-                                     update_output_with_conflicts(
+  svntest.actions.run_and_verify_svn(update_output_with_conflicts(
                                        2, rho_path_backup),
                                      [],
                                      'update', '--accept=launch',
@@ -3966,11 +3954,11 @@ def update_uuid_changed(sbox):
   uuid_before = svntest.actions.get_wc_uuid(wc_dir)
 
   # Change repository's uuid.
-  svntest.actions.run_and_verify_svnadmin(None, None, [],
+  svntest.actions.run_and_verify_svnadmin(None, [],
                                           'setuuid', repo_dir)
 
   # 'update' detected the new uuid...
-  svntest.actions.run_and_verify_svn(None, None, '.*UUID.*',
+  svntest.actions.run_and_verify_svn(None, '.*UUID.*',
                                      'update', wc_dir)
 
   # ...and didn't overwrite the old uuid.
@@ -4677,38 +4665,38 @@ def tree_conflict_uc1_update_deleted_tre
   def modify_dir(dir):
     """Make some set of local modifications to an existing tree:
     A prop change, add a child, delete a child, change a child."""
-    run_and_verify_svn(None, AnyOutput, [], 'propset', 'p', 'v', dir)
+    run_and_verify_svn(AnyOutput, [], 'propset', 'p', 'v', dir)
 
     path = os.path.join(dir, 'new_file')
     svntest.main.file_write(path, "This is the file 'new_file'.\n")
-    svntest.actions.run_and_verify_svn(None, None, [], 'add', path)
+    svntest.actions.run_and_verify_svn(None, [], 'add', path)
 
     path = os.path.join(dir, 'C', 'N')
     os.mkdir(path)
     path2 = os.path.join(dir, 'C', 'N', 'nu')
     svntest.main.file_write(path2, "This is the file 'nu'.\n")
-    svntest.actions.run_and_verify_svn(None, None, [], 'add', path)
+    svntest.actions.run_and_verify_svn(None, [], 'add', path)
 
     path = os.path.join(dir, 'B', 'lambda')
-    svntest.actions.run_and_verify_svn(None, None, [], 'delete', path)
+    svntest.actions.run_and_verify_svn(None, [], 'delete', path)
 
     path = os.path.join(dir, 'B', 'E', 'alpha')
     svntest.main.file_append(path, "An extra line.\n")
 
   # Prep for both scenarios
   modify_dir(A)
-  run_and_verify_svn(None, AnyOutput, [], 'ci', A, '-m', 'modify_dir')
-  run_and_verify_svn(None, AnyOutput, [], 'up', wc_dir)
+  run_and_verify_svn(AnyOutput, [], 'ci', A, '-m', 'modify_dir')
+  run_and_verify_svn(AnyOutput, [], 'up', wc_dir)
 
   # Existing scenario
   wc2 = sbox.add_wc_path('wc2')
   A2 = os.path.join(wc2, 'A')
   svntest.actions.duplicate_dir(sbox.wc_dir, wc2)
-  run_and_verify_svn(None, AnyOutput, [], 'delete', A2)
+  run_and_verify_svn(AnyOutput, [], 'delete', A2)
 
   # New scenario (starts at the revision before the committed mods)
-  run_and_verify_svn(None, AnyOutput, [], 'up', A, '-r1')
-  run_and_verify_svn(None, AnyOutput, [], 'delete', A)
+  run_and_verify_svn(AnyOutput, [], 'up', A, '-r1')
+  run_and_verify_svn(AnyOutput, [], 'delete', A)
 
   expected_output = None
   expected_disk = None
@@ -4809,21 +4797,21 @@ def tree_conflict_uc2_schedule_re_add(sb
   def modify_dir(dir):
     """Make some set of local modifications to an existing tree:
     A prop change, add a child, delete a child, change a child."""
-    run_and_verify_svn(None, AnyOutput, [],
+    run_and_verify_svn(AnyOutput, [],
                        'propset', 'p', 'v', dir)
     path = os.path.join(dir, 'new_file')
     svntest.main.file_write(path, "This is the file 'new_file'.\n")
-    svntest.actions.run_and_verify_svn(None, None, [], 'add', path)
+    svntest.actions.run_and_verify_svn(None, [], 'add', path)
 
     path = os.path.join(dir, 'B', 'lambda')
-    svntest.actions.run_and_verify_svn(None, None, [], 'delete', path)
+    svntest.actions.run_and_verify_svn(None, [], 'delete', path)
 
     path = os.path.join(dir, 'B', 'E', 'alpha')
     svntest.main.file_append(path, "An extra line.\n")
 
   # Prepare the repos so that a later 'update' has an incoming deletion:
   # Delete the dir in the repos, making r2
-  run_and_verify_svn(None, AnyOutput, [],
+  run_and_verify_svn(AnyOutput, [],
                      '-m', '', 'delete', dir_url)
 
   # Existing scenario
@@ -4831,8 +4819,8 @@ def tree_conflict_uc2_schedule_re_add(sb
   wc2 = sbox.add_wc_path('wc2')
   dir2 = os.path.join(wc2, dir)
   svntest.actions.duplicate_dir(sbox.wc_dir, wc2)
-  run_and_verify_svn(None, AnyOutput, [], 'up', wc2)
-  run_and_verify_svn(None, AnyOutput, [], 'copy', dir_url + '@1', dir2)
+  run_and_verify_svn(AnyOutput, [], 'up', wc2)
+  run_and_verify_svn(AnyOutput, [], 'copy', dir_url + '@1', dir2)
   modify_dir(dir2)
 
   # New scenario
@@ -5010,13 +4998,13 @@ def update_wc_of_dir_to_rev_not_containi
   # Create working copy of 'A' directory
   A_url = sbox.repo_url + "/A"
   other_wc_dir = sbox.add_wc_path("other")
-  svntest.actions.run_and_verify_svn(None, None, [], "co", A_url, other_wc_dir)
+  svntest.actions.run_and_verify_svn(None, [], "co", A_url, other_wc_dir)
 
   # Delete 'A' directory from repository
-  svntest.actions.run_and_verify_svn(None, None, [], "rm", A_url, "-m", "")
+  svntest.actions.run_and_verify_svn(None, [], "rm", A_url, "-m", "")
 
   # Try to update working copy of 'A' directory
-  svntest.actions.run_and_verify_svn(None, None,
+  svntest.actions.run_and_verify_svn(None,
                                      "svn: E160005: Target path '/A' does not exist",
                                      "up", other_wc_dir)
 
@@ -5108,29 +5096,29 @@ def mergeinfo_updates_merge_with_local_m
   ### No, we are not checking the merge output for these simple
   ### merges.  This is already covered *TO DEATH* in merge_tests.py.
   ###
-  svntest.actions.run_and_verify_svn(None, None, [], 'up', wc_dir)
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [], 'up', wc_dir)
+  svntest.actions.run_and_verify_svn(None, [],
                                      'merge', '-c3', '--depth', 'empty',
                                      sbox.repo_url + '/A', A_COPY_path)
-  svntest.actions.run_and_verify_svn(None, None, [], 'ci', '-m',
+  svntest.actions.run_and_verify_svn(None, [], 'ci', '-m',
                                      'Merge r3 from A to A_COPY at depth empty',
                                      wc_dir)
   # Merge -c5 from A to A_COPY (at default --depth infinity), commit as r8.
-  svntest.actions.run_and_verify_svn(None, None, [], 'up', wc_dir)
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [], 'up', wc_dir)
+  svntest.actions.run_and_verify_svn(None, [],
                                      'merge', '-c5',
                                      sbox.repo_url + '/A', A_COPY_path)
-  svntest.actions.run_and_verify_svn(None, None, [], 'ci', '-m',
+  svntest.actions.run_and_verify_svn(None, [], 'ci', '-m',
                                      'Merge r5 from A to A_COPY', wc_dir)
 
   # Update WC to r7, repeat merge of -c3 from A to A_COPY but this
   # time do it at --depth infinity.  Confirm that the mergeinfo
   # on A_COPY is no longer inheritable.
-  svntest.actions.run_and_verify_svn(None, None, [], 'up', '-r7', wc_dir)
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [], 'up', '-r7', wc_dir)
+  svntest.actions.run_and_verify_svn(None, [],
                                      'merge', '-c3', '--depth', 'infinity',
                                      sbox.repo_url + '/A', A_COPY_path)
-  svntest.actions.run_and_verify_svn(None, [A_COPY_path + " - /A:3\n"], [],
+  svntest.actions.run_and_verify_svn([A_COPY_path + " - /A:3\n"], [],
                                      'pg', SVN_PROP_MERGEINFO, '-R',
                                      A_COPY_path)
 
@@ -5139,8 +5127,8 @@ def mergeinfo_updates_merge_with_local_m
   # brought down by the update (/A:3* --> /A:3*,5) leaving us with /A:3,5.
   ### This was failing because of issue #3573.  The local mergeinfo change
   ### is reverted, leaving '/A:3*,5' on A_COPY.
-  svntest.actions.run_and_verify_svn(None, None, [], 'up', wc_dir)
-  svntest.actions.run_and_verify_svn(None, [A_COPY_path + " - /A:3,5\n"], [],
+  svntest.actions.run_and_verify_svn(None, [], 'up', wc_dir)
+  svntest.actions.run_and_verify_svn([A_COPY_path + " - /A:3,5\n"], [],
                                      'pg', SVN_PROP_MERGEINFO, '-R',
                                      A_COPY_path)
 
@@ -5324,7 +5312,7 @@ def update_to_HEAD_plus_1(sbox):
 
   other_wc = sbox.add_wc_path('other')
   other_url = sbox.repo_url + '/A'
-  svntest.actions.run_and_verify_svn("subtree checkout", None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'co', other_url, other_wc)
   svntest.actions.run_and_verify_update(other_wc,
                                         None, None, None,
@@ -5375,7 +5363,7 @@ def update_moved_dir_leaf_del(sbox):
 
   # Now resolve the conflict, using --accept=mine-conflict applying
   # the update to A/B/E2
-  svntest.actions.run_and_verify_svn("resolve failed", None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'resolve',
                                      '--accept=mine-conflict',
                                      sbox.ospath('A/B/E'))
@@ -5431,7 +5419,7 @@ def update_moved_dir_edited_leaf_del(sbo
   # Now resolve the conflict, using --accept=mine-conflict.
   # This should apply the update to A/B/E2, and flag a tree
   # conflict on A/B/E2/alpha (incoming delete vs. local edit)
-  svntest.actions.run_and_verify_svn("resolve failed", None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'resolve',
                                      '--accept=mine-conflict',
                                      sbox.ospath('A/B/E'))
@@ -5489,7 +5477,7 @@ def update_moved_dir_file_add(sbox):
 
   # Now resolve the conflict, using --accept=mine-conflict.
   # This should apply the update to A/B/E2, adding A/B/E2/foo.
-  svntest.actions.run_and_verify_svn("resolve failed", None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'resolve',
                                      '--accept=mine-conflict',
                                      sbox.ospath('A/B/E'))
@@ -5547,7 +5535,7 @@ def update_moved_dir_dir_add(sbox):
                                         expected_status,
                                         None, None, None,
                                         None, None, 1)
-  svntest.actions.run_and_verify_svn("resolve failed", None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'resolve',
                                      '--recursive',
                                      '--accept=mine-conflict', wc_dir)
@@ -5608,7 +5596,7 @@ def update_moved_dir_file_move(sbox):
   # The incoming change is a delete as we don't yet track server-side
   # moves.  Resolving the tree-conflict as "mine-conflict" applies the
   # delete to the move destination.
-  svntest.actions.run_and_verify_svn("resolve failed", None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'resolve',
                                      '--accept=mine-conflict',
                                      sbox.ospath('A/B/E'))
@@ -5672,7 +5660,7 @@ def update_move_text_mod(sbox):
                                         None, None, None,
                                         None, None, 1)
 
-  svntest.actions.run_and_verify_svn("resolve failed", None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'resolve',
                                      '--recursive',
                                      '--accept=mine-conflict',
@@ -5738,7 +5726,7 @@ def update_nested_move_text_mod(sbox):
                                         None, None, None,
                                         None, None, 1)
 
-  svntest.actions.run_and_verify_svn("resolve failed", None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'resolve',
                                      '--recursive',
                                      '--accept=mine-conflict',
@@ -5898,7 +5886,7 @@ def update_edit_delete_obstruction(sbox)
   os.rmdir(sbox.ospath('A/mu'))
 
   # Revert to remove working nodes and tree conflicts
-  svntest.actions.run_and_verify_svn('Reverting', None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'revert', '-R',
                                      sbox.ospath('A/B'),
                                      sbox.ospath('A/mu'),
@@ -6026,7 +6014,7 @@ def break_moved_dir_edited_leaf_del(sbox
   # Now resolve the conflict, using --accept=working
   # This should break the move of A/B/E to A/B/E2, leaving A/B/E2
   # as a copy. The deletion of A/B/E is not reverted.
-  svntest.actions.run_and_verify_svn("resolve failed", None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'resolve', '--recursive',
                                      '--accept=working', wc_dir)
   expected_status.tweak('A/B/E', treeconflict=None, moved_to=None)
@@ -6089,7 +6077,7 @@ def break_moved_replaced_dir(sbox):
   # Now resolve the conflict, using --accept=working
   # This should break the move of A/B/E to A/B/E2, leaving A/B/E2
   # as a copy. A/B/E is not reverted.
-  svntest.actions.run_and_verify_svn("resolve failed", None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'resolve', '--recursive',
                                      '--accept=working', wc_dir)
   expected_status.tweak('A/B/E2', moved_from=None)
@@ -6105,17 +6093,17 @@ def update_removes_switched(sbox):
   wc_dir = sbox.wc_dir
   repo_url = sbox.repo_url
 
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'cp', repo_url + '/A',
                                            repo_url + '/AA', '-m', 'Q')
 
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'co', repo_url + '/A', sbox.wc_dir)
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'switch', repo_url + '/AA/B',
                                                wc_dir + '/B')
 
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'rm', repo_url + '/AA/B', '-m', 'Q')
 
   expected_output = svntest.wc.State(wc_dir, {
@@ -6426,7 +6414,7 @@ def move_update_props(sbox):
                                         '-r', '2', wc_dir)
 
   # Resolve conflict moving changes to destination without conflict
-  svntest.actions.run_and_verify_svn("resolve failed", None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'resolve',
                                      '--accept=mine-conflict',
                                      sbox.ospath('A/B'))
@@ -6453,7 +6441,7 @@ def move_update_props(sbox):
                                         '-r', '3', wc_dir)
 
   # Resolve conflict moving changes and raising property conflicts
-  svntest.actions.run_and_verify_svn("resolve failed", None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'resolve',
                                      '--accept=mine-conflict',
                                      sbox.ospath('A/B'))
@@ -6488,7 +6476,7 @@ def windows_update_backslash(sbox):
     # Let's use file:// to work around.
     mucc_url = 'file:///' + os.path.abspath(sbox.repo_dir).replace('\\', '/')
 
-  svntest.actions.run_and_verify_svnmucc(None, None, [],
+  svntest.actions.run_and_verify_svnmucc(None, [],
                     '-U', mucc_url,
                     '-m', '',
                     'mkdir', 'A/completely\\unusable\\dir')
@@ -6510,7 +6498,7 @@ def windows_update_backslash(sbox):
     expected_output = None
     expected_err = 'svn: E155000: .* is not valid.*'
 
-  svntest.actions.run_and_verify_svn(wc_dir, expected_output, expected_err,
+  svntest.actions.run_and_verify_svn(expected_output, expected_err,
                                      'up', wc_dir)
 
   if sbox.repo_url.startswith('http'):
@@ -6606,7 +6594,7 @@ def bump_below_tree_conflict(sbox):
   sbox.build()
   wc_dir = sbox.wc_dir
 
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'rm', sbox.repo_url + '/A/B',
                                      '-m', '')
 
@@ -6681,8 +6669,7 @@ def update_child_below_add(sbox):
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
   expected_status.remove('A/B', 'A/B/E', 'A/B/E/alpha', 'A/B/E/beta',
                          'A/B/F', 'A/B/lambda')
-  svntest.actions.run_and_verify_svn("update A/B/E",
-                                     expected_output,
+  svntest.actions.run_and_verify_svn(expected_output,
                                      expected_err,
                                      'update', e_path)
   svntest.actions.run_and_verify_status(wc_dir, expected_status)

Modified: subversion/branches/fsx-1.10/subversion/tests/cmdline/upgrade_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-1.10/subversion/tests/cmdline/upgrade_tests.py?rev=1659238&r1=1659237&r2=1659238&view=diff
==============================================================================
--- subversion/branches/fsx-1.10/subversion/tests/cmdline/upgrade_tests.py (original)
+++ subversion/branches/fsx-1.10/subversion/tests/cmdline/upgrade_tests.py Thu Feb 12 12:21:31 2015
@@ -257,7 +257,7 @@ def basic_upgrade(sbox):
   replace_sbox_with_tarfile(sbox, 'basic_upgrade.tar.bz2')
 
   # Attempt to use the working copy, this should give an error
-  svntest.actions.run_and_verify_svn(None, None, wc_is_too_old_regex,
+  svntest.actions.run_and_verify_svn(None, wc_is_too_old_regex,
                                      'info', sbox.wc_dir)
 
   # Upgrade on something anywhere within a versioned subdir gives a
@@ -266,24 +266,24 @@ def basic_upgrade(sbox):
   # Both cases use the same error code.
   not_wc = ".*(E155007|E155019).*%s'.*not a working copy.*"
   os.mkdir(sbox.ospath('X'))
-  svntest.actions.run_and_verify_svn(None, None, not_wc % 'X',
+  svntest.actions.run_and_verify_svn(None, not_wc % 'X',
                                      'upgrade', sbox.ospath('X'))
 
   # Upgrade on a non-existent subdir within an old WC gives a
   # 'not a working copy' error.
-  svntest.actions.run_and_verify_svn(None, None, not_wc % 'Y',
+  svntest.actions.run_and_verify_svn(None, not_wc % 'Y',
                                      'upgrade', sbox.ospath('Y'))
   # Upgrade on a versioned file within an old WC gives a
   # 'not a working copy' error.
-  svntest.actions.run_and_verify_svn(None, None, not_wc % 'mu',
+  svntest.actions.run_and_verify_svn(None, not_wc % 'mu',
                                      'upgrade', sbox.ospath('A/mu'))
   # Upgrade on a versioned dir within an old WC gives a
   # 'not a working copy' error.
-  svntest.actions.run_and_verify_svn(None, None, not_wc % 'A',
+  svntest.actions.run_and_verify_svn(None, not_wc % 'A',
                                      'upgrade', sbox.ospath('A'))
 
   # Now upgrade the working copy
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'upgrade', sbox.wc_dir)
 
   # Actually check the format number of the upgraded working copy
@@ -303,10 +303,10 @@ def upgrade_with_externals(sbox):
 
   # Attempt to use the working copy, this should give an error
   expected_stderr = wc_is_too_old_regex
-  svntest.actions.run_and_verify_svn(None, None, expected_stderr,
+  svntest.actions.run_and_verify_svn(None, expected_stderr,
                                      'info', sbox.wc_dir)
   # Now upgrade the working copy
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'upgrade', sbox.wc_dir)
 
   # Actually check the format number of the upgraded working copy
@@ -319,12 +319,12 @@ def upgrade_1_5_body(sbox, subcommand):
 
   # Attempt to use the working copy, this should give an error
   expected_stderr = wc_is_too_old_regex
-  svntest.actions.run_and_verify_svn(None, None, expected_stderr,
+  svntest.actions.run_and_verify_svn(None, expected_stderr,
                                      subcommand, sbox.wc_dir)
 
 
   # Now upgrade the working copy
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'upgrade', sbox.wc_dir)
 
   # Check the format of the working copy
@@ -358,7 +358,7 @@ def logs_left_1_5(sbox):
 
   # Try to upgrade, this should give an error
   expected_stderr = (".*Cannot upgrade with existing logs; .*")
-  svntest.actions.run_and_verify_svn(None, None, expected_stderr,
+  svntest.actions.run_and_verify_svn(None, expected_stderr,
                                      'upgrade', sbox.wc_dir)
 
 
@@ -366,7 +366,7 @@ def upgrade_wcprops(sbox):
   "test upgrading a working copy with wcprops"
 
   replace_sbox_with_tarfile(sbox, 'upgrade_wcprops.tar.bz2')
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'upgrade', sbox.wc_dir)
 
   # Make sure that .svn/all-wcprops has disappeared
@@ -436,15 +436,15 @@ def basic_upgrade_1_0(sbox):
 
   # Attempt to use the working copy, this should give an error
   expected_stderr = wc_is_too_old_regex
-  svntest.actions.run_and_verify_svn(None, None, expected_stderr,
+  svntest.actions.run_and_verify_svn(None, expected_stderr,
                                      'info', sbox.wc_dir)
 
 
   # Now upgrade the working copy
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'upgrade', sbox.wc_dir)
   # And the separate working copy below COPIED or check_format() fails
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'upgrade',
                                      os.path.join(sbox.wc_dir, 'COPIED', 'G'))
 
@@ -520,12 +520,12 @@ def basic_upgrade_1_0(sbox):
 def do_x3_upgrade(sbox, expected_error=[]):
   # Attempt to use the working copy, this should give an error
   expected_stderr = wc_is_too_old_regex
-  svntest.actions.run_and_verify_svn(None, None, expected_stderr,
+  svntest.actions.run_and_verify_svn(None, expected_stderr,
                                      'info', sbox.wc_dir)
 
 
   # Now upgrade the working copy
-  svntest.actions.run_and_verify_svn(None, None, expected_error,
+  svntest.actions.run_and_verify_svn(None, expected_error,
                                      'upgrade', sbox.wc_dir)
 
   if expected_error != []:
@@ -599,7 +599,7 @@ def do_x3_upgrade(sbox, expected_error=[
       'A/G_new/rho'       : {'svn:eol-style': 'native'}
   })
 
-  svntest.actions.run_and_verify_svn(None, 'Reverted.*', [],
+  svntest.actions.run_and_verify_svn('Reverted.*', [],
                                      'revert', '-R', sbox.wc_dir)
 
   expected_status = svntest.wc.State(sbox.wc_dir,
@@ -664,7 +664,7 @@ def missing_dirs(sbox):
   #   touch wc/A/D wc/A/B_new/F
 
   replace_sbox_with_tarfile(sbox, 'missing-dirs.tar.bz2')
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'upgrade', sbox.wc_dir)
   expected_status = svntest.wc.State(sbox.wc_dir,
     {
@@ -693,7 +693,7 @@ def missing_dirs2(sbox):
   os.remove(sbox.ospath('A/B_new/F'))
   os.mkdir(sbox.ospath('A/D'))
   os.mkdir(sbox.ospath('A/B_new/F'))
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'upgrade', sbox.wc_dir)
   expected_status = svntest.wc.State(sbox.wc_dir,
     {
@@ -720,7 +720,7 @@ def delete_and_keep_local(sbox):
 
   replace_sbox_with_tarfile(sbox, 'wc-delete.tar.bz2')
 
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'upgrade', sbox.wc_dir)
 
   expected_status = svntest.wc.State(sbox.wc_dir,
@@ -751,7 +751,7 @@ def dirs_only_upgrade(sbox):
   expected_output = ["Upgraded '%s'\n" % (sbox.ospath('').rstrip(os.path.sep)),
                      "Upgraded '%s'\n" % (sbox.ospath('A'))]
 
-  svntest.actions.run_and_verify_svn(None, expected_output, [],
+  svntest.actions.run_and_verify_svn(expected_output, [],
                                      'upgrade', sbox.wc_dir)
 
   expected_status = svntest.wc.State(sbox.wc_dir, {
@@ -822,7 +822,7 @@ def delete_in_copy_upgrade(sbox):
   wc_dir = sbox.wc_dir
   replace_sbox_with_tarfile(sbox, 'delete-in-copy.tar.bz2')
 
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'upgrade', sbox.wc_dir)
 
   expected_status = svntest.actions.get_virginal_state(sbox.wc_dir, 1)
@@ -836,7 +836,7 @@ def delete_in_copy_upgrade(sbox):
       })
   run_and_verify_status_no_server(sbox.wc_dir, expected_status)
 
-  svntest.actions.run_and_verify_svn(None, 'Reverted.*', [], 'revert', '-R',
+  svntest.actions.run_and_verify_svn('Reverted.*', [], 'revert', '-R',
                                      sbox.ospath('A/B-copied/E'))
 
   expected_status.tweak('A/B-copied/E',
@@ -855,7 +855,7 @@ def replaced_files(sbox):
   wc_dir = sbox.wc_dir
   replace_sbox_with_tarfile(sbox, 'replaced-files.tar.bz2')
 
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'upgrade', sbox.wc_dir)
 
   # A is a checked-out dir containing A/f and A/g, then
@@ -893,7 +893,7 @@ def replaced_files(sbox):
       [sbox.ospath('B/f'), '395dfb603d8a4e0348d0b082803f2b7426c76eb9'],
       [sbox.ospath('B/g'), None]])
 
-  svntest.actions.run_and_verify_svn(None, 'Reverted.*', [], 'revert',
+  svntest.actions.run_and_verify_svn('Reverted.*', [], 'revert',
                                      sbox.ospath('A/f'), sbox.ospath('B/f'),
                                      sbox.ospath('A/g'), sbox.ospath('B/g'))
 
@@ -915,7 +915,7 @@ def upgrade_with_scheduled_change(sbox):
 
   replace_sbox_with_tarfile(sbox, 'upgrade_with_scheduled_change.tar.bz2')
 
-  svntest.actions.run_and_verify_svn(None, None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      'upgrade', sbox.wc_dir)
   expected_status = svntest.actions.get_virginal_state(sbox.wc_dir, 1)
   expected_status.add({
@@ -929,7 +929,7 @@ def tree_replace1(sbox):
 
   replace_sbox_with_tarfile(sbox, 'tree-replace1.tar.bz2')
 
-  svntest.actions.run_and_verify_svn(None, None, [], 'upgrade', sbox.wc_dir)
+  svntest.actions.run_and_verify_svn(None, [], 'upgrade', sbox.wc_dir)
 
   expected_status = svntest.wc.State(sbox.wc_dir,
     {
@@ -953,7 +953,7 @@ def tree_replace2(sbox):
 
   replace_sbox_with_tarfile(sbox, 'tree-replace2.tar.bz2')
 
-  svntest.actions.run_and_verify_svn(None, None, [], 'upgrade', sbox.wc_dir)
+  svntest.actions.run_and_verify_svn(None, [], 'upgrade', sbox.wc_dir)
 
   expected_status = svntest.wc.State(sbox.wc_dir,
     {
@@ -987,7 +987,7 @@ def upgrade_from_format_28(sbox):
   assert not os.path.exists(new_pristine_path)
 
   # Upgrade the WC
-  svntest.actions.run_and_verify_svn(None, None, [], 'upgrade', sbox.wc_dir)
+  svntest.actions.run_and_verify_svn(None, [], 'upgrade', sbox.wc_dir)
 
   assert not os.path.exists(old_pristine_path)
   assert os.path.exists(new_pristine_path)
@@ -998,7 +998,7 @@ def depth_exclude(sbox):
 
   replace_sbox_with_tarfile(sbox, 'depth_exclude.tar.bz2')
 
-  svntest.actions.run_and_verify_svn(None, None, [], 'upgrade', sbox.wc_dir)
+  svntest.actions.run_and_verify_svn(None, [], 'upgrade', sbox.wc_dir)
 
   expected_status = svntest.wc.State(sbox.wc_dir,
     {
@@ -1014,7 +1014,7 @@ def depth_exclude_2(sbox):
 
   replace_sbox_with_tarfile(sbox, 'depth_exclude_2.tar.bz2')
 
-  svntest.actions.run_and_verify_svn(None, None, [], 'upgrade', sbox.wc_dir)
+  svntest.actions.run_and_verify_svn(None, [], 'upgrade', sbox.wc_dir)
 
   expected_status = svntest.wc.State(sbox.wc_dir,
     {
@@ -1029,7 +1029,7 @@ def add_add_del_del_tc(sbox):
 
   replace_sbox_with_tarfile(sbox, 'add_add_del_del_tc.tar.bz2')
 
-  svntest.actions.run_and_verify_svn(None, None, [], 'upgrade', sbox.wc_dir)
+  svntest.actions.run_and_verify_svn(None, [], 'upgrade', sbox.wc_dir)
 
   expected_status = svntest.wc.State(sbox.wc_dir,
     {
@@ -1047,7 +1047,7 @@ def add_add_x2(sbox):
 
   replace_sbox_with_tarfile(sbox, 'add_add_x2.tar.bz2')
 
-  svntest.actions.run_and_verify_svn(None, None, [], 'upgrade', sbox.wc_dir)
+  svntest.actions.run_and_verify_svn(None, [], 'upgrade', sbox.wc_dir)
 
   expected_status = svntest.wc.State(sbox.wc_dir,
     {
@@ -1077,7 +1077,7 @@ def upgrade_with_missing_subdir(sbox):
 
   # Attempt to use the working copy, this should give an error
   expected_stderr = wc_is_too_old_regex
-  svntest.actions.run_and_verify_svn(None, None, expected_stderr,
+  svntest.actions.run_and_verify_svn(None, expected_stderr,
                                      'info', sbox.wc_dir)
 
   # Now remove a subdirectory
@@ -1093,7 +1093,7 @@ def upgrade_with_missing_subdir(sbox):
     "Upgraded '%s'\n" % sbox.ospath('A/D/G'),
     "Upgraded '%s'\n" % sbox.ospath('A/D/H'),
   ])
-  svntest.actions.run_and_verify_svn(None, expected_output, [],
+  svntest.actions.run_and_verify_svn(expected_output, [],
                                      'upgrade', sbox.wc_dir)
 
   # And now perform an update. (This used to fail with an assertion)
@@ -1121,7 +1121,7 @@ def upgrade_locked(sbox):
 
   replace_sbox_with_tarfile(sbox, 'upgrade_locked.tar.bz2')
 
-  svntest.actions.run_and_verify_svn(None, None, [], 'upgrade', sbox.wc_dir)
+  svntest.actions.run_and_verify_svn(None, [], 'upgrade', sbox.wc_dir)
 
   expected_status = svntest.wc.State(sbox.wc_dir,
     {
@@ -1144,21 +1144,21 @@ def upgrade_file_externals(sbox):
                             '07146bbd-0b64-4aaf-ab70-cd76a0df2d41')
 
   expected_output = svntest.verify.RegexOutput('r2 committed.*')
-  svntest.actions.run_and_verify_svnmucc(None, expected_output, [],
+  svntest.actions.run_and_verify_svnmucc(expected_output, [],
                                          '-m', 'r2',
                                          'propset', 'svn:externals',
                                          '^/A/B/E EX\n^/A/mu muX',
                                          sbox.repo_url + '/A/B/F')
 
   expected_output = svntest.verify.RegexOutput('r3 committed.*')
-  svntest.actions.run_and_verify_svnmucc(None, expected_output, [],
+  svntest.actions.run_and_verify_svnmucc(expected_output, [],
                                          '-m', 'r3',
                                          'propset', 'svn:externals',
                                          '^/A/B/F FX\n^/A/B/lambda lambdaX',
                                          sbox.repo_url + '/A/C')
 
   expected_output = svntest.verify.RegexOutput('r4 committed.*')
-  svntest.actions.run_and_verify_svnmucc(None, expected_output, [],
+  svntest.actions.run_and_verify_svnmucc(expected_output, [],
                                          '-m', 'r4',
                                          'propset', 'pname1', 'pvalue1',
                                          sbox.repo_url + '/A/mu',
@@ -1167,8 +1167,8 @@ def upgrade_file_externals(sbox):
                                          'propset', 'pname3', 'pvalue3',
                                          sbox.repo_url + '/A/B/E/alpha')
 
-  svntest.actions.run_and_verify_svn(None, None, [], 'upgrade', sbox.wc_dir)
-  svntest.actions.run_and_verify_svn(None, None, [], 'relocate',
+  svntest.actions.run_and_verify_svn(None, [], 'upgrade', sbox.wc_dir)
+  svntest.actions.run_and_verify_svn(None, [], 'relocate',
                                      'file:///tmp/repo', sbox.repo_url,
                                      sbox.wc_dir)
 
@@ -1213,10 +1213,10 @@ def upgrade_missing_replaced(sbox):
   sbox.build(create_wc=False)
   replace_sbox_with_tarfile(sbox, 'upgrade_missing_replaced.tar.bz2')
 
-  svntest.actions.run_and_verify_svn(None, None, [], 'upgrade', sbox.wc_dir)
+  svntest.actions.run_and_verify_svn(None, [], 'upgrade', sbox.wc_dir)
   svntest.main.run_svnadmin('setuuid', sbox.repo_dir,
                             'd7130b12-92f6-45c9-9217-b9f0472c3fab')
-  svntest.actions.run_and_verify_svn(None, None, [], 'relocate',
+  svntest.actions.run_and_verify_svn(None, [], 'relocate',
                                      'file:///tmp/repo', sbox.repo_url,
                                      sbox.wc_dir)
 
@@ -1239,7 +1239,7 @@ def upgrade_missing_replaced(sbox):
   svntest.actions.run_and_verify_update(sbox.wc_dir, expected_output,
                                         None, expected_status)
 
-  svntest.actions.run_and_verify_svn(None, 'Reverted.*', [], 'revert', '-R',
+  svntest.actions.run_and_verify_svn('Reverted.*', [], 'revert', '-R',
                                      sbox.wc_dir)
   expected_status = svntest.actions.get_virginal_state(sbox.wc_dir, 1)
   # And verify that the state is now valid in both the entries an status world.
@@ -1252,10 +1252,10 @@ def upgrade_not_present_replaced(sbox):
   sbox.build(create_wc=False)
   replace_sbox_with_tarfile(sbox, 'upgrade_not_present_replaced.tar.bz2')
 
-  svntest.actions.run_and_verify_svn(None, None, [], 'upgrade', sbox.wc_dir)
+  svntest.actions.run_and_verify_svn(None, [], 'upgrade', sbox.wc_dir)
   svntest.main.run_svnadmin('setuuid', sbox.repo_dir,
                             'd7130b12-92f6-45c9-9217-b9f0472c3fab')
-  svntest.actions.run_and_verify_svn(None, None, [], 'relocate',
+  svntest.actions.run_and_verify_svn(None, [], 'relocate',
                                      'file:///tmp/repo', sbox.repo_url,
                                      sbox.wc_dir)
 
@@ -1278,15 +1278,15 @@ def upgrade_from_1_7_conflict(sbox):
 
   # The working copy contains a text conflict, and upgrading such
   # a working copy used to cause a pointless 'upgrade required' error.
-  svntest.actions.run_and_verify_svn(None, None, [], 'upgrade', sbox.wc_dir)
+  svntest.actions.run_and_verify_svn(None, [], 'upgrade', sbox.wc_dir)
 
 def do_iprops_upgrade(nonrootfile, rootfile, sbox):
 
   wc_dir = sbox.wc_dir
 
   replace_sbox_with_tarfile(sbox, nonrootfile)
-  svntest.actions.run_and_verify_svn(None, None, [], 'upgrade', sbox.wc_dir)
-  svntest.actions.run_and_verify_svn(None, None, [], 'relocate',
+  svntest.actions.run_and_verify_svn(None, [], 'upgrade', sbox.wc_dir)
+  svntest.actions.run_and_verify_svn(None, [], 'relocate',
                                      'file:///tmp/repo', sbox.repo_url, wc_dir)
 
   expected_output = []
@@ -1333,8 +1333,8 @@ def do_iprops_upgrade(nonrootfile, rootf
 
   # Now try with a repository root working copy
   replace_sbox_with_tarfile(sbox, rootfile)
-  svntest.actions.run_and_verify_svn(None, None, [], 'upgrade', sbox.wc_dir)
-  svntest.actions.run_and_verify_svn(None, None, [], 'relocate',
+  svntest.actions.run_and_verify_svn(None, [], 'upgrade', sbox.wc_dir)
+  svntest.actions.run_and_verify_svn(None, [], 'relocate',
                                      'file:///tmp/repo', sbox.repo_url, wc_dir)
 
   # Unswitched inherited props available after upgrade
@@ -1417,7 +1417,7 @@ def changelist_upgrade_1_6(sbox):
   svntest.main.run_svnadmin('setuuid', sbox.repo_dir,
                             'aa4c97bd-2e1a-4e55-a1e5-3db22cff2673')
   replace_sbox_with_tarfile(sbox, 'changelist_upgrade_1_6.tar.bz2')
-  svntest.actions.run_and_verify_svn(None, None, [], 'upgrade', sbox.wc_dir)
+  svntest.actions.run_and_verify_svn(None, [], 'upgrade', sbox.wc_dir)
 
   exit_code, output, errput = svntest.main.run_svn(None, 'info', sbox.wc_dir,
                                                    '--depth', 'infinity',
@@ -1436,7 +1436,7 @@ def upgrade_1_7_dir_external(sbox):
 
   # This fails for 'make check EXCLUSIVE_WC_LOCKS=1' giving an error:
   # svn: warning: W200033: sqlite[S5]: database is locked
-  svntest.actions.run_and_verify_svn(None, None, [], 'upgrade', sbox.wc_dir)
+  svntest.actions.run_and_verify_svn(None, [], 'upgrade', sbox.wc_dir)
 
 ########################################################################
 # Run the tests

Modified: subversion/branches/fsx-1.10/subversion/tests/cmdline/wc_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-1.10/subversion/tests/cmdline/wc_tests.py?rev=1659238&r1=1659237&r2=1659238&view=diff
==============================================================================
--- subversion/branches/fsx-1.10/subversion/tests/cmdline/wc_tests.py (original)
+++ subversion/branches/fsx-1.10/subversion/tests/cmdline/wc_tests.py Thu Feb 12 12:21:31 2015
@@ -132,7 +132,7 @@ def status_with_inaccessible_wc_db(sbox)
   sbox.build(read_only = True)
   os.chmod(sbox.ospath(".svn/wc.db"), 0)
   svntest.actions.run_and_verify_svn(
-    "Status when wc.db is not accessible", None,
+    None,
     r"[^ ]+ E155016: The working copy database at '.*' is corrupt",
     "st", sbox.wc_dir)
 
@@ -144,7 +144,7 @@ def status_with_corrupt_wc_db(sbox):
   with open(sbox.ospath(".svn/wc.db"), 'wb') as fd:
     fd.write('\0' * 17)
   svntest.actions.run_and_verify_svn(
-    "Status when wc.db is corrupt", None,
+    None,
     r"[^ ]+ E155016: The working copy database at '.*' is corrupt",
     "st", sbox.wc_dir)
 
@@ -155,7 +155,7 @@ def status_with_zero_length_wc_db(sbox):
   sbox.build(read_only = True)
   os.close(os.open(sbox.ospath(".svn/wc.db"), os.O_RDWR | os.O_TRUNC))
   svntest.actions.run_and_verify_svn(
-    "Status when wc.db has zero length", None,
+    None,
     r"[^ ]+ E200030:",                    # SVN_ERR_SQLITE_ERROR
     "st", sbox.wc_dir)
 
@@ -166,7 +166,7 @@ def status_without_wc_db(sbox):
   sbox.build(read_only = True)
   os.remove(sbox.ospath(".svn/wc.db"))
   svntest.actions.run_and_verify_svn(
-    "Status when wc.db is missing", None,
+    None,
     r"[^ ]+ E155016: The working copy database at '.*' is missing",
     "st", sbox.wc_dir)
 
@@ -179,7 +179,7 @@ def status_without_wc_db_and_entries(sbo
   os.remove(sbox.ospath(".svn/wc.db"))
   os.remove(sbox.ospath(".svn/entries"))
   svntest.actions.run_and_verify_svn2(
-    "Status when wc.db and entries are missing", None,
+    None,
     r"[^ ]+ warning: W155007: '.*' is not a working copy",
     0, "st", sbox.wc_dir)
 
@@ -192,7 +192,7 @@ def status_with_missing_wc_db_and_maybe_
     fd.write('something\n')
     os.remove(sbox.ospath(".svn/wc.db"))
   svntest.actions.run_and_verify_svn(
-    "Status when wc.db is missing and .svn/entries might be valid", None,
+    None,
     r"[^ ]+ E155036:",                    # SVN_ERR_WC_UPGRADE_REQUIRED
     "st", sbox.wc_dir)
 
@@ -203,7 +203,7 @@ def cleanup_below_wc_root(sbox):
 
   sbox.build(read_only = True)
   svntest.actions.lock_admin_dir(sbox.ospath(""), True)
-  svntest.actions.run_and_verify_svn("Cleanup below wc root", None, [],
+  svntest.actions.run_and_verify_svn(None, [],
                                      "cleanup", sbox.ospath("A"))
 
 @SkipUnless(svntest.main.is_posix_os)
@@ -256,21 +256,21 @@ def cleanup_unversioned_items(sbox):
         '?       dir1\n',
         '?       dir2\n',
   ]
-  svntest.actions.run_and_verify_svn(None, UnorderedOutput(expected_output),
+  svntest.actions.run_and_verify_svn(UnorderedOutput(expected_output),
                                      [], 'status')
   expected_output += [
         'I       dir_foo\n',
         'I       file_foo\n',
         'I       foo.o\n',
   ]
-  svntest.actions.run_and_verify_svn(None, UnorderedOutput(expected_output),
+  svntest.actions.run_and_verify_svn(UnorderedOutput(expected_output),
                                      [], 'status', '--no-ignore')
 
   expected_output = [
         'D         dir1\n',
         'D         dir2\n',
   ]
-  svntest.actions.run_and_verify_svn(None, UnorderedOutput(expected_output),
+  svntest.actions.run_and_verify_svn(UnorderedOutput(expected_output),
                                      [], 'cleanup', '--remove-unversioned')
   expected_output = [
         ' M      .\n',
@@ -278,7 +278,7 @@ def cleanup_unversioned_items(sbox):
         'I       file_foo\n',
         'I       foo.o\n',
   ]
-  svntest.actions.run_and_verify_svn(None, UnorderedOutput(expected_output),
+  svntest.actions.run_and_verify_svn(UnorderedOutput(expected_output),
                                      [], 'status', '--no-ignore')
 
   # remove ignored items, with an empty global-ignores list
@@ -286,7 +286,7 @@ def cleanup_unversioned_items(sbox):
         'D         dir_foo\n',
         'D         file_foo\n',
   ]
-  svntest.actions.run_and_verify_svn(None, UnorderedOutput(expected_output),
+  svntest.actions.run_and_verify_svn(UnorderedOutput(expected_output),
                                      [], 'cleanup', '--remove-ignored',
                                      '--config-option',
                                      'config:miscellany:global-ignores=')
@@ -296,7 +296,7 @@ def cleanup_unversioned_items(sbox):
         ' M      .\n',
         'I       foo.o\n',
   ]
-  svntest.actions.run_and_verify_svn(None, UnorderedOutput(expected_output),
+  svntest.actions.run_and_verify_svn(UnorderedOutput(expected_output),
                                      [], 'status', '--no-ignore')
 
   # un-ignore the file matching global ignores, making it unversioned,
@@ -304,14 +304,14 @@ def cleanup_unversioned_items(sbox):
   expected_output = [
         'D         foo.o\n',
   ]
-  svntest.actions.run_and_verify_svn(None, UnorderedOutput(expected_output),
+  svntest.actions.run_and_verify_svn(UnorderedOutput(expected_output),
                                      [], 'cleanup', '--remove-unversioned',
                                      '--config-option',
                                      'config:miscellany:global-ignores=')
   expected_output = [
         ' M      .\n',
   ]
-  svntest.actions.run_and_verify_svn(None, expected_output,
+  svntest.actions.run_and_verify_svn(expected_output,
                                      [], 'status', '--no-ignore')
 
 def cleanup_unversioned_items_in_locked_wc(sbox):
@@ -324,7 +324,7 @@ def cleanup_unversioned_items_in_locked_
 
   svntest.actions.lock_admin_dir(sbox.ospath(""), True)
   for option in ['--remove-unversioned', '--remove-ignored']:
-    svntest.actions.run_and_verify_svn(None, None,
+    svntest.actions.run_and_verify_svn(None,
                                        "svn: E155004: Working copy locked;.*",
                                        "cleanup", option,
                                        sbox.ospath(""))
@@ -339,7 +339,7 @@ def cleanup_dir_external(sbox):
   sbox.simple_update()
 
   svntest.actions.lock_admin_dir(sbox.ospath("A_ext"), True)
-  svntest.actions.run_and_verify_svn(None, ["Performing cleanup on external " +
+  svntest.actions.run_and_verify_svn(["Performing cleanup on external " +
                                      "item at '%s'.\n" % sbox.ospath("A_ext")],
                                      [], "cleanup", '--include-externals',
                                      sbox.ospath(""))
@@ -357,7 +357,7 @@ def checkout_within_locked_wc(sbox):
   "A    %s\n" % sbox.ospath("nested-wc/beta"),
   "Checked out revision 1.\n"
   ]
-  svntest.actions.run_and_verify_svn(None, UnorderedOutput(expected_output),
+  svntest.actions.run_and_verify_svn(UnorderedOutput(expected_output),
                                      [], "checkout", sbox.repo_url + '/A/B/E',
                                      sbox.ospath("nested-wc"))
 

Modified: subversion/branches/fsx-1.10/subversion/tests/libsvn_fs/fs-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-1.10/subversion/tests/libsvn_fs/fs-test.c?rev=1659238&r1=1659237&r2=1659238&view=diff
==============================================================================
--- subversion/branches/fsx-1.10/subversion/tests/libsvn_fs/fs-test.c (original)
+++ subversion/branches/fsx-1.10/subversion/tests/libsvn_fs/fs-test.c Thu Feb 12 12:21:31 2015
@@ -6840,9 +6840,9 @@ static struct svn_test_descriptor_t test
                        "test svn_fs__compatible_version"),
     SVN_TEST_OPTS_PASS(dir_prop_merge,
                        "test merge directory properties"),
-    SVN_TEST_OPTS_WIMP(reopen_modify,
-                       "test reopen and modify txn",
-                       "txn_dir_cache fail in FSFS"),
+    SVN_TEST_OPTS_XFAIL_OTOH(reopen_modify,
+                             "test reopen and modify txn",
+                             SVN_TEST_PASS_IF_FS_TYPE_IS_NOT("fsfs")),
     SVN_TEST_OPTS_PASS(upgrade_while_committing,
                        "upgrade while committing"),
     SVN_TEST_OPTS_PASS(test_paths_changed,

Modified: subversion/branches/fsx-1.10/subversion/tests/libsvn_fs/locks-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-1.10/subversion/tests/libsvn_fs/locks-test.c?rev=1659238&r1=1659237&r2=1659238&view=diff
==============================================================================
--- subversion/branches/fsx-1.10/subversion/tests/libsvn_fs/locks-test.c (original)
+++ subversion/branches/fsx-1.10/subversion/tests/libsvn_fs/locks-test.c Thu Feb 12 12:21:31 2015
@@ -53,9 +53,19 @@ get_locks_callback(void *baton,
   struct get_locks_baton_t *b = baton;
   apr_pool_t *hash_pool = apr_hash_pool_get(b->locks);
   svn_string_t *lock_path = svn_string_create(lock->path, hash_pool);
-  apr_hash_set(b->locks, lock_path->data, lock_path->len,
-               svn_lock_dup(lock, hash_pool));
-  return SVN_NO_ERROR;
+
+  if (!apr_hash_get(b->locks, lock_path->data, lock_path->len))
+    {
+      apr_hash_set(b->locks, lock_path->data, lock_path->len,
+                   svn_lock_dup(lock, hash_pool));
+      return SVN_NO_ERROR; 
+    }
+  else
+    {
+      return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
+                               "Lock for path '%s' is being reported twice.",
+                               lock->path);
+    }
 }
 
 /* A factory function. */
@@ -1134,6 +1144,72 @@ obtain_write_lock_failure(const svn_test
   return SVN_NO_ERROR;
 }
 
+static svn_error_t *
+parent_and_child_lock(const svn_test_opts_t *opts,
+                      apr_pool_t *pool)
+{
+  svn_fs_t *fs;
+  svn_fs_access_t *access;
+  svn_fs_txn_t *txn;
+  svn_fs_root_t *root;
+  const char *conflict;
+  svn_revnum_t newrev;
+  svn_lock_t *lock;
+  struct get_locks_baton_t *get_locks_baton;
+  apr_size_t num_expected_paths;
+
+  SVN_ERR(svn_test__create_fs(&fs, "test-parent-and-child-lock", opts, pool));
+  SVN_ERR(svn_fs_create_access(&access, "bubba", pool));
+  SVN_ERR(svn_fs_set_access(fs, access));
+
+  /* Make a file '/A'. */
+  SVN_ERR(svn_fs_begin_txn(&txn, fs, 0, pool));
+  SVN_ERR(svn_fs_txn_root(&root, txn, pool));
+  SVN_ERR(svn_fs_make_file(root, "/A", pool));
+  SVN_ERR(svn_fs_commit_txn(&conflict, &newrev, txn, pool));
+
+  /* Obtain a lock on '/A'. */
+  SVN_ERR(svn_fs_lock(&lock, fs, "/A", NULL, NULL, FALSE, 0, newrev, FALSE,
+                      pool));
+
+  /* Add a lock token to FS access context. */
+  SVN_ERR(svn_fs_access_add_lock_token(access, lock->token));
+
+  /* Make some weird change: replace file '/A' by a directory with a
+     child.  Issue 2507 means that the result is that the directory /A
+     remains locked. */
+  SVN_ERR(svn_fs_begin_txn(&txn, fs, newrev, pool));
+  SVN_ERR(svn_fs_txn_root(&root, txn, pool));
+  SVN_ERR(svn_fs_delete(root, "/A", pool));
+  SVN_ERR(svn_fs_make_dir(root, "/A", pool));
+  SVN_ERR(svn_fs_make_file(root, "/A/b", pool));
+  SVN_ERR(svn_fs_commit_txn(&conflict, &newrev, txn, pool));
+
+  /* Obtain a lock on '/A/b'.  Issue 2507 means that the lock index
+     for / refers to both /A and /A/b, and that the lock index for /A
+     refers to /A/b. */
+  SVN_ERR(svn_fs_lock(&lock, fs, "/A/b", NULL, NULL, FALSE, 0, newrev, FALSE,
+                      pool));
+
+  /* Verify the locked paths. The lock for /A/b should not be reported
+     twice even though issue 2507 means we access the index for / and
+     the index for /A both of which refer to /A/b. */
+  {
+    static const char *expected_paths[] = {
+      "/A",
+      "/A/b",
+    };
+    num_expected_paths = sizeof(expected_paths) / sizeof(const char *);
+    get_locks_baton = make_get_locks_baton(pool);
+    SVN_ERR(svn_fs_get_locks(fs, "/", get_locks_callback,
+                             get_locks_baton, pool));
+    SVN_ERR(verify_matching_lock_paths(get_locks_baton, expected_paths,
+                                       num_expected_paths, pool));
+  }
+
+  return SVN_NO_ERROR;
+}
+
 /* ------------------------------------------------------------------------ */
 
 /* The test table.  */
@@ -1171,6 +1247,8 @@ static struct svn_test_descriptor_t test
                        "lock callback error"),
     SVN_TEST_OPTS_PASS(obtain_write_lock_failure,
                        "lock/unlock when 'write-lock' couldn't be obtained"),
+    SVN_TEST_OPTS_PASS(parent_and_child_lock,
+                       "lock parent and it's child"),
     SVN_TEST_NULL
   };
 

Modified: subversion/branches/fsx-1.10/subversion/tests/libsvn_ra/ra-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsx-1.10/subversion/tests/libsvn_ra/ra-test.c?rev=1659238&r1=1659237&r2=1659238&view=diff
==============================================================================
--- subversion/branches/fsx-1.10/subversion/tests/libsvn_ra/ra-test.c (original)
+++ subversion/branches/fsx-1.10/subversion/tests/libsvn_ra/ra-test.c Thu Feb 12 12:21:31 2015
@@ -41,8 +41,6 @@
 #include "../svn_test_fs.h"
 #include "../../libsvn_ra_local/ra_local.h"
 
-static const char tunnel_repos_name[] = "test-repo-tunnel";
-
 /*-------------------------------------------------------------------*/
 
 /** Helper routines. **/
@@ -136,18 +134,36 @@ commit_tree(svn_ra_session_t *session,
   return SVN_NO_ERROR;
 }
 
-static svn_boolean_t last_tunnel_check;
-static int tunnel_open_count;
-static void *check_tunnel_baton;
-static void *open_tunnel_context;
+/* Baton for opening tunnels */
+typedef struct tunnel_baton_t
+{
+  int magic; /* TUNNEL_MAGIC */
+  int open_count;
+  svn_boolean_t last_check;
+} tunnel_baton_t;
+
+#define TUNNEL_MAGIC 0xF00DF00F
+
+/* Baton for closing a specific tunnel */
+typedef struct close_baton_t
+{
+  int magic;
+  tunnel_baton_t *tb;
+  apr_proc_t *proc;
+} close_baton_t;
+
+#define CLOSE_MAGIC 0x1BADBAD1
 
 static svn_boolean_t
 check_tunnel(void *tunnel_baton, const char *tunnel_name)
 {
-  if (tunnel_baton != check_tunnel_baton)
+  tunnel_baton_t *b = tunnel_baton;
+
+  if (b->magic != TUNNEL_MAGIC)
     abort();
-  last_tunnel_check = (0 == strcmp(tunnel_name, "test"));
-  return last_tunnel_check;
+
+  b->last_check = (0 == strcmp(tunnel_name, "test"));
+  return b->last_check;
 }
 
 static void
@@ -168,8 +184,10 @@ open_tunnel(svn_stream_t **request, svn_
   apr_status_t status;
   const char *args[] = { "svnserve", "-t", "-r", ".", NULL };
   const char *svnserve;
+  tunnel_baton_t *b = tunnel_baton;
+  close_baton_t *cb;
 
-  SVN_TEST_ASSERT(tunnel_baton == check_tunnel_baton);
+  SVN_TEST_ASSERT(b->magic == TUNNEL_MAGIC);
 
   SVN_ERR(svn_dirent_get_absolute(&svnserve, "../../svnserve/svnserve", pool));
 #ifdef WIN32
@@ -193,11 +211,7 @@ open_tunnel(svn_stream_t **request, svn_
                              args, NULL, attr, pool);
   if (status != APR_SUCCESS)
     return svn_error_wrap_apr(status, "Could not run svnserve");
-#ifdef WIN32
   apr_pool_note_subprocess(pool, proc, APR_KILL_NEVER);
-#else
-  apr_pool_note_subprocess(pool, proc, APR_KILL_ONLY_ONCE);
-#endif
 
   /* APR pipe objects inherit by default.  But we don't want the
    * tunnel agent's pipes held open by future child processes
@@ -205,20 +219,42 @@ open_tunnel(svn_stream_t **request, svn_
   apr_file_inherit_unset(proc->in);
   apr_file_inherit_unset(proc->out);
 
+  cb = apr_pcalloc(pool, sizeof(*cb));
+  cb->magic = CLOSE_MAGIC;
+  cb->tb = b;
+  cb->proc = proc;
+
   *request = svn_stream_from_aprfile2(proc->in, FALSE, pool);
   *response = svn_stream_from_aprfile2(proc->out, FALSE, pool);
   *close_func = close_tunnel;
-  open_tunnel_context = *close_baton = &last_tunnel_check;
-  ++tunnel_open_count;
+  *close_baton = cb;
+  ++b->open_count;
   return SVN_NO_ERROR;
 }
 
 static void
 close_tunnel(void *tunnel_context, void *tunnel_baton)
 {
-  assert(tunnel_context == open_tunnel_context);
-  assert(tunnel_baton == check_tunnel_baton);
-  --tunnel_open_count;
+  close_baton_t *b = tunnel_context;
+
+  if (b->magic != CLOSE_MAGIC)
+    abort();
+  if (--b->tb->open_count == 0)
+    {
+      apr_status_t child_exit_status;
+      int child_exit_code;
+      apr_exit_why_e child_exit_why;
+
+      SVN_TEST_ASSERT_NO_RETURN(0 == apr_file_close(b->proc->in));
+      SVN_TEST_ASSERT_NO_RETURN(0 == apr_file_close(b->proc->out));
+
+      child_exit_status =
+        apr_proc_wait(b->proc, &child_exit_code, &child_exit_why, APR_WAIT);
+
+      SVN_TEST_ASSERT_NO_RETURN(child_exit_status == APR_CHILD_DONE);
+      SVN_TEST_ASSERT_NO_RETURN(child_exit_code == 0);
+      SVN_TEST_ASSERT_NO_RETURN(child_exit_why == APR_PROC_EXIT);
+    }
 }
 
 
@@ -293,6 +329,7 @@ static svn_error_t *
 check_tunnel_callback_test(const svn_test_opts_t *opts,
                            apr_pool_t *pool)
 {
+  tunnel_baton_t b = { TUNNEL_MAGIC };
   svn_ra_callbacks2_t *cbtable;
   svn_ra_session_t *session;
   svn_error_t *err;
@@ -300,7 +337,7 @@ check_tunnel_callback_test(const svn_tes
   SVN_ERR(svn_ra_create_callbacks(&cbtable, pool));
   cbtable->check_tunnel_func = check_tunnel;
   cbtable->open_tunnel_func = open_tunnel;
-  cbtable->tunnel_baton = check_tunnel_baton = &cbtable;
+  cbtable->tunnel_baton = &b;
   SVN_ERR(svn_cmdline_create_auth_baton(&cbtable->auth_baton,
                                         TRUE  /* non_interactive */,
                                         "jrandom", "rayjandom",
@@ -309,13 +346,12 @@ check_tunnel_callback_test(const svn_tes
                                         FALSE /* trust_server_cert */,
                                         NULL, NULL, NULL, pool));
 
-  last_tunnel_check = TRUE;
-  open_tunnel_context = NULL;
+  b.last_check = TRUE;
   err = svn_ra_open4(&session, NULL, "svn+foo://localhost/no-repo",
                      NULL, cbtable, NULL, NULL, pool);
   svn_error_clear(err);
   SVN_TEST_ASSERT(err);
-  SVN_TEST_ASSERT(!last_tunnel_check);
+  SVN_TEST_ASSERT(!b.last_check);
   return SVN_NO_ERROR;
 }
 
@@ -323,21 +359,26 @@ static svn_error_t *
 tunnel_callback_test(const svn_test_opts_t *opts,
                      apr_pool_t *pool)
 {
-  apr_pool_t *connection_pool;
-  svn_repos_t *repos;
+  tunnel_baton_t b = { TUNNEL_MAGIC };
+  apr_pool_t *scratch_pool = svn_pool_create(pool);
   const char *url;
   svn_ra_callbacks2_t *cbtable;
   svn_ra_session_t *session;
   svn_error_t *err;
+  const char tunnel_repos_name[] = "test-repo-tunnel";
+
+  SVN_ERR(svn_test__create_repos(NULL, tunnel_repos_name, opts, scratch_pool));
 
-  SVN_ERR(svn_test__create_repos(&repos, tunnel_repos_name, opts, pool));
+  /* Immediately close the repository to avoid race condition with svnserve
+     (and then the cleanup code) with BDB when our pool is cleared. */
+  svn_pool_clear(scratch_pool);
 
   url = apr_pstrcat(pool, "svn+test://localhost/", tunnel_repos_name,
                     SVN_VA_NULL);
   SVN_ERR(svn_ra_create_callbacks(&cbtable, pool));
   cbtable->check_tunnel_func = check_tunnel;
   cbtable->open_tunnel_func = open_tunnel;
-  cbtable->tunnel_baton = check_tunnel_baton = &cbtable;
+  cbtable->tunnel_baton = &b;
   SVN_ERR(svn_cmdline_create_auth_baton(&cbtable->auth_baton,
                                         TRUE  /* non_interactive */,
                                         "jrandom", "rayjandom",
@@ -346,12 +387,9 @@ tunnel_callback_test(const svn_test_opts
                                         FALSE /* trust_server_cert */,
                                         NULL, NULL, NULL, pool));
 
-  last_tunnel_check = FALSE;
-  open_tunnel_context = NULL;
-  tunnel_open_count = 0;
-  connection_pool = svn_pool_create(pool);
+  b.last_check = FALSE;
   err = svn_ra_open4(&session, NULL, url, NULL, cbtable, NULL, NULL,
-                     connection_pool);
+                     scratch_pool);
   if (err && err->apr_err == SVN_ERR_TEST_FAILED)
     {
       svn_handle_error2(err, stderr, FALSE, "svn_tests: ");
@@ -359,10 +397,10 @@ tunnel_callback_test(const svn_test_opts
       return SVN_NO_ERROR;
     }
   SVN_ERR(err);
-  SVN_TEST_ASSERT(last_tunnel_check);
-  SVN_TEST_ASSERT(tunnel_open_count > 0);
-  svn_pool_destroy(connection_pool);
-  SVN_TEST_ASSERT(tunnel_open_count == 0);
+  SVN_TEST_ASSERT(b.last_check);
+  SVN_TEST_ASSERT(b.open_count > 0);
+  svn_pool_destroy(scratch_pool);
+  SVN_TEST_ASSERT(b.open_count == 0);
   return SVN_NO_ERROR;
 }
 



Mime
View raw message