You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by pb...@apache.org on 2012/06/26 21:28:22 UTC

svn commit: r1354186 [32/33] - in /subversion/branches/inheritable-props: ./ build/ build/ac-macros/ build/generator/ build/generator/templates/ build/win32/ contrib/client-side/emacs/ contrib/server-side/ notes/ notes/api-errata/1.8/ notes/directory-i...

Modified: subversion/branches/inheritable-props/subversion/tests/cmdline/update_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/tests/cmdline/update_tests.py?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/tests/cmdline/update_tests.py (original)
+++ subversion/branches/inheritable-props/subversion/tests/cmdline/update_tests.py Tue Jun 26 19:26:49 2012
@@ -109,7 +109,7 @@ def update_binary_file(sbox):
   # Add a binary file to the project.
   theta_contents = open(os.path.join(sys.path[0], "theta.bin"), 'rb').read()
   # Write PNG file data into 'A/theta'.
-  theta_path = os.path.join(wc_dir, 'A', 'theta')
+  theta_path = sbox.ospath('A/theta')
   svntest.main.file_write(theta_path, theta_contents, 'wb')
 
   svntest.main.run_svn(None, 'add', theta_path)
@@ -226,9 +226,9 @@ def update_binary_file_2(sbox):
     zeta_contents = zeta_contents + zeta_contents
 
   # Write our two files' contents out to disk, in A/theta and A/zeta.
-  theta_path = os.path.join(wc_dir, 'A', 'theta')
+  theta_path = sbox.ospath('A/theta')
   svntest.main.file_write(theta_path, theta_contents, 'wb')
-  zeta_path = os.path.join(wc_dir, 'A', 'zeta')
+  zeta_path = sbox.ospath('A/zeta')
   svntest.main.file_write(zeta_path, zeta_contents, 'wb')
 
   # Now, `svn add' those two files.
@@ -310,7 +310,6 @@ def update_binary_file_2(sbox):
 
 #----------------------------------------------------------------------
 
-@XFail()
 @Issue(4128)
 def update_binary_file_3(sbox):
   "update locally modified file to equal versions"
@@ -322,7 +321,7 @@ def update_binary_file_3(sbox):
   theta_contents = open(os.path.join(sys.path[0], "theta.bin"), 'rb').read()
 
   # Write our files contents out to disk, in A/theta.
-  theta_path = os.path.join(wc_dir, 'A', 'theta')
+  theta_path = sbox.ospath('A/theta')
   svntest.main.file_write(theta_path, theta_contents, 'wb')
 
   # Now, `svn add' that file.
@@ -367,7 +366,7 @@ def update_binary_file_3(sbox):
 
   # Create expected output tree for an update to rev 2.
   expected_output = svntest.wc.State(wc_dir, {
-    'A/theta' : Item(status='  '),
+    'A/theta' : Item(status='G '),
     })
 
   # Create expected disk tree for the update
@@ -403,10 +402,10 @@ def update_missing(sbox):
   wc_dir = sbox.wc_dir
 
   # Remove some files and dirs from the working copy.
-  mu_path = os.path.join(wc_dir, 'A', 'mu')
-  rho_path = os.path.join(wc_dir, 'A', 'D', 'G', 'rho')
-  E_path = os.path.join(wc_dir, 'A', 'B', 'E')
-  H_path = os.path.join(wc_dir, 'A', 'D', 'H')
+  mu_path = sbox.ospath('A/mu')
+  rho_path = sbox.ospath('A/D/G/rho')
+  E_path = sbox.ospath('A/B/E')
+  H_path = sbox.ospath('A/D/H')
 
   # remove two files to verify that they get restored
   os.remove(mu_path)
@@ -460,18 +459,18 @@ def update_ignores_added(sbox):
   wc_dir = sbox.wc_dir
 
   # Commit something so there's actually a new revision to update to.
-  rho_path = os.path.join(wc_dir, 'A', 'D', 'G', 'rho')
+  rho_path = sbox.ospath('A/D/G/rho')
   svntest.main.file_append(rho_path, "More stuff in rho.\n")
   svntest.main.run_svn(None,
                        'ci', '-m', 'log msg', rho_path)
 
   # Create a new file, 'zeta', and schedule it for addition.
-  zeta_path = os.path.join(wc_dir, 'A', 'B', 'zeta')
+  zeta_path = sbox.ospath('A/B/zeta')
   svntest.main.file_append(zeta_path, "This is the file 'zeta'.\n")
   svntest.main.run_svn(None, 'add', zeta_path)
 
   # Schedule another file, say, 'gamma', for replacement.
-  gamma_path = os.path.join(wc_dir, 'A', 'D', 'gamma')
+  gamma_path = sbox.ospath('A/D/gamma')
   svntest.main.run_svn(None, 'delete', gamma_path)
   svntest.main.file_append(gamma_path, "This is a new 'gamma' now.\n")
   svntest.main.run_svn(None, 'add', gamma_path)
@@ -519,8 +518,8 @@ def update_to_rev_zero(sbox):
   sbox.build()
   wc_dir = sbox.wc_dir
 
-  iota_path = os.path.join(wc_dir, 'iota')
-  A_path = os.path.join(wc_dir, 'A')
+  iota_path = sbox.ospath('iota')
+  A_path = sbox.ospath('A')
 
   # Create expected output tree for an update to rev 0
   expected_output = svntest.wc.State(wc_dir, {
@@ -566,7 +565,7 @@ def receive_overlapping_same_change(sbox
   wc_dir = sbox.wc_dir
 
   # Modify iota.
-  iota_path = os.path.join(wc_dir, 'iota')
+  iota_path = sbox.ospath('iota')
   svntest.main.file_append(iota_path, "A change to iota.\n")
 
   # Duplicate locally modified wc, giving us the "other" wc.
@@ -619,8 +618,8 @@ def update_to_resolve_text_conflicts(sbo
   svntest.actions.duplicate_dir(wc_dir, wc_backup)
 
   # Make a couple of local mods to files which will be committed
-  mu_path = os.path.join(wc_dir, 'A', 'mu')
-  rho_path = os.path.join(wc_dir, 'A', 'D', 'G', 'rho')
+  mu_path = sbox.ospath('A/mu')
+  rho_path = sbox.ospath('A/D/G/rho')
   svntest.main.file_append(mu_path, 'Original appended text for mu\n')
   svntest.main.file_append(rho_path, 'Original appended text for rho\n')
   svntest.main.run_svn(None, 'propset', 'Kubla', 'Khan', rho_path)
@@ -729,12 +728,12 @@ def update_delete_modified_files(sbox):
   wc_dir = sbox.wc_dir
 
   # Delete a file
-  alpha_path = os.path.join(wc_dir, 'A', 'B', 'E', 'alpha')
+  alpha_path = sbox.ospath('A/B/E/alpha')
   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')
+  G_path = sbox.ospath('A/D/G')
   svntest.actions.run_and_verify_svn("Deleting G failed", None, [],
                                      'rm', G_path)
 
@@ -809,8 +808,8 @@ def update_after_add_rm_deleted(sbox):
   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')
+  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)
 
   # Commit deletion
@@ -886,7 +885,7 @@ def obstructed_update_alters_wc_props(sb
   # Create an obstruction, a file in the WC with the same name as
   # present in a newer rev of the repo.
   #print "Creating obstruction"
-  obstruction_parent_path = os.path.join(wc_dir, 'A')
+  obstruction_parent_path = sbox.ospath('A')
   obstruction_path = os.path.join(obstruction_parent_path, 'foo')
   svntest.main.file_append(obstruction_path, 'an obstruction')
 
@@ -952,7 +951,7 @@ def update_replace_dir(sbox):
   wc_dir = sbox.wc_dir
 
   # Delete a directory
-  F_path = os.path.join(wc_dir, 'A', 'B', 'F')
+  F_path = sbox.ospath('A/B/F')
   svntest.actions.run_and_verify_svn(None, None, [], 'rm', F_path)
 
   # Commit deletion
@@ -1025,7 +1024,7 @@ def update_single_file(sbox):
   expected_disk = svntest.main.greek_state.copy()
 
   # Make a local mod to a file which will be committed
-  mu_path = os.path.join(wc_dir, 'A', 'mu')
+  mu_path = sbox.ospath('A/mu')
   svntest.main.file_append(mu_path, '\nAppended text for mu')
 
   # Commit.
@@ -1041,7 +1040,7 @@ def update_single_file(sbox):
 
   # At one stage 'svn up file' failed with a parent lock error
   was_cwd = os.getcwd()
-  os.chdir(os.path.join(wc_dir, 'A'))
+  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, [],
@@ -1064,7 +1063,7 @@ def prop_update_on_scheduled_delete(sbox
   # Make the "other" working copy.
   svntest.actions.duplicate_dir(wc_dir, other_wc)
 
-  iota_path = os.path.join(wc_dir, 'iota')
+  iota_path = sbox.ospath('iota')
   other_iota_path = os.path.join(other_wc, 'iota')
 
   svntest.main.run_svn(None, 'propset', 'foo', 'bar', iota_path)
@@ -1149,8 +1148,8 @@ def update_deleted_missing_dir(sbox):
   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')
+  E_path = sbox.ospath('A/B/E')
+  H_path = sbox.ospath('A/D/H')
 
   # Create a new revision with directories deleted
   svntest.main.run_svn(None, 'rm', E_path)
@@ -1233,7 +1232,7 @@ def another_hudson_problem(sbox):
   wc_dir = sbox.wc_dir
 
   # Delete/commit gamma thus making it 'deleted'
-  gamma_path = os.path.join(wc_dir, 'A', 'D', 'gamma')
+  gamma_path = sbox.ospath('A/D/gamma')
   svntest.main.run_svn(None, 'rm', gamma_path)
 
   expected_output = svntest.wc.State(wc_dir, {
@@ -1255,7 +1254,7 @@ def another_hudson_problem(sbox):
                                      sbox.repo_url + '/A/D/G')
 
   # Remove corresponding tree from working copy
-  G_path = os.path.join(wc_dir, 'A', 'D', 'G')
+  G_path = sbox.ospath('A/D/G')
   svntest.main.safe_rmtree(G_path)
 
   # Update missing directory to receive the delete, this should mark G
@@ -1305,8 +1304,8 @@ def update_deleted_targets(sbox):
   wc_dir = sbox.wc_dir
 
   # Delete/commit thus creating 'deleted=true' entries
-  gamma_path = os.path.join(wc_dir, 'A', 'D', 'gamma')
-  F_path = os.path.join(wc_dir, 'A', 'B', 'F')
+  gamma_path = sbox.ospath('A/D/gamma')
+  F_path = sbox.ospath('A/B/F')
   svntest.main.run_svn(None, 'rm', gamma_path, F_path)
 
   expected_output = svntest.wc.State(wc_dir, {
@@ -1392,8 +1391,8 @@ def non_recursive_update(sbox):
   wc_dir = sbox.wc_dir
 
   # Commit a change to A/mu and A/D/G/rho
-  mu_path = os.path.join(wc_dir, 'A', 'mu')
-  rho_path = os.path.join(wc_dir, 'A', 'D', 'G', 'rho')
+  mu_path = sbox.ospath('A/mu')
+  rho_path = sbox.ospath('A/D/G/rho')
 
   svntest.main.file_append(mu_path, "new")
   svntest.main.file_append(rho_path, "new")
@@ -1426,7 +1425,7 @@ def non_recursive_update(sbox):
                                         '-r', '1', wc_dir)
 
   # Non-recursive update of A should change A/mu but not A/D/G/rho
-  A_path = os.path.join(wc_dir, 'A')
+  A_path = sbox.ospath('A')
 
   expected_output = svntest.wc.State(wc_dir, {
     'A/mu' : Item(status='U '),
@@ -1470,7 +1469,7 @@ def update_to_deletion(sbox):
   sbox.build()
   wc_dir = sbox.wc_dir
 
-  iota_path = os.path.join(wc_dir, 'iota')
+  iota_path = sbox.ospath('iota')
 
   # Update iota to rev 0, so it gets removed.
   expected_output = svntest.wc.State(wc_dir, {
@@ -1510,7 +1509,7 @@ def update_deletion_inside_out(sbox):
   sbox.build()
   wc_dir = sbox.wc_dir
 
-  parent_path = os.path.join(wc_dir, 'A', 'B')
+  parent_path = sbox.ospath('A/B')
   child_path = os.path.join(parent_path, 'E')  # Could be a file, doesn't matter
 
   # Delete the parent directory.
@@ -1553,7 +1552,7 @@ def update_schedule_add_dir(sbox):
   wc_dir = sbox.wc_dir
 
   # Delete directory A/D/G in the repository via immediate commit
-  G_path = os.path.join(wc_dir, 'A', 'D', 'G')
+  G_path = sbox.ospath('A/D/G')
   G_url = sbox.repo_url + '/A/D/G'
   svntest.actions.run_and_verify_svn(None, None, [],
                                      'rm', G_url, '-m', 'rev 2')
@@ -1576,7 +1575,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 = os.path.join(wc_dir, 'A', 'D')
+  D_path = sbox.ospath('A/D')
   svntest.actions.run_and_verify_svn("Copy error:", None, [],
                                      'cp', G_url + '@1', D_path)
 
@@ -1627,7 +1626,7 @@ def update_to_future_add(sbox):
                                         '-r', '0', wc_dir)
 
   # Update iota to the current HEAD.
-  iota_path = os.path.join(wc_dir, 'iota')
+  iota_path = sbox.ospath('iota')
 
   expected_output = svntest.wc.State(wc_dir, {
     'iota' : Item(status='A '),
@@ -1645,7 +1644,7 @@ def update_to_future_add(sbox):
                                         iota_path)
 
   # Now try updating the directory into the future
-  A_path = os.path.join(wc_dir, 'A')
+  A_path = sbox.ospath('A')
 
   expected_output = svntest.wc.State(wc_dir, {
     'A'              : Item(status='A '),
@@ -1690,7 +1689,7 @@ def nested_in_read_only(sbox):
     raise svntest.Skip('Unsupported in single-db')
 
   # Delete/commit a file
-  alpha_path = os.path.join(wc_dir, 'A', 'B', 'E', 'alpha')
+  alpha_path = sbox.ospath('A/B/E/alpha')
   svntest.actions.run_and_verify_svn(None, None, [], 'rm', alpha_path)
 
   expected_output = svntest.wc.State(wc_dir, {
@@ -1710,7 +1709,7 @@ def nested_in_read_only(sbox):
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
   # Delete/commit a directory that used to contain the deleted file
-  B_path = os.path.join(wc_dir, 'A', 'B')
+  B_path = sbox.ospath('A/B')
   svntest.actions.run_and_verify_svn(None, None, [], 'rm', B_path)
 
   expected_output = svntest.wc.State(wc_dir, {
@@ -1789,7 +1788,7 @@ def update_xml_unsafe_dir(sbox):
   svntest.actions.duplicate_dir(wc_dir, wc_backup)
 
   # Make a couple of local mods to files
-  test_path = os.path.join(wc_dir, ' foo & bar')
+  test_path = sbox.ospath(' foo & bar')
   svntest.main.run_svn(None, 'mkdir', test_path)
 
   # Created expected output tree for 'svn ci'
@@ -1838,7 +1837,7 @@ def conflict_markers_matching_eol(sbox):
   wc_dir = sbox.wc_dir
   filecount = 1
 
-  mu_path = os.path.join(wc_dir, 'A', 'mu')
+  mu_path = sbox.ospath('A/mu')
 
   if os.name == 'nt':
     crlf = '\n'
@@ -1969,7 +1968,7 @@ def update_eolstyle_handling(sbox):
   sbox.build()
   wc_dir = sbox.wc_dir
 
-  mu_path = os.path.join(wc_dir, 'A', 'mu')
+  mu_path = sbox.ospath('A/mu')
 
   if os.name == 'nt':
     crlf = '\n'
@@ -2067,8 +2066,8 @@ def update_copy_of_old_rev(sbox):
   sbox.build()
   wc_dir = sbox.wc_dir
 
-  dir = os.path.join(wc_dir, 'A')
-  dir2 = os.path.join(wc_dir, 'A2')
+  dir = sbox.ospath('A')
+  dir2 = sbox.ospath('A2')
   file = os.path.join(dir, 'mu')
   file2 = os.path.join(dir2, 'mu')
   url = sbox.repo_url + '/A/mu'
@@ -2115,21 +2114,21 @@ def forced_update(sbox):
   svntest.actions.duplicate_dir(wc_dir, wc_backup)
 
   # Make a couple of local mods to files
-  mu_path = os.path.join(wc_dir, 'A', 'mu')
-  rho_path = os.path.join(wc_dir, 'A', 'D', 'G', 'rho')
+  mu_path = sbox.ospath('A/mu')
+  rho_path = sbox.ospath('A/D/G/rho')
   svntest.main.file_append(mu_path, 'appended mu text')
   svntest.main.file_append(rho_path, 'new appended text for rho')
 
   # Add some files
-  nu_path = os.path.join(wc_dir, 'A', 'B', 'F', 'nu')
+  nu_path = sbox.ospath('A/B/F/nu')
   svntest.main.file_append(nu_path, "This is the file 'nu'\n")
   svntest.main.run_svn(None, 'add', nu_path)
-  kappa_path = os.path.join(wc_dir, 'kappa')
+  kappa_path = sbox.ospath('kappa')
   svntest.main.file_append(kappa_path, "This is the file 'kappa'\n")
   svntest.main.run_svn(None, 'add', kappa_path)
 
   # Add a dir with two files
-  I_path = os.path.join(wc_dir, 'A', 'C', 'I')
+  I_path = sbox.ospath('A/C/I')
   os.mkdir(I_path)
   svntest.main.run_svn(None, 'add', I_path)
   upsilon_path = os.path.join(I_path, 'upsilon')
@@ -2254,12 +2253,12 @@ def forced_update_failures(sbox):
   svntest.actions.duplicate_dir(wc_dir, wc_backup)
 
   # Add a file
-  nu_path = os.path.join(wc_dir, 'A', 'B', 'F', 'nu')
+  nu_path = sbox.ospath('A/B/F/nu')
   svntest.main.file_append(nu_path, "This is the file 'nu'\n")
   svntest.main.run_svn(None, 'add', nu_path)
 
   # Add a dir
-  I_path = os.path.join(wc_dir, 'A', 'C', 'I')
+  I_path = sbox.ospath('A/C/I')
   os.mkdir(I_path)
   svntest.main.run_svn(None, 'add', I_path)
 
@@ -2580,8 +2579,8 @@ def update_wc_with_replaced_file(sbox):
   svntest.actions.duplicate_dir(wc_dir, wc_backup)
 
   # we need a change in the repository
-  iota_path = os.path.join(wc_dir, 'iota')
-  mu_path = os.path.join(wc_dir, 'A', 'mu')
+  iota_path = sbox.ospath('iota')
+  mu_path = sbox.ospath('A/mu')
   iota_bu_path = os.path.join(wc_backup, 'iota')
   svntest.main.file_append(iota_bu_path, "New line in 'iota'\n")
   svntest.main.run_svn(None,
@@ -2710,17 +2709,17 @@ def update_with_obstructing_additions(sb
   #
   #  A/D/H/I/J/eta: Conflicts with the file scheduled for addition in
   #                 the backup WC.  No props.
-  upsilon_path = os.path.join(wc_dir, 'A', 'B', 'upsilon')
+  upsilon_path = sbox.ospath('A/B/upsilon')
   svntest.main.file_append(upsilon_path, "This is the file 'upsilon'\n")
-  nu_path = os.path.join(wc_dir, 'A', 'C', 'nu')
+  nu_path = sbox.ospath('A/C/nu')
   svntest.main.file_append(nu_path, "This is the file 'nu'\n")
-  kappa_path = os.path.join(wc_dir, 'A', 'D', 'kappa')
+  kappa_path = sbox.ospath('A/D/kappa')
   svntest.main.file_append(kappa_path, "This is REPOS file 'kappa'\n")
-  epsilon_path = os.path.join(wc_dir, 'A', 'D', 'epsilon')
+  epsilon_path = sbox.ospath('A/D/epsilon')
   svntest.main.file_append(epsilon_path, "This is REPOS file 'epsilon'\n")
-  zeta_path = os.path.join(wc_dir, 'A', 'D', 'zeta')
+  zeta_path = sbox.ospath('A/D/zeta')
   svntest.main.file_append(zeta_path, "This is the file 'zeta'\n")
-  I_path = os.path.join(wc_dir, 'A', 'D', 'H', 'I')
+  I_path = sbox.ospath('A/D/H/I')
   os.mkdir(I_path)
   J_path = os.path.join(I_path, 'J')
   os.mkdir(J_path)
@@ -2922,9 +2921,9 @@ def update_with_obstructing_additions(sb
 
   # WC to WC copy of A/D/H to A/M, M now scheduled for addition with
   # history in WC and pending addition from the repos.
-  H_path = os.path.join(wc_dir, 'A', 'D', 'H')
-  A_path = os.path.join(wc_dir, 'A')
-  M_path = os.path.join(wc_dir, 'A', 'M')
+  H_path = sbox.ospath('A/D/H')
+  A_path = sbox.ospath('A')
+  M_path = sbox.ospath('A/M')
 
   svntest.actions.run_and_verify_svn("Copy error:", None, [],
                                      'cp', H_path, M_path)
@@ -2938,8 +2937,8 @@ def update_with_obstructing_additions(sb
 
   # WC to WC copy of A/D/H/chi to omicron, omicron now scheduled for
   # addition with history in WC and pending addition from the repos.
-  chi_path = os.path.join(wc_dir, 'A', 'D', 'H', 'chi')
-  omicron_path = os.path.join(wc_dir, 'omicron')
+  chi_path = sbox.ospath('A/D/H/chi')
+  omicron_path = sbox.ospath('omicron')
 
   svntest.actions.run_and_verify_svn("Copy error:", None, [],
                                      'cp', chi_path,
@@ -3056,11 +3055,11 @@ def update_conflicted(sbox):
   "update conflicted files"
   sbox.build()
   wc_dir = sbox.wc_dir
-  iota_path = os.path.join(wc_dir, 'iota')
-  lambda_path = os.path.join(wc_dir, 'A', 'B', 'lambda')
-  mu_path = os.path.join(wc_dir, 'A', 'mu')
-  D_path = os.path.join(wc_dir, 'A', 'D')
-  pi_path = os.path.join(wc_dir, 'A', 'D', 'G', 'pi')
+  iota_path = sbox.ospath('iota')
+  lambda_path = sbox.ospath('A/B/lambda')
+  mu_path = sbox.ospath('A/mu')
+  D_path = sbox.ospath('A/D')
+  pi_path = sbox.ospath('A/D/G/pi')
 
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
 
@@ -3224,20 +3223,20 @@ def mergeinfo_update_elision(sbox):
   wc_dir = sbox.wc_dir
 
   # Some paths we'll care about
-  alpha_COPY_path = os.path.join(wc_dir, "A", "B_COPY", "E", "alpha")
-  alpha_path  = os.path.join(wc_dir, "A", "B", "E", "alpha")
-  B_COPY_path = os.path.join(wc_dir, "A", "B_COPY")
-  E_COPY_path = os.path.join(wc_dir, "A", "B_COPY", "E")
-  beta_path   = os.path.join(wc_dir, "A", "B", "E", "beta")
-  lambda_path = os.path.join(wc_dir, "A", "B", "lambda")
+  alpha_COPY_path = sbox.ospath('A/B_COPY/E/alpha')
+  alpha_path  = sbox.ospath('A/B/E/alpha')
+  B_COPY_path = sbox.ospath('A/B_COPY')
+  E_COPY_path = sbox.ospath('A/B_COPY/E')
+  beta_path   = sbox.ospath('A/B/E/beta')
+  lambda_path = sbox.ospath('A/B/lambda')
 
   # Make a branch A/B_COPY
   expected_stdout =  verify.UnorderedOutput([
-     "A    " + os.path.join(wc_dir, "A", "B_COPY", "lambda") + "\n",
-     "A    " + os.path.join(wc_dir, "A", "B_COPY", "E") + "\n",
-     "A    " + os.path.join(wc_dir, "A", "B_COPY", "E", "alpha") + "\n",
-     "A    " + os.path.join(wc_dir, "A", "B_COPY", "E", "beta") + "\n",
-     "A    " + os.path.join(wc_dir, "A", "B_COPY", "F") + "\n",
+     "A    " + sbox.ospath('A/B_COPY/lambda') + "\n",
+     "A    " + sbox.ospath('A/B_COPY/E') + "\n",
+     "A    " + sbox.ospath('A/B_COPY/E/alpha') + "\n",
+     "A    " + sbox.ospath('A/B_COPY/E/beta') + "\n",
+     "A    " + sbox.ospath('A/B_COPY/F') + "\n",
      "Checked out revision 1.\n",
      "A         " + B_COPY_path + "\n",
     ])
@@ -3725,8 +3724,8 @@ def update_copied_and_deleted_prop(sbox)
 
   sbox.build()
   wc_dir = sbox.wc_dir
-  iota_path = os.path.join(wc_dir, 'iota')
-  iota2_path = os.path.join(wc_dir, 'iota2')
+  iota_path = sbox.ospath('iota')
+  iota2_path = sbox.ospath('iota2')
 
   # Add a property on iota
   svntest.actions.run_and_verify_svn(None, None, [],
@@ -3819,13 +3818,13 @@ def update_accept_conflicts(sbox):
   svntest.actions.duplicate_dir(wc_dir, wc_backup)
 
   # Make a few local mods to files which will be committed
-  iota_path = os.path.join(wc_dir, 'iota')
-  lambda_path = os.path.join(wc_dir, 'A', 'B', 'lambda')
-  mu_path = os.path.join(wc_dir, 'A', 'mu')
-  alpha_path = os.path.join(wc_dir, 'A', 'B', 'E', 'alpha')
-  beta_path = os.path.join(wc_dir, 'A', 'B', 'E', 'beta')
-  pi_path = os.path.join(wc_dir, 'A', 'D', 'G', 'pi')
-  rho_path = os.path.join(wc_dir, 'A', 'D', 'G', 'rho')
+  iota_path = sbox.ospath('iota')
+  lambda_path = sbox.ospath('A/B/lambda')
+  mu_path = sbox.ospath('A/mu')
+  alpha_path = sbox.ospath('A/B/E/alpha')
+  beta_path = sbox.ospath('A/B/E/beta')
+  pi_path = sbox.ospath('A/D/G/pi')
+  rho_path = sbox.ospath('A/D/G/rho')
   svntest.main.file_append(lambda_path, 'Their appended text for lambda\n')
   svntest.main.file_append(iota_path, 'Their appended text for iota\n')
   svntest.main.file_append(mu_path, 'Their appended text for mu\n')
@@ -3915,8 +3914,12 @@ def update_accept_conflicts(sbox):
   # Accept the pre-update base file.
   svntest.actions.run_and_verify_svn(None,
                                      ["Updating '%s':\n" % (mu_path_backup),
-                                      'G    %s\n' % (mu_path_backup,),
-                                      'Updated to revision 2.\n'],
+                                      'C    %s\n' % (mu_path_backup,),
+                                      'Updated to revision 2.\n',
+                                      "Resolved conflicted state of '%s'\n"
+                                        % (mu_path_backup),
+                                      'Summary of conflicts:\n',
+                                      '  Text conflicts: 1\n'],
                                      [],
                                      'update', '--accept=base',
                                      mu_path_backup)
@@ -3925,8 +3928,12 @@ def update_accept_conflicts(sbox):
   # Accept the user's working file.
   svntest.actions.run_and_verify_svn(None,
                                      ["Updating '%s':\n" % (alpha_path_backup),
-                                      'G    %s\n' % (alpha_path_backup,),
-                                      'Updated to revision 2.\n'],
+                                      'C    %s\n' % (alpha_path_backup,),
+                                      'Updated to revision 2.\n',
+                                      "Resolved conflicted state of '%s'\n"
+                                        % (alpha_path_backup),
+                                      'Summary of conflicts:\n',
+                                      '  Text conflicts: 1\n'],
                                      [],
                                      'update', '--accept=mine-full',
                                      alpha_path_backup)
@@ -3935,8 +3942,12 @@ def update_accept_conflicts(sbox):
   # Accept their file.
   svntest.actions.run_and_verify_svn(None,
                                      ["Updating '%s':\n" % (beta_path_backup),
-                                      'G    %s\n' % (beta_path_backup,),
-                                      'Updated to revision 2.\n'],
+                                      'C    %s\n' % (beta_path_backup,),
+                                      'Updated to revision 2.\n',
+                                      "Resolved conflicted state of '%s'\n"
+                                        % (beta_path_backup),
+                                      'Summary of conflicts:\n',
+                                      '  Text conflicts: 1\n'],
                                      [],
                                      'update', '--accept=theirs-full',
                                      beta_path_backup)
@@ -3947,8 +3958,12 @@ def update_accept_conflicts(sbox):
   # svn to exit with an exit code of 0.
   svntest.actions.run_and_verify_svn2(None,
                                       ["Updating '%s':\n" % (pi_path_backup),
-                                       'G    %s\n' % (pi_path_backup,),
-                                       'Updated to revision 2.\n'],
+                                       'C    %s\n' % (pi_path_backup,),
+                                       'Updated to revision 2.\n',
+                                      "Resolved conflicted state of '%s'\n"
+                                        % (pi_path_backup),
+                                      'Summary of conflicts:\n',
+                                      '  Text conflicts: 1\n'],
                                       "system(.*) returned.*", 0,
                                       'update', '--accept=edit',
                                       pi_path_backup)
@@ -4057,7 +4072,7 @@ interactive-conflicts = true
   config_dir = os.path.join(tmp_dir, 'interactive-conflicts-config')
   svntest.main.create_config_dir(config_dir, config_contents)
 
-  iota_path = os.path.join(wc_dir, 'iota')
+  iota_path = sbox.ospath('iota')
 
   # Modify iota and commit for r2.
   svntest.main.file_append(iota_path, "Appended text in r2.\n")
@@ -4096,14 +4111,27 @@ interactive-conflicts = true
                                         wc_dir, '--config-dir', config_dir)
 
   # Now update -r1 again.  Hopefully we don't get a checksum error!
-  expected_output = svntest.wc.State(wc_dir, {})
+  expected_output = svntest.wc.State(wc_dir, {
+    'iota': Item(verb="Skipped"),
+  })
+
+  # The interactive callback aborts, so the file remains in conflict.
+  expected_disk.tweak('iota', contents="This is the file 'iota'.\n"
+                                        "<<<<<<< .mine\n"
+                                        "Local mods to r1 text.\n"
+                                        "=======\n"
+                                        "Appended text in r2.\n"
+                                        ">>>>>>> .r2\n"),
+  expected_disk.add({
+    'iota.r1'   : Item(contents="This is the file 'iota'.\n"),
+    'iota.r2'   : Item(contents="This is the file 'iota'.\n"
+                                 "Appended text in r2.\n"),
+    'iota.mine' : Item(contents="This is the file 'iota'.\n"
+                                "Local mods to r1 text.\n"),
+  })
 
-  # note: it's possible that the correct disk here should be the
-  # merged file?
-  expected_disk.tweak('iota', contents=("This is the file 'iota'.\n"
-                                        "Local mods to r1 text.\n"))
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
-  expected_status.tweak('iota', status='M ')
+  expected_status.tweak('iota', status='C ', wc_rev=2)
 
   svntest.actions.run_and_verify_update(wc_dir,
                                         expected_output,
@@ -4155,7 +4183,7 @@ def restarted_update_should_delete_dir_p
   sbox.build()
   wc_dir = sbox.wc_dir
 
-  A_path = os.path.join(wc_dir, 'A')
+  A_path = sbox.ospath('A')
   zeta_path = os.path.join(A_path, 'zeta')
 
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
@@ -4846,7 +4874,7 @@ def tree_conflict_uc1_update_deleted_tre
   ]]]
   """
 
-  A = os.path.join(wc_dir, 'A')
+  A = sbox.ospath('A')
 
   def modify_dir(dir):
     """Make some set of local modifications to an existing tree:
@@ -5079,9 +5107,9 @@ def set_deep_depth_on_target_with_shallo
   wc_dir = sbox.wc_dir
 
   # Some paths we'll care about
-  A_path = os.path.join(wc_dir, "A")
-  B_path = os.path.join(wc_dir, "A", "B")
-  D_path = os.path.join(wc_dir, "A", "D")
+  A_path = sbox.ospath('A')
+  B_path = sbox.ospath('A/B')
+  D_path = sbox.ospath('A/D')
 
   # Trim the tree: Set A/B to depth empty and A/D to depth immediates.
   expected_output = svntest.wc.State(wc_dir, {
@@ -5273,8 +5301,8 @@ def mergeinfo_updates_merge_with_local_m
   expected_disk, expected_status = set_up_branch(sbox)
 
   # Some paths we'll care about
-  A_path      = os.path.join(wc_dir, "A")
-  A_COPY_path = os.path.join(wc_dir, "A_COPY")
+  A_path      = sbox.ospath('A')
+  A_COPY_path = sbox.ospath('A_COPY')
 
   # Merge -c3 from A to A_COPY at --depth empty, commit as r7.
   ###
@@ -5326,7 +5354,7 @@ def update_with_excluded_subdir(sbox):
 
   wc_dir = sbox.wc_dir
 
-  G = os.path.join(os.path.join(wc_dir, 'A', 'D', 'G'))
+  G = os.path.join(sbox.ospath('A/D/G'))
 
   # Make the directory 'G' excluded.
   expected_output = svntest.wc.State(wc_dir, {
@@ -5364,7 +5392,7 @@ def update_with_file_lock_and_keywords_p
 
   wc_dir = sbox.wc_dir
 
-  mu_path = os.path.join(wc_dir, 'A', 'mu')
+  mu_path = sbox.ospath('A/mu')
   svntest.main.file_append(mu_path, '$Id$')
   svntest.main.run_svn(None, 'ps', 'svn:keywords', 'Id', mu_path)
   svntest.main.run_svn(None, 'lock', mu_path)
@@ -5793,6 +5821,62 @@ def update_nested_move_text_mod(sbox):
                                         None, None, None,
                                         None, None, 1)
 
+def update_with_parents_and_exclude(sbox):
+  "bring a subtree in over an excluded path"
+
+  sbox.build(read_only = True)
+  wc_dir = sbox.wc_dir
+
+  # Now we are going to exclude A
+  expected_output = svntest.wc.State(wc_dir, {
+    'A' : Item(status='D '),
+  })
+
+  expected_status = svntest.wc.State(wc_dir, {
+    ''     : Item(status='  ', wc_rev='1'),
+    'iota' : Item(status='  ', wc_rev='1'),
+  })
+
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output,
+                                        None,
+                                        expected_status,
+                                        None, None, None,
+                                        None, None, False,
+                                        '--set-depth', 'exclude',
+                                        sbox.ospath('A'))
+
+  expected_output = svntest.wc.State(wc_dir, {
+    'A'                 : Item(status='A '),
+    'A/B'               : Item(status='A '),
+    'A/B/F'             : Item(status='A '),
+    'A/B/E'             : Item(status='A '),
+    'A/B/E/beta'        : Item(status='A '),
+    'A/B/E/alpha'       : Item(status='A '),
+    'A/B/lambda'        : Item(status='A '),
+  })
+
+  expected_status = svntest.wc.State(wc_dir, {
+    ''                  : Item(status='  ', wc_rev='1'),
+    'A'                 : Item(status='  ', wc_rev='1'),
+    'A/B'               : Item(status='  ', wc_rev='1'),
+    'A/B/F'             : Item(status='  ', wc_rev='1'),
+    'A/B/E'             : Item(status='  ', wc_rev='1'),
+    'A/B/E/beta'        : Item(status='  ', wc_rev='1'),
+    'A/B/E/alpha'       : Item(status='  ', wc_rev='1'),
+    'A/B/lambda'        : Item(status='  ', wc_rev='1'),
+    'iota'              : Item(status='  ', wc_rev='1'),
+  })
+
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output,
+                                        None,
+                                        expected_status,
+                                        None, None, None,
+                                        None, None, False,
+                                        '--parents',
+                                        sbox.ospath('A/B'))
+
 
 #######################################################################
 # Run the tests
@@ -5868,6 +5952,7 @@ test_list = [ None,
               update_binary_file_3,
               update_move_text_mod,
               update_nested_move_text_mod,
+              update_with_parents_and_exclude,
              ]
 
 if __name__ == '__main__':

Modified: subversion/branches/inheritable-props/subversion/tests/libsvn_client/client-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/tests/libsvn_client/client-test.c?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/tests/libsvn_client/client-test.c (original)
+++ subversion/branches/inheritable-props/subversion/tests/libsvn_client/client-test.c Tue Jun 26 19:26:49 2012
@@ -689,7 +689,7 @@ test_youngest_common_ancestor(const svn_
               repos_url, repos_uuid, 2, "iota", pool),
             svn_client__pathrev_create_with_relpath(
               repos_url, repos_uuid, 2, "A/iota", pool),
-            ctx, pool, pool));
+            NULL, ctx, pool, pool));
   SVN_TEST_STRING_ASSERT(svn_client__pathrev_relpath(yc_ancestor, pool),
                          "iota");
   SVN_TEST_ASSERT(yc_ancestor->rev == 1);
@@ -713,7 +713,7 @@ test_youngest_common_ancestor(const svn_
               repos_url, repos_uuid, 0, "", pool),
             svn_client__pathrev_create_with_relpath(
               repos_url, repos_uuid, 3, "A/ROOT", pool),
-            ctx, pool, pool));
+            NULL, ctx, pool, pool));
   SVN_TEST_STRING_ASSERT(svn_client__pathrev_relpath(yc_ancestor, pool), "");
   SVN_TEST_ASSERT(yc_ancestor->rev == 0);
 

Modified: subversion/branches/inheritable-props/subversion/tests/libsvn_delta/random-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/tests/libsvn_delta/random-test.c?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/tests/libsvn_delta/random-test.c (original)
+++ subversion/branches/inheritable-props/subversion/tests/libsvn_delta/random-test.c Tue Jun 26 19:26:49 2012
@@ -189,7 +189,7 @@ generate_random_file(apr_uint32_t maxlen
         {
           const int ch = (random_bytes
                           ? (unsigned)random_bytes[r % bytes_range]
-                          : r % bytes_range);
+                          : (int)(r % bytes_range));
           if (buf == end)
             {
               apr_size_t ignore_length;
@@ -198,7 +198,7 @@ generate_random_file(apr_uint32_t maxlen
               buf = file_buffer;
             }
 
-          *buf++ = ch;
+          *buf++ = (char)ch;
           r = r * 1103515245 + 12345;
         }
     }
@@ -336,10 +336,11 @@ random_test(apr_pool_t *pool)
                               delta_pool);
 
       /* Make stage 1: create the text delta.  */
-      svn_txdelta(&txdelta_stream,
-                  svn_stream_from_aprfile(source, delta_pool),
-                  svn_stream_from_aprfile(target, delta_pool),
-                  delta_pool);
+      svn_txdelta2(&txdelta_stream,
+                   svn_stream_from_aprfile(source, delta_pool),
+                   svn_stream_from_aprfile(target, delta_pool),
+                   FALSE,
+                   delta_pool);
 
       SVN_ERR(svn_txdelta_send_txstream(txdelta_stream,
                                         handler,
@@ -421,15 +422,17 @@ do_random_combine_test(apr_pool_t *pool,
 
       /* Make stage 1: create the text deltas.  */
 
-      svn_txdelta(&txdelta_stream_A,
-                  svn_stream_from_aprfile(source, delta_pool),
-                  svn_stream_from_aprfile(middle, delta_pool),
-                  delta_pool);
-
-      svn_txdelta(&txdelta_stream_B,
-                  svn_stream_from_aprfile(middle_copy, delta_pool),
-                  svn_stream_from_aprfile(target, delta_pool),
-                  delta_pool);
+      svn_txdelta2(&txdelta_stream_A,
+                   svn_stream_from_aprfile(source, delta_pool),
+                   svn_stream_from_aprfile(middle, delta_pool),
+                   FALSE,
+                   delta_pool);
+
+      svn_txdelta2(&txdelta_stream_B,
+                   svn_stream_from_aprfile(middle_copy, delta_pool),
+                   svn_stream_from_aprfile(target, delta_pool),
+                   FALSE,
+                   delta_pool);
 
       {
         svn_txdelta_window_t *window_A;

Modified: subversion/branches/inheritable-props/subversion/tests/libsvn_delta/svndiff-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/tests/libsvn_delta/svndiff-test.c?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/tests/libsvn_delta/svndiff-test.c (original)
+++ subversion/branches/inheritable-props/subversion/tests/libsvn_delta/svndiff-test.c Tue Jun 26 19:26:49 2012
@@ -75,10 +75,11 @@ main(int argc, char **argv)
   if (argc == 4)
     version = atoi(argv[3]);
 
-  svn_txdelta(&txdelta_stream,
-              svn_stream_from_aprfile(source_file, pool),
-              svn_stream_from_aprfile(target_file, pool),
-              pool);
+  svn_txdelta2(&txdelta_stream,
+               svn_stream_from_aprfile(source_file, pool),
+               svn_stream_from_aprfile(target_file, pool),
+               FALSE,
+               pool);
 
   err = svn_stream_for_stdout(&stdout_stream, pool);
   if (err)

Modified: subversion/branches/inheritable-props/subversion/tests/libsvn_delta/vdelta-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/tests/libsvn_delta/vdelta-test.c?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/tests/libsvn_delta/vdelta-test.c (original)
+++ subversion/branches/inheritable-props/subversion/tests/libsvn_delta/vdelta-test.c Tue Jun 26 19:26:49 2012
@@ -28,6 +28,7 @@
 
 #include "../svn_test.h"
 
+#include "svn_ctype.h"
 #include "svn_delta.h"
 #include "svn_error.h"
 #include "svn_pools.h"
@@ -59,10 +60,11 @@ do_one_diff(apr_file_t *source_file, apr
 
   *count = 0;
   *len = 0;
-  svn_txdelta(&delta_stream,
-              svn_stream_from_aprfile(source_file, fpool),
-              svn_stream_from_aprfile(target_file, fpool),
-              fpool);
+  svn_txdelta2(&delta_stream,
+               svn_stream_from_aprfile(source_file, fpool),
+               svn_stream_from_aprfile(target_file, fpool),
+               FALSE,
+               fpool);
   do {
     svn_error_t *err;
     err = svn_txdelta_next_window(&delta_window, delta_stream, wpool);
@@ -82,75 +84,17 @@ do_one_diff(apr_file_t *source_file, apr
 }
 
 
-static apr_file_t *
-open_binary_read(const char *path, apr_pool_t *pool)
-{
-  apr_status_t apr_err;
-  apr_file_t *fp;
-
-  apr_err = apr_file_open(&fp, path, (APR_READ | APR_BINARY),
-                          APR_OS_DEFAULT, pool);
-
-  if (apr_err)
-    {
-      fprintf(stderr, "unable to open \"%s\" for reading\n", path);
-      exit(1);
-    }
-
-  return fp;
-}
-
-
-int
-main(int argc, char **argv)
+static void
+do_one_test_cycle(apr_file_t *source_file_A, apr_file_t *target_file_A,
+                  apr_file_t *source_file_B, apr_file_t *target_file_B,
+                  int quiet, apr_pool_t *pool)
 {
-  apr_file_t *source_file_A = NULL;
-  apr_file_t *target_file_A = NULL;
   int count_A = 0;
   apr_off_t len_A = 0;
 
-  apr_file_t *source_file_B = NULL;
-  apr_file_t *target_file_B = NULL;
   int count_B = 0;
   apr_off_t len_B = 0;
 
-  apr_pool_t *pool;
-  int quiet = 0;
-
-  if (argc > 1 && argv[1][0] == '-' && argv[1][1] == 'q')
-    {
-      quiet = 1;
-      --argc; ++argv;
-    }
-
-  apr_initialize();
-  pool = svn_pool_create(NULL);
-
-  if (argc == 2)
-    {
-      target_file_A = open_binary_read(argv[1], pool);
-    }
-  else if (argc == 3)
-    {
-      source_file_A = open_binary_read(argv[1], pool);
-      target_file_A = open_binary_read(argv[2], pool);
-    }
-  else if (argc == 4)
-    {
-      source_file_A = open_binary_read(argv[1], pool);
-      target_file_A = open_binary_read(argv[2], pool);
-      source_file_B = open_binary_read(argv[2], pool);
-      target_file_B = open_binary_read(argv[3], pool);
-    }
-  else
-    {
-      fprintf(stderr,
-              "Usage: vdelta-test [-q] <target>\n"
-              "   or: vdelta-test [-q] <source> <target>\n"
-              "   or: vdelta-test [-q] <source> <intermediate> <target>\n");
-      exit(1);
-    }
-
   do_one_diff(source_file_A, target_file_A,
               &count_A, &len_A, quiet, pool, "A ", stdout);
 
@@ -181,14 +125,16 @@ main(int argc, char **argv)
         apr_file_seek(target_file_B, APR_SET, &offset);
       }
 
-      svn_txdelta(&stream_A,
-                  svn_stream_from_aprfile(source_file_A, fpool),
-                  svn_stream_from_aprfile(target_file_A, fpool),
-                  fpool);
-      svn_txdelta(&stream_B,
-                  svn_stream_from_aprfile(source_file_B, fpool),
-                  svn_stream_from_aprfile(target_file_B, fpool),
-                  fpool);
+      svn_txdelta2(&stream_A,
+                   svn_stream_from_aprfile(source_file_A, fpool),
+                   svn_stream_from_aprfile(target_file_A, fpool),
+                   FALSE,
+                   fpool);
+      svn_txdelta2(&stream_B,
+                   svn_stream_from_aprfile(source_file_B, fpool),
+                   svn_stream_from_aprfile(target_file_B, fpool),
+                   FALSE,
+                   fpool);
 
       for (count_AB = 0; count_AB < count_B; ++count_AB)
         {
@@ -219,6 +165,98 @@ main(int argc, char **argv)
       fprintf(stdout, "AB: (LENGTH %" APR_OFF_T_FMT " +%d)\n",
               len_AB, count_AB);
     }
+}
+
+
+static apr_file_t *
+open_binary_read(const char *path, apr_pool_t *pool)
+{
+  apr_status_t apr_err;
+  apr_file_t *fp;
+
+  apr_err = apr_file_open(&fp, path, (APR_READ | APR_BINARY),
+                          APR_OS_DEFAULT, pool);
+
+  if (apr_err)
+    {
+      fprintf(stderr, "unable to open \"%s\" for reading\n", path);
+      exit(1);
+    }
+
+  return fp;
+}
+
+
+int
+main(int argc, char **argv)
+{
+  apr_file_t *source_file_A = NULL;
+  apr_file_t *target_file_A = NULL;
+
+  apr_file_t *source_file_B = NULL;
+  apr_file_t *target_file_B = NULL;
+
+  apr_pool_t *pool;
+  int quiet = 0;
+  int repeat = 1;
+
+  while (argc > 1)
+    {
+      const char *const arg = argv[1];
+      if (arg[0] != '-')
+        break;
+
+      if (arg[1] == 'q')
+        quiet = 1;
+      else if (svn_ctype_isdigit(arg[1]))
+        repeat = atoi(arg + 1);
+      else
+        break;
+      --argc; ++argv;
+    }
+
+  apr_initialize();
+  pool = svn_pool_create(NULL);
+
+  if (argc == 2)
+    {
+      target_file_A = open_binary_read(argv[1], pool);
+    }
+  else if (argc == 3)
+    {
+      source_file_A = open_binary_read(argv[1], pool);
+      target_file_A = open_binary_read(argv[2], pool);
+    }
+  else if (argc == 4)
+    {
+      source_file_A = open_binary_read(argv[1], pool);
+      target_file_A = open_binary_read(argv[2], pool);
+      source_file_B = open_binary_read(argv[2], pool);
+      target_file_B = open_binary_read(argv[3], pool);
+    }
+  else
+    {
+      fprintf(stderr,
+              "Usage: vdelta-test [-q] [-<repeat>] <target>\n"
+              "   or: vdelta-test [-q] [-<repeat>] <source> <target>\n"
+              "   or: vdelta-test [-q] [-<repeat>] "
+              "<source> <intermediate> <target>\n");
+      exit(1);
+    }
+
+  while (0 < repeat--)
+    {
+      apr_off_t offset = 0;
+
+      do_one_test_cycle(source_file_A, target_file_A,
+                        source_file_B, target_file_B,
+                        quiet, pool);
+
+      if (source_file_A) apr_file_seek(source_file_A, APR_SET, &offset);
+      if (target_file_A) apr_file_seek(target_file_A, APR_SET, &offset);
+      if (source_file_B) apr_file_seek(source_file_B, APR_SET, &offset);
+      if (target_file_B) apr_file_seek(target_file_B, APR_SET, &offset);
+    }
 
   if (source_file_A) apr_file_close(source_file_A);
   if (target_file_A) apr_file_close(target_file_A);

Modified: subversion/branches/inheritable-props/subversion/tests/libsvn_delta/window-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/tests/libsvn_delta/window-test.c?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/tests/libsvn_delta/window-test.c (original)
+++ subversion/branches/inheritable-props/subversion/tests/libsvn_delta/window-test.c Tue Jun 26 19:26:49 2012
@@ -70,7 +70,7 @@ stream_window_test(apr_pool_t *pool)
   target_str.len = 109000;
   target_stream = svn_stream_from_string(&target_str, pool);
 
-  svn_txdelta(&txstream, source_stream, target_stream, pool);
+  svn_txdelta2(&txstream, source_stream, target_stream, TRUE, pool);
 
   while (1)
     {

Modified: subversion/branches/inheritable-props/subversion/tests/libsvn_repos/repos-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/tests/libsvn_repos/repos-test.c?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/tests/libsvn_repos/repos-test.c (original)
+++ subversion/branches/inheritable-props/subversion/tests/libsvn_repos/repos-test.c Tue Jun 26 19:26:49 2012
@@ -2256,7 +2256,7 @@ prop_validation(const svn_test_opts_t *o
 {
   svn_error_t *err;
   svn_repos_t *repos;
-  const char non_utf8_string[5] = { 'a', 0xff, 'b', '\n', 0 };
+  const char non_utf8_string[5] = { 'a', (char)0xff, 'b', '\n', 0 };
   const char *non_lf_string = "a\r\nb\n\rc\rd\n";
   apr_pool_t *subpool = svn_pool_create(pool);
 

Modified: subversion/branches/inheritable-props/subversion/tests/libsvn_subr/dirent_uri-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/tests/libsvn_subr/dirent_uri-test.c?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/tests/libsvn_subr/dirent_uri-test.c (original)
+++ subversion/branches/inheritable-props/subversion/tests/libsvn_subr/dirent_uri-test.c Tue Jun 26 19:26:49 2012
@@ -882,6 +882,8 @@ static const testcase_canonicalize_t uri
     { "https://SERVER:80/",    "https://server:80" },
     { "svn://server:80",       "svn://server:80" },
     { "svn://SERVER:443/",     "svn://server:443" },
+    { "file:///C%7C/temp/REPOS", "file:///C%7C/temp/REPOS" },
+    { "file:///C|/temp/REPOS", "file:///C%7C/temp/REPOS" },
 #ifdef SVN_USE_DOS_PATHS
     { "file:///c:/temp/repos", "file:///C:/temp/repos" },
     { "file:///c:/temp/REPOS", "file:///C:/temp/REPOS" },
@@ -2017,15 +2019,34 @@ test_dirent_condense_targets(apr_pool_t 
       const char* common;
       apr_array_header_t *hdr = apr_array_make(pool, 8, sizeof(const char*));
       apr_array_header_t *condensed;
+      svn_boolean_t skip = FALSE;
 
       for (j = 0; j < COUNT_OF(tests[i].paths); j++)
         {
           if (tests[i].paths[j] != NULL)
-            APR_ARRAY_PUSH(hdr, const char*) = tests[i].paths[j];
+            {
+              APR_ARRAY_PUSH(hdr, const char*) = tests[i].paths[j];
+#ifdef SVN_USE_DOS_PATHS
+              /* For tests that are referencing a D: drive, specifically test
+                 if such a drive exists on the system.  If not, skip the test
+                 (svn_dirent_condense_targets will fail, because
+                 apr_filepath_merge will produce an APR_EBADPATH error). */
+              if (strncmp(tests[i].paths[j], "D:", 2) == 0
+                  && GetDriveType("D:\\") == DRIVE_NO_ROOT_DIR)
+                {
+                  /* There is no D: drive, skip this. */
+                  skip = TRUE;
+                  break;
+                }
+#endif
+            }
           else
             break;
         }
 
+      if (skip)
+        continue;
+
       SVN_ERR(svn_dirent_condense_targets(&common, &condensed, hdr,
                                           FALSE, pool, pool));
 

Modified: subversion/branches/inheritable-props/subversion/tests/libsvn_subr/mergeinfo-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/tests/libsvn_subr/mergeinfo-test.c?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/tests/libsvn_subr/mergeinfo-test.c (original)
+++ subversion/branches/inheritable-props/subversion/tests/libsvn_subr/mergeinfo-test.c Tue Jun 26 19:26:49 2012
@@ -712,7 +712,7 @@ test_merge_mergeinfo(apr_pool_t *pool)
       SVN_ERR(svn_mergeinfo_to_string(&info2_starting, info2, pool));
 
       SVN_ERR(svn_mergeinfo_merge(info1, info2, pool));
-      if (mergeinfo[i].expected_paths != apr_hash_count(info1))
+      if (mergeinfo[i].expected_paths != (int)apr_hash_count(info1))
         return fail(pool, "Wrong number of paths in merged mergeinfo");
 
       /* Check that info2 remained unchanged. */

Modified: subversion/branches/inheritable-props/subversion/tests/libsvn_subr/named_atomic-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/tests/libsvn_subr/named_atomic-test.c?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/tests/libsvn_subr/named_atomic-test.c (original)
+++ subversion/branches/inheritable-props/subversion/tests/libsvn_subr/named_atomic-test.c Tue Jun 26 19:26:49 2012
@@ -45,37 +45,6 @@ static int hw_thread_count = 0;
  * (will be calibrated to about 1s runtime)*/
 static int suggested_iterations = 0;
 
-/* Return FALSE if we can't create SHMs due to missing privileges
- */
-static svn_boolean_t
-has_sufficient_privileges(void)
-{
-#ifdef _WIN32
-  static svn_tristate_t result = svn_tristate_unknown;
-
-  if (result == svn_tristate_unknown)
-    {
-      HANDLE handle = CreateFileMappingA(INVALID_HANDLE_VALUE,
-                                         NULL,
-                                         PAGE_READONLY,
-                                         0,
-                                         1,
-                                         "Global\\__RandomXZY_svn");
-      if (handle != NULL)
-        {
-          CloseHandle(handle);
-          result = svn_tristate_true;
-        }
-      else
-        result = svn_tristate_false;
-    }
-
-  return result == svn_tristate_true ? TRUE : FALSE;
-#else
-  return TRUE;
-#endif
-}
-
 /* If possible, translate PROC to a global path and set DIRECTORY to
  * the current directory.
  */
@@ -113,7 +82,10 @@ proc_found(const char *proc, apr_pool_t 
 
       /* all processes and their I/O data */
       apr_proc_t process;
-      const char * args[2] = {proc, NULL};
+      const char * args[2];
+
+      args[0] = proc;
+      args[1] = NULL;
       svn_error_clear(adjust_proc_path(&args[0], &directory, pool));
 
       /* try to start the process */
@@ -174,7 +146,7 @@ init_test_shm(apr_pool_t *pool)
     }
 
   /* skip tests if the current user does not have the required privileges */
-  if (!has_sufficient_privileges())
+  if (!svn_named_atomic__is_supported())
     return svn_error_wrap_apr(SVN_ERR_TEST_SKIPPED,
                               "user has insufficient privileges");
 
@@ -338,15 +310,14 @@ run_procs(apr_pool_t *pool, const char *
   /* start sub-processes */
   for (i = 0; i < count; ++i)
     {
-      const char * args[6] =
-        {
-          proc,
-          apr_itoa(pool, i),
-          apr_itoa(pool, count),
-          apr_itoa(pool, iterations),
-          name_namespace,
-          NULL
-        };
+      const char * args[6];
+
+      args[0] = proc;
+      args[1] = apr_itoa(pool, i);
+      args[2] = apr_itoa(pool, count);
+      args[3] = apr_itoa(pool, iterations);
+      args[4] = name_namespace;
+      args[5] = NULL;
 
       error = svn_io_start_cmd3(&process[i],
                                 directory,  /* working directory */

Modified: subversion/branches/inheritable-props/subversion/tests/libsvn_subr/skel-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/tests/libsvn_subr/skel-test.c?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/tests/libsvn_subr/skel-test.c (original)
+++ subversion/branches/inheritable-props/subversion/tests/libsvn_subr/skel-test.c Tue Jun 26 19:26:49 2012
@@ -216,7 +216,7 @@ gen_implicit_length_all_chars(apr_size_t
   for (i = 0; i < 256; i++)
     if (! skel_is_space( (apr_byte_t)i)
         && ! skel_is_paren( (apr_byte_t)i))
-      name[pos++] = i;
+      name[pos++] = (char)i;
 
   *len_p = pos;
   return name;
@@ -375,7 +375,7 @@ parse_explicit_length(apr_pool_t *pool)
       {
         char buf[1];
 
-        buf[0] = i;
+        buf[0] = (char)i;
         SVN_ERR(try_explicit_length(buf, 1, 1, pool));
       }
   }
@@ -386,7 +386,7 @@ parse_explicit_length(apr_pool_t *pool)
     char data[256];
 
     for (i = 0; i < 256; i++)
-      data[i] = i;
+      data[i] = (char)i;
 
     SVN_ERR(try_explicit_length(data, 256, 256, pool));
   }
@@ -592,7 +592,7 @@ parse_list(apr_pool_t *pool)
                       svn_skel_t *child;
                       char buf[1];
 
-                      buf[0] = atom_byte;
+                      buf[0] = (char)atom_byte;
 
                       put_list_start(str,  (apr_byte_t)sep, sep_count);
                       for (i = 0; i < list_len; i++)
@@ -619,7 +619,7 @@ parse_list(apr_pool_t *pool)
                     char data[256];
 
                     for (i = 0; i < 256; i++)
-                      data[i] = i;
+                      data[i] = (char)i;
 
                     put_list_start(str,  (apr_byte_t)sep, sep_count);
                     for (i = 0; i < list_len; i++)
@@ -797,7 +797,7 @@ unparse_list(apr_pool_t *pool)
     for (byte = 0; byte < 256; byte++)
       if (skel_is_name( (apr_byte_t)byte))
         {
-          char buf = byte;
+          char buf = (char)byte;
           add(build_atom(1, &buf, pool), list);
         }
 
@@ -858,7 +858,7 @@ unparse_list(apr_pool_t *pool)
             val = i * 10 + j;
             for (k = 0; k < sizeof(buf); k++)
               {
-                buf[k] = val;
+                buf[k] = (char)val;
                 val += j;
               }
 

Modified: subversion/branches/inheritable-props/subversion/tests/libsvn_subr/stream-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/tests/libsvn_subr/stream-test.c?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/tests/libsvn_subr/stream-test.c (original)
+++ subversion/branches/inheritable-props/subversion/tests/libsvn_subr/stream-test.c Tue Jun 26 19:26:49 2012
@@ -138,7 +138,7 @@ generate_test_bytes(int num_bytes, apr_p
         {
           if (c == 127)
             repeat++;
-          c = (c + 1) % 127;
+          c = (char)((c + 1) % 127);
           repeat_iter = repeat;
         }
     }

Modified: subversion/branches/inheritable-props/subversion/tests/libsvn_subr/string-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/tests/libsvn_subr/string-test.c?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/tests/libsvn_subr/string-test.c (original)
+++ subversion/branches/inheritable-props/subversion/tests/libsvn_subr/string-test.c Tue Jun 26 19:26:49 2012
@@ -521,7 +521,7 @@ test24(apr_pool_t *pool)
   SVN_TEST_ASSERT(length == 1);
   SVN_TEST_STRING_ASSERT(buffer, "0");
 
-  length = svn__i64toa(buffer, -0x8000000000000000ll);
+  length = svn__i64toa(buffer, 0x8000000000000000ll);
   SVN_TEST_ASSERT(length == 20);
   SVN_TEST_STRING_ASSERT(buffer, "-9223372036854775808");
 
@@ -529,11 +529,11 @@ test24(apr_pool_t *pool)
   SVN_TEST_ASSERT(length == 19);
   SVN_TEST_STRING_ASSERT(buffer, "9223372036854775807");
 
-  length = svn__ui64toa(buffer, 0);
+  length = svn__ui64toa(buffer, 0ull);
   SVN_TEST_ASSERT(length == 1);
   SVN_TEST_STRING_ASSERT(buffer, "0");
 
-  length = svn__ui64toa(buffer, 0xffffffffffffffffll);
+  length = svn__ui64toa(buffer, 0xffffffffffffffffull);
   SVN_TEST_ASSERT(length == 20);
   SVN_TEST_STRING_ASSERT(buffer, "18446744073709551615");
 

Modified: subversion/branches/inheritable-props/subversion/tests/libsvn_subr/utf-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/tests/libsvn_subr/utf-test.c?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/tests/libsvn_subr/utf-test.c (original)
+++ subversion/branches/inheritable-props/subversion/tests/libsvn_subr/utf-test.c Tue Jun 26 19:26:49 2012
@@ -197,7 +197,7 @@ utf_validate2(apr_pool_t *pool)
       /* A random string; experiment shows that it's occasionally (less
          than 1%) valid but usually invalid. */
       for (j = 0; j < sizeof(str) - 1; ++j)
-        str[j] = range_rand(0, 255);
+        str[j] = (char)range_rand(0, 255);
       str[sizeof(str) - 1] = 0;
       len = strlen(str);
 

Propchange: subversion/branches/inheritable-props/subversion/tests/libsvn_wc/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Tue Jun 26 19:26:49 2012
@@ -9,3 +9,4 @@ entries-compat-test
 op-depth-test
 wc-lock-tester
 wc-incomplete-tester
+wc-queries-test

Modified: subversion/branches/inheritable-props/subversion/tests/libsvn_wc/op-depth-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/tests/libsvn_wc/op-depth-test.c?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/tests/libsvn_wc/op-depth-test.c (original)
+++ subversion/branches/inheritable-props/subversion/tests/libsvn_wc/op-depth-test.c Tue Jun 26 19:26:49 2012
@@ -238,7 +238,10 @@ wc_update(svn_test__sandbox_t *b, const 
   apr_array_header_t *result_revs;
   apr_array_header_t *paths = apr_array_make(b->pool, 1,
                                              sizeof(const char *));
-  svn_opt_revision_t revision = { svn_opt_revision_number, { revnum } };
+  svn_opt_revision_t revision;
+
+  revision.kind = svn_opt_revision_number;
+  revision.value.number = revnum;
 
   APR_ARRAY_PUSH(paths, const char *) = wc_path(b, path);
   SVN_ERR(svn_client_create_context(&ctx, b->pool));
@@ -455,8 +458,12 @@ check_db_rows(svn_test__sandbox_t *b,
   svn_boolean_t have_row;
   apr_hash_t *found_hash = apr_hash_make(b->pool);
   apr_hash_t *expected_hash = apr_hash_make(b->pool);
-  comparison_baton_t comparison_baton
-    = { expected_hash, found_hash, b->pool, NULL };
+  comparison_baton_t comparison_baton;
+
+  comparison_baton.expected_hash = expected_hash;
+  comparison_baton.found_hash = found_hash;
+  comparison_baton.scratch_pool = b->pool;
+  comparison_baton.errors = NULL;
 
   /* Fill ACTUAL_HASH with data from the WC DB. */
   SVN_ERR(open_wc_db(&sdb, b->wc_abspath, statements, b->pool, b->pool));
@@ -523,23 +530,23 @@ struct copy_subtest_t
   nodes_row_t expected[20];
 };
 
+#define source_everything   "A/B"
+
+#define source_base_file    "A/B/lambda"
+#define source_base_dir     "A/B/E"
+
+#define source_added_file   "A/B/file-added"
+#define source_added_dir    "A/B/D-added"
+#define source_added_dir2   "A/B/D-added/D2"
+
+#define source_copied_file  "A/B/lambda-copied"
+#define source_copied_dir   "A/B/E-copied"
+
 /* Check that all kinds of WC-to-WC copies give correct op_depth results:
  * create a Greek tree, make copies in it, and check the resulting DB rows. */
 static svn_error_t *
 wc_wc_copies(svn_test__sandbox_t *b)
 {
-  const char source_everything[]  = "A/B";
-
-  const char source_base_file[]   = "A/B/lambda";
-  const char source_base_dir[]    = "A/B/E";
-
-  const char source_added_file[]  = "A/B/file-added";
-  const char source_added_dir[]   = "A/B/D-added";
-  const char source_added_dir2[]  = "A/B/D-added/D2";
-
-  const char source_copied_file[] = "A/B/lambda-copied";
-  const char source_copied_dir[]  = "A/B/E-copied";
-
   SVN_ERR(add_and_commit_greek_tree(b));
 
   /* Create the various kinds of source node which will be copied */
@@ -756,13 +763,15 @@ repo_wc_copies(svn_test__sandbox_t *b)
     for (subtest = subtests; subtest->from_path; subtest++)
       {
         svn_opt_revision_t rev = { svn_opt_revision_number, { 1 } };
-        svn_client_copy_source_t source = { NULL, &rev, &rev };
+        svn_client_copy_source_t source;
         apr_array_header_t *sources
           = apr_array_make(b->pool, 0, sizeof(svn_client_copy_source_t *));
 
         source.path = svn_path_url_add_component2(b->repos_url,
                                                   subtest->from_path,
                                                   b->pool);
+        source.revision = &rev;
+        source.peg_revision = &rev;
         APR_ARRAY_PUSH(sources, svn_client_copy_source_t *) = &source;
         SVN_ERR(svn_client_copy6(sources,
                                  wc_path(b, subtest->to_path),
@@ -1217,9 +1226,9 @@ insert_dirs(svn_test__sandbox_t *b,
       if (nodes->local_relpath[0])
         {
           SVN_ERR(svn_sqlite__get_statement(&stmt, sdb, 2));
-          SVN_ERR(svn_sqlite__bindf(stmt, "sissrs",
+          SVN_ERR(svn_sqlite__bindf(stmt, "sdssrs",
                                     nodes->local_relpath,
-                                    (apr_int64_t)nodes->op_depth,
+                                    nodes->op_depth,
                                     nodes->presence,
                                     nodes->repo_relpath,
                                     nodes->repo_revnum,
@@ -1229,9 +1238,9 @@ insert_dirs(svn_test__sandbox_t *b,
       else
         {
           SVN_ERR(svn_sqlite__get_statement(&stmt, sdb, 1));
-          SVN_ERR(svn_sqlite__bindf(stmt, "sissr",
+          SVN_ERR(svn_sqlite__bindf(stmt, "sdssr",
                                     nodes->local_relpath,
-                                    (apr_int64_t)nodes->op_depth,
+                                    nodes->op_depth,
                                     nodes->presence,
                                     nodes->repo_relpath,
                                     nodes->repo_revnum));
@@ -1277,7 +1286,7 @@ base_dir_insert_remove(svn_test__sandbox
                                         NULL, NULL, FALSE, NULL, NULL,
                                         b->pool));
 
-  after = apr_palloc(b->pool, sizeof(*after) * (num_before + num_added + 1));
+  after = apr_palloc(b->pool, sizeof(*after) * (apr_size_t)(num_before + num_added + 1));
   for (i = 0; i < num_before; ++i)
     after[i] = before[i];
   for (i = 0; i < num_added; ++i)
@@ -4577,10 +4586,35 @@ move_update(const svn_test_opts_t *opts,
 }
 
 static svn_error_t *
+check_moved_to(apr_array_header_t *moved_tos,
+               int i,
+               int op_depth,
+               const char *local_relpath)
+{
+  struct svn_wc__db_moved_to_t *moved_to;
+
+  if (i >= moved_tos->nelts)
+    return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
+                             "moved-to %d not found", i);
+
+  moved_to = APR_ARRAY_IDX(moved_tos, i, struct svn_wc__db_moved_to_t *);
+
+  if (moved_to->op_depth != op_depth
+      || strcmp(moved_to->local_relpath, local_relpath))
+    return svn_error_createf(SVN_ERR_TEST_FAILED, NULL,
+                             "expected: {%d '%s'} found[%d]: {%d '%s'}",
+                             op_depth, local_relpath, i,
+                             moved_to->op_depth, moved_to->local_relpath);
+
+  return SVN_NO_ERROR;
+}
+
+static svn_error_t *
 test_scan_delete(const svn_test_opts_t *opts, apr_pool_t *pool)
 {
   svn_test__sandbox_t b;
   const char *moved_to_abspath, *moved_to_op_root_abspath;
+  apr_array_header_t *moved_tos;
 
   SVN_ERR(svn_test__sandbox_create(&b, "scan_delete", opts, pool));
 
@@ -4639,11 +4673,12 @@ test_scan_delete(const svn_test_opts_t *
   SVN_TEST_STRING_ASSERT(moved_to_abspath, wc_path(&b, "X/B"));
   SVN_TEST_STRING_ASSERT(moved_to_op_root_abspath, wc_path(&b, "X/B"));
 
-  SVN_ERR(svn_wc__db_final_moved_to(&moved_to_abspath, b.wc_ctx->db,
-                                    wc_path(&b, "A/B/C"), pool, pool));
-  SVN_TEST_STRING_ASSERT(moved_to_abspath, wc_path(&b, "Y"));
+  SVN_ERR(svn_wc__db_follow_moved_to(&moved_tos, b.wc_ctx->db,
+                                     wc_path(&b, "A/B/C"), pool, pool));
+  SVN_ERR(check_moved_to(moved_tos, 0, 2, "X/B/C"));
+  SVN_ERR(check_moved_to(moved_tos, 1, 3, "Y"));
+  SVN_TEST_ASSERT(moved_tos->nelts == 2);
 
-  /* Not clear what this should give: Y or X/B/C or ... ? */
   SVN_ERR(svn_wc__db_scan_deletion(NULL, &moved_to_abspath,
                                    NULL, &moved_to_op_root_abspath,
                                    b.wc_ctx->db, wc_path(&b, "A/B/C"),
@@ -4658,7 +4693,6 @@ test_scan_delete(const svn_test_opts_t *
   SVN_TEST_STRING_ASSERT(moved_to_abspath, wc_path(&b, "X"));
   SVN_TEST_STRING_ASSERT(moved_to_op_root_abspath, wc_path(&b, "X"));
 
-  /* Not clear what this should give: Z or X/B or ... ? */
   SVN_ERR(svn_wc__db_scan_deletion(NULL, &moved_to_abspath,
                                    NULL, &moved_to_op_root_abspath,
                                    b.wc_ctx->db, wc_path(&b, "A2/B"),
@@ -4669,6 +4703,279 @@ test_scan_delete(const svn_test_opts_t *
   return SVN_NO_ERROR;
 }
 
+static svn_error_t *
+test_follow_moved_to(const svn_test_opts_t *opts, apr_pool_t *pool)
+{
+  svn_test__sandbox_t b;
+  apr_array_header_t *moved_tos;
+
+  SVN_ERR(svn_test__sandbox_create(&b, "follow_moved_to", opts, pool));
+
+  SVN_ERR(wc_mkdir(&b, "A1"));
+  SVN_ERR(wc_mkdir(&b, "A1/B"));
+  SVN_ERR(wc_mkdir(&b, "A1/B/C"));
+  SVN_ERR(wc_mkdir(&b, "A1/B/C/D"));
+  SVN_ERR(wc_mkdir(&b, "A1/B/C/D/E"));
+  SVN_ERR(wc_mkdir(&b, "A2"));
+  SVN_ERR(wc_mkdir(&b, "A2/B"));
+  SVN_ERR(wc_mkdir(&b, "A2/B/C"));
+  SVN_ERR(wc_mkdir(&b, "A2/B/C/D"));
+  SVN_ERR(wc_mkdir(&b, "A2/B/C/D/E"));
+  SVN_ERR(wc_mkdir(&b, "A3"));
+  SVN_ERR(wc_mkdir(&b, "A3/B"));
+  SVN_ERR(wc_mkdir(&b, "A3/B/C"));
+  SVN_ERR(wc_mkdir(&b, "A3/B/C/D"));
+  SVN_ERR(wc_mkdir(&b, "A3/B/C/D/E"));
+  SVN_ERR(wc_commit(&b, ""));
+  SVN_ERR(wc_update(&b, "", 1));
+
+  {
+    nodes_row_t nodes[] = {
+      {0, "",         "normal", 1, ""},
+      {0, "A1",       "normal", 1, "A1"},
+      {0, "A1/B",     "normal", 1, "A1/B"},
+      {0, "A1/B/C",   "normal", 1, "A1/B/C"},
+      {0, "A1/B/C/D", "normal", 1, "A1/B/C/D"},
+      {0, "A1/B/C/D/E", "normal", 1, "A1/B/C/D/E"},
+      {0, "A2",       "normal", 1, "A2"},
+      {0, "A2/B",     "normal", 1, "A2/B"},
+      {0, "A2/B/C",   "normal", 1, "A2/B/C"},
+      {0, "A2/B/C/D", "normal", 1, "A2/B/C/D"},
+      {0, "A2/B/C/D/E", "normal", 1, "A2/B/C/D/E"},
+      {0, "A3",       "normal", 1, "A3"},
+      {0, "A3/B",     "normal", 1, "A3/B"},
+      {0, "A3/B/C",   "normal", 1, "A3/B/C"},
+      {0, "A3/B/C/D", "normal", 1, "A3/B/C/D"},
+      {0, "A3/B/C/D/E", "normal", 1, "A3/B/C/D/E"},
+      {0}
+    };
+    SVN_ERR(check_db_rows(&b, "", nodes));
+  }
+
+  SVN_ERR(wc_move(&b, "A1", "X"));
+  SVN_ERR(wc_move(&b, "A2", "A1"));
+  SVN_ERR(wc_move(&b, "A3", "A2"));
+  SVN_ERR(wc_move(&b, "X", "A3"));
+  SVN_ERR(wc_move(&b, "A1/B", "X"));
+  SVN_ERR(wc_move(&b, "A2/B", "A1/B"));
+  SVN_ERR(wc_move(&b, "A3/B", "A2/B"));
+  SVN_ERR(wc_move(&b, "X", "A3/B"));
+  SVN_ERR(wc_move(&b, "A1/B/C/D", "X"));
+  SVN_ERR(wc_move(&b, "A2/B/C/D", "A1/B/C/D"));
+  SVN_ERR(wc_move(&b, "A3/B/C/D", "A2/B/C/D"));
+  SVN_ERR(wc_move(&b, "X", "A3/B/C/D"));
+  SVN_ERR(wc_move(&b, "A1/B/C/D/E", "X"));
+  SVN_ERR(wc_move(&b, "A2/B/C/D/E", "A1/B/C/D/E"));
+  SVN_ERR(wc_move(&b, "A3/B/C/D/E", "A2/B/C/D/E"));
+  SVN_ERR(wc_move(&b, "X", "A3/B/C/D/E"));
+
+  {
+    nodes_row_t nodes[] = {
+      {0, "",         "normal", 1, ""},
+      {0, "A1",       "normal", 1, "A1"},
+      {0, "A1/B",     "normal", 1, "A1/B"},
+      {0, "A1/B/C",   "normal", 1, "A1/B/C"},
+      {0, "A1/B/C/D", "normal", 1, "A1/B/C/D"},
+      {0, "A1/B/C/D/E", "normal", 1, "A1/B/C/D/E"},
+      {0, "A2",       "normal", 1, "A2"},
+      {0, "A2/B",     "normal", 1, "A2/B"},
+      {0, "A2/B/C",   "normal", 1, "A2/B/C"},
+      {0, "A2/B/C/D", "normal", 1, "A2/B/C/D"},
+      {0, "A2/B/C/D/E", "normal", 1, "A2/B/C/D/E"},
+      {0, "A3",       "normal", 1, "A3"},
+      {0, "A3/B",     "normal", 1, "A3/B"},
+      {0, "A3/B/C",   "normal", 1, "A3/B/C"},
+      {0, "A3/B/C/D", "normal", 1, "A3/B/C/D"},
+      {0, "A3/B/C/D/E", "normal", 1, "A3/B/C/D/E"},
+
+      {1, "A1",       "normal", 1, "A2", FALSE, "A3", TRUE},
+      {1, "A1/B",     "normal", 1, "A2/B", MOVED_HERE},
+      {1, "A1/B/C",   "normal", 1, "A2/B/C", MOVED_HERE},
+      {1, "A1/B/C/D", "normal", 1, "A2/B/C/D", MOVED_HERE},
+      {1, "A1/B/C/D/E", "normal", 1, "A2/B/C/D/E", MOVED_HERE},
+
+      {1, "A2",       "normal", 1, "A3", FALSE, "A1", TRUE},
+      {1, "A2/B",     "normal", 1, "A3/B", MOVED_HERE},
+      {1, "A2/B/C",   "normal", 1, "A3/B/C", MOVED_HERE},
+      {1, "A2/B/C/D", "normal", 1, "A3/B/C/D", MOVED_HERE},
+      {1, "A2/B/C/D/E", "normal", 1, "A3/B/C/D/E", MOVED_HERE},
+
+      {1, "A3",       "normal", 1, "A1", FALSE, "A2", TRUE},
+      {1, "A3/B",     "normal", 1, "A1/B", MOVED_HERE},
+      {1, "A3/B/C",   "normal", 1, "A1/B/C", MOVED_HERE},
+      {1, "A3/B/C/D", "normal", 1, "A1/B/C/D", MOVED_HERE},
+      {1, "A3/B/C/D/E", "normal", 1, "A1/B/C/D/E", MOVED_HERE},
+
+      {2, "A1/B",     "normal", 1, "A3/B", FALSE, "A3/B", TRUE},
+      {2, "A1/B/C",   "normal", 1, "A3/B/C", MOVED_HERE},
+      {2, "A1/B/C/D", "normal", 1, "A3/B/C/D", MOVED_HERE},
+      {2, "A1/B/C/D/E", "normal", 1, "A3/B/C/D/E", MOVED_HERE},
+
+      {2, "A2/B",     "normal", 1, "A1/B", FALSE, "A1/B", TRUE},
+      {2, "A2/B/C",   "normal", 1, "A1/B/C", MOVED_HERE},
+      {2, "A2/B/C/D", "normal", 1, "A1/B/C/D", MOVED_HERE},
+      {2, "A2/B/C/D/E", "normal", 1, "A1/B/C/D/E", MOVED_HERE},
+
+      {2, "A3/B",     "normal", 1, "A2/B", FALSE, "A2/B", TRUE},
+      {2, "A3/B/C",   "normal", 1, "A2/B/C", MOVED_HERE},
+      {2, "A3/B/C/D", "normal", 1, "A2/B/C/D", MOVED_HERE},
+      {2, "A3/B/C/D/E", "normal", 1, "A2/B/C/D/E", MOVED_HERE},
+
+      {4, "A1/B/C/D",   "normal", 1, "A1/B/C/D", FALSE, "A3/B/C/D", TRUE},
+      {4, "A1/B/C/D/E", "normal", 1, "A1/B/C/D/E", MOVED_HERE},
+
+      {4, "A2/B/C/D",   "normal", 1, "A2/B/C/D", FALSE, "A1/B/C/D", TRUE},
+      {4, "A2/B/C/D/E", "normal", 1, "A2/B/C/D/E", MOVED_HERE},
+
+      {4, "A3/B/C/D",   "normal", 1, "A3/B/C/D", FALSE, "A2/B/C/D", TRUE},
+      {4, "A3/B/C/D/E", "normal", 1, "A3/B/C/D/E", MOVED_HERE},
+
+      {5, "A1/B/C/D/E", "normal", 1, "A2/B/C/D/E", FALSE, "A3/B/C/D/E", TRUE},
+      {5, "A2/B/C/D/E", "normal", 1, "A3/B/C/D/E", FALSE, "A1/B/C/D/E", TRUE},
+      {5, "A3/B/C/D/E", "normal", 1, "A1/B/C/D/E", FALSE, "A2/B/C/D/E", TRUE},
+      {0}
+    };
+    SVN_ERR(check_db_rows(&b, "", nodes));
+  }
+
+  /* A1->A3, A3/B->A2/B, A2/B/C/D->A1/B/C/D, A1/B/C/D/E->A3/B/C/D/E */
+  SVN_ERR(svn_wc__db_follow_moved_to(&moved_tos, b.wc_ctx->db,
+                                     wc_path(&b, "A1"), pool, pool));
+  SVN_ERR(check_moved_to(moved_tos, 0, 1, "A3"));
+  SVN_TEST_ASSERT(moved_tos->nelts == 1);
+
+  SVN_ERR(svn_wc__db_follow_moved_to(&moved_tos, b.wc_ctx->db,
+                                     wc_path(&b, "A1/B"), pool, pool));
+  SVN_ERR(check_moved_to(moved_tos, 0, 1, "A3/B"));
+  SVN_ERR(check_moved_to(moved_tos, 1, 2, "A2/B"));
+  SVN_TEST_ASSERT(moved_tos->nelts == 2);
+
+  SVN_ERR(svn_wc__db_follow_moved_to(&moved_tos, b.wc_ctx->db,
+                                     wc_path(&b, "A1/B/C"), pool, pool));
+  SVN_ERR(check_moved_to(moved_tos, 0, 1, "A3/B/C"));
+  SVN_ERR(check_moved_to(moved_tos, 1, 2, "A2/B/C"));
+  SVN_TEST_ASSERT(moved_tos->nelts == 2);
+
+  SVN_ERR(svn_wc__db_follow_moved_to(&moved_tos, b.wc_ctx->db,
+                                     wc_path(&b, "A1/B/C/D"), pool, pool));
+  SVN_ERR(check_moved_to(moved_tos, 0, 1, "A3/B/C/D"));
+  SVN_ERR(check_moved_to(moved_tos, 1, 2, "A2/B/C/D"));
+  SVN_ERR(check_moved_to(moved_tos, 2, 4, "A1/B/C/D"));
+  SVN_TEST_ASSERT(moved_tos->nelts == 3);
+
+  SVN_ERR(svn_wc__db_follow_moved_to(&moved_tos, b.wc_ctx->db,
+                                     wc_path(&b, "A1/B/C/D/E"), pool, pool));
+  SVN_ERR(check_moved_to(moved_tos, 0, 1, "A3/B/C/D/E"));
+  SVN_ERR(check_moved_to(moved_tos, 1, 2, "A2/B/C/D/E"));
+  SVN_ERR(check_moved_to(moved_tos, 2, 4, "A1/B/C/D/E"));
+  SVN_ERR(check_moved_to(moved_tos, 3, 5, "A3/B/C/D/E"));
+  SVN_TEST_ASSERT(moved_tos->nelts == 4);
+
+  return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+mixed_rev_move(const svn_test_opts_t *opts, apr_pool_t *pool)
+{
+  svn_test__sandbox_t b;
+  apr_array_header_t *moved_tos;
+
+  SVN_ERR(svn_test__sandbox_create(&b, "mixed_rev_move", opts, pool));
+
+  SVN_ERR(wc_mkdir(&b, "A"));
+  SVN_ERR(wc_commit(&b, ""));
+  SVN_ERR(wc_mkdir(&b, "A/B"));
+  SVN_ERR(wc_commit(&b, ""));
+  SVN_ERR(wc_mkdir(&b, "A/B/C"));
+  SVN_ERR(wc_commit(&b, ""));
+
+  {
+    nodes_row_t nodes[] = {
+      {0, "",      "normal", 0, ""},
+      {0, "A",     "normal", 1, "A"},
+      {0, "A/B",   "normal", 2, "A/B"},
+      {0, "A/B/C", "normal", 3, "A/B/C"},
+      {0}
+    };
+    SVN_ERR(check_db_rows(&b, "", nodes));
+  }
+
+  SVN_ERR(wc_move(&b, "A", "X"));
+
+  {
+    nodes_row_t nodes[] = {
+      {0, "",      "normal",       0, ""},
+      {0, "A",     "normal",       1, "A"},
+      {0, "A/B",   "normal",       2, "A/B"},
+      {0, "A/B/C", "normal",       3, "A/B/C"},
+      {1, "A",     "base-deleted", NO_COPY_FROM, "X"},
+      {1, "A/B",   "base-deleted", NO_COPY_FROM},
+      {1, "A/B/C", "base-deleted", NO_COPY_FROM},
+      {1, "X",     "normal",       1, "A", MOVED_HERE},
+      {1, "X/B",   "not-present",  2, "A/B"},
+      {2, "X/B",   "normal",       2, "A/B", MOVED_HERE},
+      {2, "X/B/C", "not-present",  3, "A/B/C"},
+      {3, "X/B/C", "normal",       3, "A/B/C", MOVED_HERE},
+      {0}
+    };
+    SVN_ERR(check_db_rows(&b, "", nodes));
+  }
+
+  /* ### These values PASS but I'm not sure they are correct. */
+  SVN_ERR(svn_wc__db_follow_moved_to(&moved_tos, b.wc_ctx->db,
+                                     wc_path(&b, "A/B/C"), pool, pool));
+  SVN_ERR(check_moved_to(moved_tos, 0, 1, "X/B/C"));
+  SVN_TEST_ASSERT(moved_tos->nelts == 1);
+
+  SVN_ERR(svn_wc__db_follow_moved_to(&moved_tos, b.wc_ctx->db,
+                                     wc_path(&b, "A/B"), pool, pool));
+  SVN_ERR(check_moved_to(moved_tos, 0, 1, "X/B"));
+  SVN_TEST_ASSERT(moved_tos->nelts == 1);
+
+  SVN_ERR(svn_wc__db_follow_moved_to(&moved_tos, b.wc_ctx->db,
+                                     wc_path(&b, "A"), pool, pool));
+  SVN_ERR(check_moved_to(moved_tos, 0, 1, "X"));
+  SVN_TEST_ASSERT(moved_tos->nelts == 1);
+
+
+  /* This move doesn't record moved-to */
+  SVN_ERR(wc_move(&b, "X/B", "X/Y"));
+
+  {
+    nodes_row_t nodes[] = {
+      {0, "",      "normal",       0, ""},
+      {0, "A",     "normal",       1, "A"},
+      {0, "A/B",   "normal",       2, "A/B"},
+      {0, "A/B/C", "normal",       3, "A/B/C"},
+      {1, "A",     "base-deleted", NO_COPY_FROM, "X"},
+      {1, "A/B",   "base-deleted", NO_COPY_FROM},
+      {1, "A/B/C", "base-deleted", NO_COPY_FROM},
+      {1, "X",     "normal",       1, "A", MOVED_HERE},
+      {1, "X/B",   "not-present",  2, "A/B"},
+      {2, "X/Y",   "normal",       2, "A/B"},
+      {2, "X/Y/C", "not-present",  NO_COPY_FROM},
+      {3, "X/Y/C", "normal",       3, "A/B/C"},
+      {0}
+    };
+    SVN_ERR(check_db_rows(&b, "", nodes));
+  }
+
+  SVN_ERR(svn_wc__db_follow_moved_to(&moved_tos, b.wc_ctx->db,
+                                     wc_path(&b, "A/B/C"), pool, pool));
+  SVN_TEST_ASSERT(moved_tos->nelts == 0);
+
+  SVN_ERR(svn_wc__db_follow_moved_to(&moved_tos, b.wc_ctx->db,
+                                     wc_path(&b, "A/B"), pool, pool));
+  SVN_TEST_ASSERT(moved_tos->nelts == 0);
+
+  SVN_ERR(svn_wc__db_follow_moved_to(&moved_tos, b.wc_ctx->db,
+                                     wc_path(&b, "A"), pool, pool));
+  SVN_ERR(check_moved_to(moved_tos, 0, 1, "X"));
+  SVN_TEST_ASSERT(moved_tos->nelts == 1);
+
+  return SVN_NO_ERROR;
+}
+
 
 /* ---------------------------------------------------------------------- */
 /* The list of test functions */
@@ -4760,7 +5067,11 @@ struct svn_test_descriptor_t test_funcs[
                        "move_added"),
     SVN_TEST_OPTS_XFAIL(move_update,
                        "move_update"),
-    SVN_TEST_OPTS_WIMP(test_scan_delete,
-                       "scan_delete", "move tracking"),
+    SVN_TEST_OPTS_PASS(test_scan_delete,
+                       "scan_delete"),
+    SVN_TEST_OPTS_PASS(test_follow_moved_to,
+                       "follow_moved_to"),
+    SVN_TEST_OPTS_PASS(mixed_rev_move,
+                       "mixed_rev_move"),
     SVN_TEST_NULL
   };

Modified: subversion/branches/inheritable-props/subversion/tests/libsvn_wc/utils.c
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/subversion/tests/libsvn_wc/utils.c?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/subversion/tests/libsvn_wc/utils.c (original)
+++ subversion/branches/inheritable-props/subversion/tests/libsvn_wc/utils.c Tue Jun 26 19:26:49 2012
@@ -81,17 +81,18 @@ create_repos_and_wc(const char **repos_u
 
   /* Create a WC. Set *WC_ABSPATH to its path. */
   {
+    apr_pool_t *subpool = svn_pool_create(pool); /* To cleanup CTX */
     svn_client_ctx_t *ctx;
     svn_opt_revision_t head_rev = { svn_opt_revision_head, {0} };
 
-    SVN_ERR(svn_client_create_context(&ctx, pool));
-    /* SVN_ERR(svn_config_get_config(&ctx->config, config_dir, pool)); */
+    SVN_ERR(svn_client_create_context(&ctx, subpool));
     SVN_ERR(svn_dirent_get_absolute(wc_abspath, wc_path, pool));
     SVN_ERR(svn_client_checkout3(NULL, *repos_url, *wc_abspath,
                                  &head_rev, &head_rev, svn_depth_infinity,
                                  FALSE /* ignore_externals */,
                                  FALSE /* allow_unver_obstructions */,
-                                 ctx, pool));
+                                 ctx, subpool));
+    svn_pool_destroy(subpool);
   }
 
   /* Register this WC for cleanup. */

Modified: subversion/branches/inheritable-props/tools/buildbot/slaves/bb-openbsd/svnbuild.sh
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/tools/buildbot/slaves/bb-openbsd/svnbuild.sh?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/tools/buildbot/slaves/bb-openbsd/svnbuild.sh (original)
+++ subversion/branches/inheritable-props/tools/buildbot/slaves/bb-openbsd/svnbuild.sh Tue Jun 26 19:26:49 2012
@@ -22,5 +22,7 @@
 set -e
 set -x
 
+export JAVA_HOME=/usr/local/jdk-1.7.0
+
 branch="$(basename $(svn info . | grep ^URL  | cut -d' ' -f2))"
-(cd .. && gmake BRANCH="$branch")
+(cd .. && gmake BRANCH="$branch" THREADING="no")

Modified: subversion/branches/inheritable-props/tools/buildbot/slaves/bb-openbsd/svncheck-bindings.sh
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/tools/buildbot/slaves/bb-openbsd/svncheck-bindings.sh?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/tools/buildbot/slaves/bb-openbsd/svncheck-bindings.sh (original)
+++ subversion/branches/inheritable-props/tools/buildbot/slaves/bb-openbsd/svncheck-bindings.sh Tue Jun 26 19:26:49 2012
@@ -24,7 +24,7 @@ set -x
 
 branch="$(basename $(svn info . | grep ^URL  | cut -d' ' -f2))"
 export MALLOC_OPTIONS=S
-(cd .. && gmake BRANCH="$branch" svn-check-bindings)
+(cd .. && gmake BRANCH="$branch" THREADING="no" svn-check-bindings)
 grep -q "^Result: PASS$" tests.log.bindings.pl || exit 1
 grep -q "^OK$" tests.log.bindings.py || exit 1
 tail -n 1 tests.log.bindings.rb | grep -q ", 0 failures, 0 errors" || exit 1

Modified: subversion/branches/inheritable-props/tools/buildbot/slaves/bb-openbsd/svncheck.sh
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/tools/buildbot/slaves/bb-openbsd/svncheck.sh?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/tools/buildbot/slaves/bb-openbsd/svncheck.sh (original)
+++ subversion/branches/inheritable-props/tools/buildbot/slaves/bb-openbsd/svncheck.sh Tue Jun 26 19:26:49 2012
@@ -24,11 +24,11 @@ set -x
 
 branch="$(basename $(svn info . | grep ^URL  | cut -d' ' -f2))"
 export MALLOC_OPTIONS=S
-(cd .. && gmake BRANCH="$branch" PARALLEL="" \
+(cd .. && gmake BRANCH="$branch" PARALLEL="" THREADING="no" \
                                   svn-check-local \
                                   svn-check-svn \
                                   svn-check-neon \
                                   svn-check-serf)
-grep -q "^FAIL:" tests.log* && exit 1
-grep -q "^XPASS:" tests.log* && exit 1
+grep -q "^FAIL:" tests.log.svn-check* && exit 1
+grep -q "^XPASS:" tests.log.svn-check* && exit 1
 exit 0

Modified: subversion/branches/inheritable-props/tools/buildbot/slaves/bb-openbsd/svnclean.sh
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/tools/buildbot/slaves/bb-openbsd/svnclean.sh?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/tools/buildbot/slaves/bb-openbsd/svnclean.sh (original)
+++ subversion/branches/inheritable-props/tools/buildbot/slaves/bb-openbsd/svnclean.sh Tue Jun 26 19:26:49 2012
@@ -24,9 +24,10 @@ set -x
 
 branch="$(basename $(svn info . | grep ^URL  | cut -d' ' -f2))"
 (test -h ../svn-trunk || ln -s build ../svn-trunk)
-for i in 3 4 5 6 7; do
+for i in 6 7; do
   (test -h ../svn-1.${i}.x || ln -s build ../svn-1.${i}.x)
 done
 svn update ../../unix-build
 (test -h ../GNUmakefile || ln -s ../unix-build/Makefile.svn ../GNUmakefile)
 (cd .. && gmake BRANCH="$branch" reset clean)
+rm -f tests.log* fails.log*

Modified: subversion/branches/inheritable-props/tools/buildbot/slaves/centos/svnbuild.sh
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/tools/buildbot/slaves/centos/svnbuild.sh?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/tools/buildbot/slaves/centos/svnbuild.sh (original)
+++ subversion/branches/inheritable-props/tools/buildbot/slaves/centos/svnbuild.sh Tue Jun 26 19:26:49 2012
@@ -23,6 +23,7 @@
 set -x
 
 export MAKEFLAGS=-j4
+export PYTHON=/usr/local/python25/bin/python
 
 echo "========= autogen.sh"
 ./autogen.sh || exit $?
@@ -30,15 +31,17 @@ echo "========= autogen.sh"
 echo "========= configure"
 #            --with-junit=/usr/share/java/junit.jar
 #            --with-jdk=/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64 \
+#            --without-berkeley-db \
 ./configure --enable-javahl --enable-maintainer-mode \
             --with-neon=/usr \
+            --with-serf=/usr/local \
             --with-apxs=/usr/sbin/apxs \
-            --without-berkeley-db \
+            --with-berkeley-db \
             --with-apr=/usr \
             --with-apr-util=/usr \
             --with-jdk=/opt/java/jdk1.6.0_15 \
 	    --with-junit=/home/bt/junit-4.4.jar \
-	    --with-sqlite=/home/bt/sqlite-3.6.17/sqlite3.c \
+	    --with-sqlite=/home/bt/packages/sqlite-amalgamation-dir/sqlite3.c \
             || exit $?
 
 echo "========= make"

Modified: subversion/branches/inheritable-props/tools/buildbot/slaves/win32-SharpSvn/svntest-bindings.cmd
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/tools/buildbot/slaves/win32-SharpSvn/svntest-bindings.cmd?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/tools/buildbot/slaves/win32-SharpSvn/svntest-bindings.cmd (original)
+++ subversion/branches/inheritable-props/tools/buildbot/slaves/win32-SharpSvn/svntest-bindings.cmd Tue Jun 26 19:26:49 2012
@@ -67,6 +67,12 @@ for %%i in (*.dll) do (
 )
 popd
 
+svnversion . /1.7.x | find "S" > nul:
+IF ERRORLEVEL 1 (
+  ECHO --- Building 1.7.x: Skipping perl tests ---
+  EXIT /B %result%
+)
+
 SET PERL5LIB=%PERL5LIB%;%TESTDIR%\swig\pl-release;
 pushd subversion\bindings\swig\perl\native
 perl -MExtUtils::Command::MM -e test_harness() t\*.t

Modified: subversion/branches/inheritable-props/tools/buildbot/slaves/win32-SharpSvn/svntest-cleanup.cmd
URL: http://svn.apache.org/viewvc/subversion/branches/inheritable-props/tools/buildbot/slaves/win32-SharpSvn/svntest-cleanup.cmd?rev=1354186&r1=1354185&r2=1354186&view=diff
==============================================================================
--- subversion/branches/inheritable-props/tools/buildbot/slaves/win32-SharpSvn/svntest-cleanup.cmd (original)
+++ subversion/branches/inheritable-props/tools/buildbot/slaves/win32-SharpSvn/svntest-cleanup.cmd Tue Jun 26 19:26:49 2012
@@ -31,12 +31,13 @@ IF NOT EXIST "imports\" (
   svn co --username guest --password "" http://sharpsvn.open.collab.net/svn/sharpsvn/trunk/imports imports
 )
 IF NOT EXIST build\imports.done (
+  svn up imports
   copy /y imports\dev-default.build default.build
   nant prep-dev %NANTARGS%
   IF ERRORLEVEL 1 (
     exit /B 1
   )
-  del release\bin\*svn* release\bin\_*.*
+  del release\bin\*svn* release\bin\_*.* 2>nul:
   echo. > build\imports.done
 )
 
@@ -58,6 +59,8 @@ taskkill /im svnsync.exe /f 2> nul:
 taskkill /im httpd.exe /f 2> nul:
 taskkill /im fs-test.exe /f 2> nul:
 taskkill /im op-depth-test.exe /f 2> nul:
+taskkill /im java.exe /f 2> nul:
+taskkill /im perl.exe /f 2> nul:
 IF EXIST "%TESTDIR%\tests\subversion\tests\cmdline\httpd\" (
   rmdir /s /q  "%TESTDIR%\tests\subversion\tests\cmdline\httpd"
 )