You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by da...@apache.org on 2010/12/12 17:43:45 UTC

svn commit: r1044847 [4/4] - in /subversion/branches/diff-optimizations-bytes: ./ build/ build/ac-macros/ build/generator/templates/ notes/ notes/api-errata/ notes/api-errata/1.7/ subversion/include/ subversion/include/private/ subversion/libsvn_client...

Modified: subversion/branches/diff-optimizations-bytes/subversion/svnsync/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/diff-optimizations-bytes/subversion/svnsync/main.c?rev=1044847&r1=1044846&r2=1044847&view=diff
==============================================================================
--- subversion/branches/diff-optimizations-bytes/subversion/svnsync/main.c (original)
+++ subversion/branches/diff-optimizations-bytes/subversion/svnsync/main.c Sun Dec 12 16:43:42 2010
@@ -1829,7 +1829,7 @@ main(int argc, const char *argv[])
 
   if (argc <= 1)
     {
-      help_cmd(NULL, NULL, pool);
+      SVN_INT_ERR(help_cmd(NULL, NULL, pool));
       svn_pool_destroy(pool);
       return EXIT_FAILURE;
     }
@@ -1850,7 +1850,7 @@ main(int argc, const char *argv[])
         break;
       else if (apr_err)
         {
-          help_cmd(NULL, NULL, pool);
+          SVN_INT_ERR(help_cmd(NULL, NULL, pool));
           svn_pool_destroy(pool);
           return EXIT_FAILURE;
         }
@@ -1970,7 +1970,7 @@ main(int argc, const char *argv[])
 
           default:
             {
-              help_cmd(NULL, NULL, pool);
+              SVN_INT_ERR(help_cmd(NULL, NULL, pool));
               svn_pool_destroy(pool);
               return EXIT_FAILURE;
             }
@@ -2041,7 +2041,7 @@ main(int argc, const char *argv[])
             }
           else
             {
-              help_cmd(NULL, NULL, pool);
+              SVN_INT_ERR(help_cmd(NULL, NULL, pool));
               svn_pool_destroy(pool);
               return EXIT_FAILURE;
             }
@@ -2053,7 +2053,7 @@ main(int argc, const char *argv[])
                                                          first_arg);
           if (subcommand == NULL)
             {
-              help_cmd(NULL, NULL, pool);
+              SVN_INT_ERR(help_cmd(NULL, NULL, pool));
               svn_pool_destroy(pool);
               return EXIT_FAILURE;
             }
@@ -2076,7 +2076,7 @@ main(int argc, const char *argv[])
           svn_opt_format_option(&optstr, badopt, FALSE, pool);
           if (subcommand->name[0] == '-')
             {
-              help_cmd(NULL, NULL, pool);
+              SVN_INT_ERR(help_cmd(NULL, NULL, pool));
             }
           else
             {

Modified: subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/authz_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/authz_tests.py?rev=1044847&r1=1044846&r2=1044847&view=diff
==============================================================================
--- subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/authz_tests.py (original)
+++ subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/authz_tests.py Sun Dec 12 16:43:42 2010
@@ -1020,9 +1020,6 @@ def wc_wc_copy_revert(sbox):
 
   wc_wc_copy(sbox)
 
-  # Fails with a "No write-lock" error, as does "rm --force", on a
-  # path under A2.  Multiple repeats fail on different paths until the
-  # command completes.  No longer applies with op_depth.
   svntest.actions.run_and_verify_svn(None, None, [],
                                      'revert', '--recursive', sbox.ospath('A2'))
   
@@ -1092,10 +1089,8 @@ test_list = [ None,
               Skip(authz_access_required_at_repo_root2,
                    svntest.main.is_ra_type_file),
               Skip(multiple_matches, svntest.main.is_ra_type_file),
-              Wimp("Needs op_depth", Skip(wc_wc_copy,
-                   svntest.main.is_ra_type_file)),
-              Wimp("Redundant with op_depth", Skip(wc_wc_copy_revert,
-                   svntest.main.is_ra_type_file)),
+              Skip(wc_wc_copy, svntest.main.is_ra_type_file),
+              Skip(wc_wc_copy_revert, svntest.main.is_ra_type_file),
               Skip(authz_recursive_ls,
                    svntest.main.is_ra_type_file),
              ]

Modified: subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/basic_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/basic_tests.py?rev=1044847&r1=1044846&r2=1044847&view=diff
==============================================================================
--- subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/basic_tests.py (original)
+++ subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/basic_tests.py Sun Dec 12 16:43:42 2010
@@ -211,16 +211,6 @@ def basic_update(sbox):
     "update xx/xx", [], [],
     'update', '--quiet', xx_path)
 
-  # URL's are also skipped.
-  urls = ('http://localhost/a/b/c', 'http://localhost', 'svn://localhost')
-  for url in urls:
-    exit_code, out, err = svntest.actions.run_and_verify_svn(
-      "update " + url,
-      ["Skipped '"+url+"'\n",
-      "Summary of conflicts:\n",
-      "  Skipped paths: 1\n"], [],
-      'update', url)
-
 #----------------------------------------------------------------------
 def basic_mkdir_url(sbox):
   "basic mkdir URL"
@@ -2486,12 +2476,14 @@ def basic_add_svn_format_file(sbox):
   svntest.actions.run_and_verify_status(wc_dir, output)
 
 # Issue 2586, Unhelpful error message: Unrecognized URL scheme for ''
+# See also input_validation_tests.py:invalid_mkdir_targets(), which tests
+# the same thing the other way around.
 def basic_mkdir_mix_targets(sbox):
   "mkdir mix url and local path should error"
 
   sbox.build()
   Y_url = sbox.repo_url + '/Y'
-  expected_error = ".*Illegal repository URL 'subdir'"
+  expected_error = "svn: Cannot mix repository and working copy targets"
 
   svntest.actions.run_and_verify_svn(None, None, expected_error,
                                      'mkdir', '-m', 'log_msg', Y_url, 'subdir')

Modified: subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/copy_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/copy_tests.py?rev=1044847&r1=1044846&r2=1044847&view=diff
==============================================================================
--- subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/copy_tests.py (original)
+++ subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/copy_tests.py Sun Dec 12 16:43:42 2010
@@ -1543,7 +1543,7 @@ def wc_to_wc_copy_deleted(sbox):
     'A/B2'         : Item(status='A ', wc_rev='-', copied='+'),
     'A/B2/E'       : Item(status='  ', wc_rev='-', copied='+'),
     'A/B2/E/beta'  : Item(status='  ', wc_rev='-', copied='+'),
-    'A/B2/E/alpha' : Item(status='D ', wc_rev=2),
+    'A/B2/E/alpha' : Item(status='D ', wc_rev='-', copied='+'),
     'A/B2/lambda'  : Item(status='D ', wc_rev='-', copied='+'),
     'A/B2/F'       : Item(status='D ', wc_rev='-', copied='+'),
     })
@@ -2411,6 +2411,8 @@ def move_dir_out_of_moved_dir(sbox):
                                         None,
                                         wc_dir)
 
+# Includes regression testing for issue #3429 ("svn mv A B; svn mv B A"
+# generates replace without history).
 def move_file_back_and_forth(sbox):
   "move a moved file back to original location"
 
@@ -2420,25 +2422,27 @@ def move_file_back_and_forth(sbox):
   rho_path = os.path.join(wc_dir, 'A', 'D', 'G', 'rho')
   rho_move_path = os.path.join(wc_dir, 'A', 'D', 'rho_moved')
 
-  # Move A/D/G/rho to A/D/rho_moved
+  # Move A/D/G/rho away from and then back to its original path
   svntest.actions.run_and_verify_svn(None, None, [], 'mv',
                                      rho_path, rho_move_path)
-
-  # Move the moved file: A/D/rho_moved to A/B/F/rho_move_moved
   svntest.actions.run_and_verify_svn(None, None, [], 'mv',
                                      rho_move_path, rho_path)
 
-  # Created expected output tree for 'svn ci':
+  # Check expected status before commit
+  expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+  expected_status.add({
+    'A/D/G/rho' : Item(status='R ', copied='+', wc_rev='-'),
+    })
+  svntest.actions.run_and_verify_status(wc_dir, expected_status)
+
+  # Commit, and check expected output and status
   expected_output = svntest.wc.State(wc_dir, {
     'A/D/G/rho' : Item(verb='Replacing'),
     })
-
-  # Create expected status tree
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
   expected_status.add({
     'A/D/G/rho' : Item(status='  ', wc_rev=2),
     })
-
   svntest.actions.run_and_verify_commit(wc_dir,
                                         expected_output,
                                         expected_status,
@@ -2446,6 +2450,8 @@ def move_file_back_and_forth(sbox):
                                         wc_dir)
 
 
+# Includes regression testing for issue #3429 ("svn mv A B; svn mv B A"
+# generates replace without history).
 def move_dir_back_and_forth(sbox):
   "move a moved dir back to original location"
 
@@ -2474,6 +2480,23 @@ def move_dir_back_and_forth(sbox):
   svntest.actions.run_and_verify_svn(None, None, expected_err,
                                      'mv', D_move_path, D_path)
 
+  if svntest.main.wc_is_singledb(wc_dir):
+    # Verify that the status indicates a replace with history
+    expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+    expected_status.add({
+      'A/D'               : Item(status='R ', copied='+', wc_rev='-'),
+      'A/D/G'             : Item(status='  ', copied='+', wc_rev='-'),
+      'A/D/G/pi'          : Item(status='  ', copied='+', wc_rev='-'),
+      'A/D/G/rho'         : Item(status='  ', copied='+', wc_rev='-'),
+      'A/D/G/tau'         : Item(status='  ', copied='+', wc_rev='-'),
+      'A/D/gamma'         : Item(status='  ', copied='+', wc_rev='-'),
+      'A/D/H'             : Item(status='  ', copied='+', wc_rev='-'),
+      'A/D/H/chi'         : Item(status='  ', copied='+', wc_rev='-'),
+      'A/D/H/omega'       : Item(status='  ', copied='+', wc_rev='-'),
+      'A/D/H/psi'         : Item(status='  ', copied='+', wc_rev='-'),
+      })
+    svntest.actions.run_and_verify_status(wc_dir, expected_status)
+
 def copy_move_added_paths(sbox):
   "copy and move added paths without commits"
 
@@ -4422,10 +4445,10 @@ def move_dir_containing_move(sbox):
       'A/B_tmp'               : Item(status='A ', copied='+', wc_rev='-'),
       # alpha has a revision that isn't reported by status.
       'A/B_tmp/E'             : Item(status='  ', copied='+', wc_rev='-'),
-      'A/B_tmp/E/alpha'       : Item(status='D ', wc_rev='?', entry_rev='1'),
+      'A/B_tmp/E/alpha'       : Item(status='D ', copied='+', wc_rev='-'),
       'A/B_tmp/E/alpha_moved' : Item(status='A ', copied='+', wc_rev='-'),
       'A/B_tmp/E/beta'        : Item(status='  ', copied='+', wc_rev='-'),
-      'A/B_tmp/F'             : Item(status='D ', wc_rev='?'),
+      'A/B_tmp/F'             : Item(status='D ', copied='+', wc_rev='-'),
       'A/B_tmp/F_moved'       : Item(status='A ', copied='+', wc_rev='-'),
       'A/B_tmp/lambda'        : Item(status='  ', copied='+', wc_rev='-'),
     })
@@ -4445,12 +4468,11 @@ def move_dir_containing_move(sbox):
                          'A/B_tmp/lambda')
   expected_status.add({
       'A/B_moved'               : Item(status='A ', copied='+', wc_rev='-'),
-      # alpha has a revision that isn't reported by status.
       'A/B_moved/E'             : Item(status='  ', copied='+', wc_rev='-'),
-      'A/B_moved/E/alpha'       : Item(status='D ', wc_rev='?', entry_rev='1'),
+      'A/B_moved/E/alpha'       : Item(status='D ', copied='+', wc_rev='-'),
       'A/B_moved/E/alpha_moved' : Item(status='A ', copied='+', wc_rev='-'),
       'A/B_moved/E/beta'        : Item(status='  ', copied='+', wc_rev='-'),
-      'A/B_moved/F'             : Item(status='D ', wc_rev='?'),
+      'A/B_moved/F'             : Item(status='D ', copied='+', wc_rev='-'),
       'A/B_moved/F_moved'       : Item(status='A ', copied='+', wc_rev='-'),
       'A/B_moved/lambda'        : Item(status='  ', copied='+', wc_rev='-'),
     })
@@ -4769,8 +4791,7 @@ def copy_delete_undo(sbox, use_revert):
 
   # Delete a child
   svntest.main.run_svn(wc_dir, 'rm', sbox.ospath('A/B/E-copied/alpha'))
-  expected_status.tweak('A/B/E-copied/alpha', status='D ', copied=None,
-                        wc_rev='?', entry_rev='1')
+  expected_status.tweak('A/B/E-copied/alpha', status='D ')
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
   # Undo the whole copy

Modified: subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/depth_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/depth_tests.py?rev=1044847&r1=1044846&r2=1044847&view=diff
==============================================================================
--- subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/depth_tests.py (original)
+++ subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/depth_tests.py Sun Dec 12 16:43:42 2010
@@ -1062,12 +1062,12 @@ def diff_in_depthy_wc(sbox):
     "@@ -1 +1 @@\n",
     "-new text\n",
     "+This is the file 'iota'.\n",
-    "Index: \n",
+    "Index: .\n",
     "===================================================================\n",
-    "--- \t(revision 2)\n",
-    "+++ \t(working copy)\n",
+    "--- .\t(revision 2)\n",
+    "+++ .\t(working copy)\n",
     "\n",
-    "Property changes on: \n",
+    "Property changes on: .\n",
     "___________________________________________________________________\n",
     "Deleted: foo\n",
     "## -1 +0,0 ##\n",

Modified: subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/diff_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/diff_tests.py?rev=1044847&r1=1044846&r2=1044847&view=diff
==============================================================================
--- subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/diff_tests.py (original)
+++ subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/diff_tests.py Sun Dec 12 16:43:42 2010
@@ -34,6 +34,7 @@ import svntest
 # (abbreviation)
 Skip = svntest.testcase.Skip
 XFail = svntest.testcase.XFail
+Wimp = svntest.testcase.Wimp
 Item = svntest.wc.StateItem
 
 
@@ -2868,7 +2869,7 @@ def diff_with_depth(sbox):
 
   diff = [
     "\n",
-    "Property changes on: \n",
+    "Property changes on: .\n",
     "___________________________________________________________________\n",
     "Added: foo1\n",
     "## -0,0 +1 ##\n",
@@ -2892,7 +2893,7 @@ def diff_with_depth(sbox):
     "## -0,0 +1 ##\n",
     "+bar4\n"]
 
-  dot_header = make_diff_header("", "revision 1", "working copy")
+  dot_header = make_diff_header(".", "revision 1", "working copy")
   iota_header = make_diff_header('iota', "revision 1", "working copy")
   A_header = make_diff_header('A', "revision 1", "working copy")
   B_header = make_diff_header(B_path, "revision 1", "working copy")
@@ -2939,7 +2940,7 @@ def diff_with_depth(sbox):
   svntest.actions.run_and_verify_svn(None, None, [],
                                      'ci', '-m', '')
 
-  dot_header = make_diff_header("", "revision 1", "revision 2")
+  dot_header = make_diff_header(".", "revision 1", "revision 2")
   iota_header = make_diff_header('iota', "revision 1", "revision 2")
   A_header = make_diff_header('A', "revision 1", "revision 2")
   B_header = make_diff_header(B_path, "revision 1", "revision 2")
@@ -3011,12 +3012,12 @@ def diff_with_depth(sbox):
     "## -1 +1 ##\n",
     "-bar2\n",
     "+baz2\n",
-    "Index: \n",
+    "Index: .\n",
     "===================================================================\n",
-    "--- \t(revision 2)\n",
-    "+++ \t(working copy)\n",
+    "--- .\t(revision 2)\n",
+    "+++ .\t(working copy)\n",
     "\n",
-    "Property changes on: \n",
+    "Property changes on: .\n",
     "___________________________________________________________________\n",
     "Modified: foo1\n",
     "## -1 +1 ##\n",
@@ -3735,7 +3736,7 @@ def diff_git_with_props_on_dir(sbox):
 
   was_cwd = os.getcwd()
   os.chdir(wc_dir)
-  expected_output = make_git_diff_header("", "", "revision 1",
+  expected_output = make_git_diff_header(".", "", "revision 1",
                                          "revision 2",
                                          add=False, text_changes=False) + [
       "\n",
@@ -3795,7 +3796,7 @@ test_list = [ None,
               diff_weird_author,
               diff_ignore_whitespace,
               diff_ignore_eolstyle,
-              XFail(diff_in_renamed_folder),
+              diff_in_renamed_folder,
               diff_with_depth,
               diff_ignore_eolstyle_empty_lines,
               diff_backward_repos_wc_copy,

Modified: subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/entries_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/entries_tests.py?rev=1044847&r1=1044846&r2=1044847&view=diff
==============================================================================
--- subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/entries_tests.py (original)
+++ subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/entries_tests.py Sun Dec 12 16:43:42 2010
@@ -233,12 +233,9 @@ def deletion_details(sbox):
   entries = svntest.main.run_entriesdump(D2_G_path)
   check_names(entries, 'pi')
 
-  # case (1) of the DELETED nodes COPIED handling (see comment in
-  # read_entries). we are a deletion of a copied subtree. thus, extra
-  # work at commit time. thus, not COPIED.
   # oh, and this sucker has a URL, too
   validate(entries['pi'], url='%s/A/D2/G/pi' % sbox.repo_url,
-           copied=False, schedule=SCHEDULE_DELETE)
+           copied=True, schedule=SCHEDULE_DELETE)
 
   ### hmm. somehow, subtrees can be *added* over a *deleted* subtree.
   ### maybe this can happen via 'svn merge' ? ... the operations below

Modified: subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/externals_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/externals_tests.py?rev=1044847&r1=1044846&r2=1044847&view=diff
==============================================================================
--- subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/externals_tests.py (original)
+++ subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/externals_tests.py Sun Dec 12 16:43:42 2010
@@ -1007,8 +1007,7 @@ def cannot_move_or_remove_file_externals
   # Bring the working copy up to date and check that the file the file
   # external is switched to still exists.
   svntest.actions.run_and_verify_svn(None, None, [],
-                                     'up',
-                                     repo_url, wc_dir)
+                                     'up', wc_dir)
 
   open(os.path.join(wc_dir, 'A', 'D', 'gamma')).close()
 
@@ -1036,8 +1035,7 @@ def can_place_file_external_into_dir_ext
   # Bring the working copy up to date and check that the file the file
   # external is switched to still exists.
   svntest.actions.run_and_verify_svn(None, None, [],
-                                     'up',
-                                     repo_url, wc_dir)
+                                     'up', wc_dir)
 
   beta1_path = os.path.join(wc_dir, 'A', 'B', 'E', 'beta')
   beta1_contents = open(beta1_path).read()
@@ -1064,8 +1062,7 @@ def can_place_file_external_into_dir_ext
                                       None,
                                       expected_error,
                                       1,
-                                      'up',
-                                      repo_url, wc_dir)
+                                      'up', wc_dir)
 
 #----------------------------------------------------------------------
 
@@ -1082,8 +1079,7 @@ def external_into_path_with_spaces(sbox)
   change_external(wc_dir, ext)
 
   svntest.actions.run_and_verify_svn(None, None, [],
-                                     'up',
-                                     repo_url, wc_dir)
+                                     'up', wc_dir)
   probe_paths_exist([
       os.path.join(wc_dir, 'A', 'copy of D'),
       os.path.join(wc_dir, 'A', 'another copy of D'),
@@ -1334,8 +1330,7 @@ def relegate_external(sbox):
   externals_desc = '^/A/B/E        external'
   change_external(A_path, externals_desc)
   svntest.actions.run_and_verify_svn(None, None, [],
-                                     'up',
-                                     repo_url, wc_dir)
+                                     'up', wc_dir)
 
   # create another repository
   other_repo_dir, other_repo_url = sbox.add_repo_path('other')

Modified: subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/input_validation_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/input_validation_tests.py?rev=1044847&r1=1044846&r2=1044847&view=diff
==============================================================================
--- subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/input_validation_tests.py (original)
+++ subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/input_validation_tests.py Sun Dec 12 16:43:42 2010
@@ -234,6 +234,20 @@ def invalid_relocate_targets(sbox):
   run_and_verify_svn_in_wc(sbox, "svn:.*is not a local path", 'relocate',
                            "^/", "^/", "^/")
 
+# See also basic_tests.py:basic_mkdir_mix_targets(), which tests
+# the same thing the other way around.
+def invalid_mkdir_targets(sbox):
+  "invalid targets for 'mkdir'"
+  sbox.build(read_only=True)
+  run_and_verify_svn_in_wc(sbox, "svn: Cannot mix repository and working "
+                           "copy targets", 'mkdir', "folder", "^/folder")
+
+def invalid_update_targets(sbox):
+  "non-working copy paths for 'update'"
+  sbox.build(read_only=True)
+  run_and_verify_svn_in_wc(sbox, "svn:.*is not a local path", 'update',
+                           "^/")
+
 ########################################################################
 # Run the tests
 
@@ -261,6 +275,8 @@ test_list = [ None,
               invalid_patch_targets,
               invalid_switch_targets,
               invalid_relocate_targets,
+              invalid_mkdir_targets,
+              invalid_update_targets,
              ]
 
 if __name__ == '__main__':

Modified: subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/merge_tree_conflict_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/merge_tree_conflict_tests.py?rev=1044847&r1=1044846&r2=1044847&view=diff
==============================================================================
--- subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/merge_tree_conflict_tests.py (original)
+++ subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/merge_tree_conflict_tests.py Sun Dec 12 16:43:42 2010
@@ -35,6 +35,7 @@ from svntest import main, wc, verify, ac
 # (abbreviation)
 Item = wc.StateItem
 XFail = svntest.testcase.XFail
+Wimp = svntest.testcase.Wimp
 Skip = svntest.testcase.Skip
 SkipUnless = svntest.testcase.SkipUnless
 
@@ -1877,7 +1878,7 @@ def merge_replace_causes_tree_conflict2(
 test_list = [ None,
               SkipUnless(delete_file_and_dir,
                          server_has_mergeinfo),
-              SkipUnless(XFail(merge_catches_nonexistent_target),
+              SkipUnless(merge_catches_nonexistent_target,
                          server_has_mergeinfo),
               SkipUnless(merge_tree_deleted_in_target,
                          server_has_mergeinfo),

Modified: subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/svnlook_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/svnlook_tests.py?rev=1044847&r1=1044846&r2=1044847&view=diff
==============================================================================
--- subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/svnlook_tests.py (original)
+++ subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/svnlook_tests.py Sun Dec 12 16:43:42 2010
@@ -471,14 +471,14 @@ def diff_ignore_whitespace(sbox):
   # Check the output of 'svnlook diff -x --ignore-space-change' on mu.
   # It should not print anything.
   output = run_svnlook('diff', '-r2', '-x', '--ignore-space-change',
-                       repo_dir, '/A/mu')
+                       repo_dir)
   if output != []:
     raise svntest.Failure
 
   # Check the output of 'svnlook diff -x --ignore-all-space' on mu.
   # It should not print anything.
   output = run_svnlook('diff', '-r2', '-x', '--ignore-all-space',
-                       repo_dir, '/A/mu')
+                       repo_dir)
   if output != []:
     raise svntest.Failure
 
@@ -528,7 +528,7 @@ def diff_ignore_eolstyle(sbox):
 
 
     output = run_svnlook('diff', '-r', str(rev + 1), '-x',
-                         '--ignore-eol-style', repo_dir, '/A/mu')
+                         '--ignore-eol-style', repo_dir)
     rev += 1
 
     canonical_mu_path = mu_path.replace(os.path.sep, '/')
@@ -565,7 +565,7 @@ def diff_binary(sbox):
   svntest.main.run_svn(None, 'ci', '-m', 'log msg', mu_path)
 
   # Now run 'svnlook diff' and look for the "Binary files differ" message.
-  output = run_svnlook('diff', repo_dir, '/A/mu')
+  output = run_svnlook('diff', repo_dir)
   if not "(Binary files differ)\n" in output:
     raise svntest.Failure("No 'Binary files differ' indication in "
                           "'svnlook diff' output.")
@@ -637,7 +637,7 @@ def output_command(fp, cmd, opt):
   return status
 
 for (svnlook_cmd, svnlook_opt) in %s:
-  output_command(fp, svnlook_cmd, svnlook_opt.split(' '))
+  output_command(fp, svnlook_cmd, svnlook_opt.split())
 fp.close()"""
   pre_commit_hook = svntest.main.get_pre_commit_hook_path(repo_dir)
 

Modified: subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/svnrdump_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/svnrdump_tests.py?rev=1044847&r1=1044846&r2=1044847&view=diff
==============================================================================
--- subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/svnrdump_tests.py (original)
+++ subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/svnrdump_tests.py Sun Dec 12 16:43:42 2010
@@ -356,7 +356,7 @@ test_list = [ None,
               copy_bad_line_endings_dump,
               commit_a_copy_of_root_dump,
               commit_a_copy_of_root_load,
-              descend_into_replace_dump,
+              XFail(descend_into_replace_dump, svntest.main.is_fs_type_bdb),
              ]
 
 if __name__ == '__main__':

Modified: subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/svnsync_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/svnsync_tests.py?rev=1044847&r1=1044846&r2=1044847&view=diff
==============================================================================
--- subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/svnsync_tests.py (original)
+++ subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/svnsync_tests.py Sun Dec 12 16:43:42 2010
@@ -884,9 +884,8 @@ test_list = [ None,
               detect_meddling,
               Skip(basic_authz, svntest.main.is_ra_type_file),
               Skip(copy_from_unreadable_dir, svntest.main.is_ra_type_file),
-              Wimp("Needs local add below copy support in WC-NG",
-                   Skip(copy_with_mod_from_unreadable_dir,
-                        svntest.main.is_ra_type_file)),
+              Skip(copy_with_mod_from_unreadable_dir,
+                   svntest.main.is_ra_type_file),
               Skip(copy_with_mod_from_unreadable_dir_and_copy,
                    svntest.main.is_ra_type_file),
               url_encoding,

Modified: subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/svntest/actions.py
URL: http://svn.apache.org/viewvc/subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/svntest/actions.py?rev=1044847&r1=1044846&r2=1044847&view=diff
==============================================================================
--- subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/svntest/actions.py (original)
+++ subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/svntest/actions.py Sun Dec 12 16:43:42 2010
@@ -1852,7 +1852,6 @@ def inject_conflict_into_wc(sbox, state_
                                       conflicting_contents, contents,
                                       merged_rev)
   exit_code, output, errput = main.run_svn(None, "up", "-r", str(merged_rev),
-                                           sbox.repo_url + "/" + state_path,
                                            file_path)
   if expected_status:
     expected_status.tweak(state_path, wc_rev=merged_rev)

Modified: subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/svntest/main.py
URL: http://svn.apache.org/viewvc/subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/svntest/main.py?rev=1044847&r1=1044846&r2=1044847&view=diff
==============================================================================
--- subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/svntest/main.py (original)
+++ subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/svntest/main.py Sun Dec 12 16:43:42 2010
@@ -1049,6 +1049,9 @@ def is_fs_type_fsfs():
   # This assumes that fsfs is the default fs implementation.
   return options.fs_type == 'fsfs' or options.fs_type is None
 
+def is_fs_type_bdb():
+  return options.fs_type == 'bdb'
+
 def is_os_windows():
   return os.name == 'nt'
 

Modified: subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/switch_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/switch_tests.py?rev=1044847&r1=1044846&r2=1044847&view=diff
==============================================================================
--- subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/switch_tests.py (original)
+++ subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/switch_tests.py Sun Dec 12 16:43:42 2010
@@ -35,6 +35,7 @@ from svntest import verify, actions, mai
 Skip = svntest.testcase.Skip
 SkipUnless = svntest.testcase.SkipUnless
 XFail = svntest.testcase.XFail
+Wimp = svntest.testcase.Wimp
 Item = svntest.wc.StateItem
 
 from svntest.main import SVN_PROP_MERGEINFO, server_has_mergeinfo
@@ -558,10 +559,10 @@ def relocate_deleted_missing_copied(sbox
   expected_status.add({
     'A/D2'         : Item(status='A ', wc_rev='-', copied='+'),
     'A/D2/gamma'   : Item(status='  ', wc_rev='-', copied='+'),
-    'A/D2/G'       : Item(status='D ', wc_rev='?'),
-    'A/D2/G/pi'    : Item(status='D ', wc_rev='?'),
-    'A/D2/G/rho'   : Item(status='D ', wc_rev='?'),
-    'A/D2/G/tau'   : Item(status='D ', wc_rev='?'),
+    'A/D2/G'       : Item(status='D ', wc_rev='-', copied='+'),
+    'A/D2/G/pi'    : Item(status='D ', wc_rev='-', copied='+'),
+    'A/D2/G/rho'   : Item(status='D ', wc_rev='-', copied='+'),
+    'A/D2/G/tau'   : Item(status='D ', wc_rev='-', copied='+'),
     'A/D2/H'       : Item(status='  ', wc_rev='-', copied='+'),
     'A/D2/H/chi'   : Item(status='  ', wc_rev='-', copied='+'),
     'A/D2/H/omega' : Item(status='  ', wc_rev='-', copied='+'),
@@ -614,7 +615,7 @@ def relocate_deleted_missing_copied(sbox
                         'A/D2/H', 'A/D2/H/chi', 'A/D2/H/omega', 'A/D2/H/psi',
                         wc_rev='-')
   expected_status.tweak('A/D2/G', 'A/D2/G/pi', 'A/D2/G/rho', 'A/D2/G/tau',
-                        wc_rev='?')
+                        copied='+', wc_rev='-')
   svntest.actions.run_and_verify_update(wc_dir,
                                         expected_output,
                                         expected_disk,
@@ -3165,7 +3166,7 @@ test_list = [ None,
               tolerate_local_mods,
               tree_conflicts_on_switch_1_1,
               tree_conflicts_on_switch_1_2,
-              XFail(tree_conflicts_on_switch_2_1),
+              tree_conflicts_on_switch_2_1,
               tree_conflicts_on_switch_2_2,
               tree_conflicts_on_switch_3,
               single_file_relocate,

Modified: subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/update_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/update_tests.py?rev=1044847&r1=1044846&r2=1044847&view=diff
==============================================================================
--- subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/update_tests.py (original)
+++ subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/update_tests.py Sun Dec 12 16:43:42 2010
@@ -38,6 +38,7 @@ from merge_tests import set_up_branch
 Skip = svntest.testcase.Skip
 SkipUnless = svntest.testcase.SkipUnless
 XFail = svntest.testcase.XFail
+Wimp = svntest.testcase.Wimp
 Item = svntest.wc.StateItem
 exp_noop_up_out = svntest.actions.expected_noop_update_output
 
@@ -5397,7 +5398,7 @@ test_list = [ None,
               restarted_update_should_delete_dir_prop,
               tree_conflicts_on_update_1_1,
               tree_conflicts_on_update_1_2,
-              XFail(tree_conflicts_on_update_2_1),
+              tree_conflicts_on_update_2_1,
               tree_conflicts_on_update_2_2,
               XFail(tree_conflicts_on_update_2_3),
               tree_conflicts_on_update_3,

Modified: subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/upgrade_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/upgrade_tests.py?rev=1044847&r1=1044846&r2=1044847&view=diff
==============================================================================
--- subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/upgrade_tests.py (original)
+++ subversion/branches/diff-optimizations-bytes/subversion/tests/cmdline/upgrade_tests.py Sun Dec 12 16:43:42 2010
@@ -672,7 +672,22 @@ def dirs_only_upgrade(sbox):
       })
   run_and_verify_status_no_server(sbox.wc_dir, expected_status)
 
-
+def read_tree_conflict_data(sbox, path):
+  dot_svn = svntest.main.get_admin_name()
+  db = svntest.sqlite3.connect(os.path.join(sbox.wc_dir, dot_svn, 'wc.db'))
+  for row in db.execute("select tree_conflict_data from actual_node "
+                        "where tree_conflict_data is not null "
+                        "and local_relpath = '%s'" % path):
+    return
+  raise svntest.Failure("conflict expected for '%s'" % path)
+  
+def no_actual_node(sbox, path):
+  dot_svn = svntest.main.get_admin_name()
+  db = svntest.sqlite3.connect(os.path.join(sbox.wc_dir, dot_svn, 'wc.db'))
+  for row in db.execute("select 1 from actual_node "
+                        "where local_relpath = '%s'" % path):
+    raise svntest.Failure("no actual node expected for '%s'" % path)
+  
 def upgrade_tree_conflict_data(sbox):
   "upgrade tree conflict data (f20->f21)"
 
@@ -688,7 +703,31 @@ def upgrade_tree_conflict_data(sbox):
   expected_status.tweak('A/D/G/rho', status='A ', copied='+',
                         treeconflict='C', wc_rev='-')
 
-  run_and_verify_status_no_server(wc_dir, expected_status)
+  # Look inside pre-upgrade database
+  read_tree_conflict_data(sbox, 'A/D/G')
+  no_actual_node(sbox, 'A/D/G/pi')
+  no_actual_node(sbox, 'A/D/G/rho')
+  no_actual_node(sbox, 'A/D/G/tau')
+
+  # While the upgrade from f20 to f21 will work the upgrade from f22
+  # to f23 will not, since working nodes are present, so the
+  # auto-upgrade will fail.  If this happens we cannot use the
+  # Subversion libraries to query the working copy.
+  exit_code, output, errput = svntest.main.run_svn('format 22', 'st', wc_dir)
+
+  if not exit_code:
+    run_and_verify_status_no_server(wc_dir, expected_status)
+  else:
+    if not svntest.verify.RegexOutput('.*format 22 with WORKING nodes.*',
+                                      match_all=False).matches(errput):
+      raise svntest.Failure()
+
+  # Look insde post-upgrade database
+  read_tree_conflict_data(sbox, 'A/D/G/pi')
+  read_tree_conflict_data(sbox, 'A/D/G/rho')
+  read_tree_conflict_data(sbox, 'A/D/G/tau')
+  # no_actual_node(sbox, 'A/D/G')  ### not removed but should be?
+
 
 def delete_in_copy_upgrade(sbox):
   "upgrade a delete within a copy"
@@ -697,17 +736,20 @@ def delete_in_copy_upgrade(sbox):
   wc_dir = sbox.wc_dir
   replace_sbox_with_tarfile(sbox, 'delete-in-copy.tar.bz2')
 
-  # Doesn't work, creates spurious base nodes for the copy
   svntest.actions.run_and_verify_svn(None, None, [],
                                      'upgrade', sbox.wc_dir)
 
+  # This doesn't fail with SVN_WC__OP_DEPTH but doesn't do the right
+  # thing either: B-copied looks like a copy where E and F are
+  # not-present rather than deleted.
+
   expected_status = svntest.actions.get_virginal_state(sbox.wc_dir, 1)
   expected_status.add({
       'A/B-copied'         : Item(status='A ', copied='+', wc_rev='-'),
       'A/B-copied/lambda'  : Item(status='  ', copied='+', wc_rev='-'),
-      'A/B-copied/E'       : Item(status='D ', wc_rev='?'),
-      'A/B-copied/E/alpha' : Item(status='D ', wc_rev='?'),
-      'A/B-copied/E/beta'  : Item(status='D ', wc_rev='?'),
+      'A/B-copied/E'       : Item(status='D ', copied='+', wc_rev='-'),
+      'A/B-copied/E/alpha' : Item(status='D ', copied='+', wc_rev='-'),
+      'A/B-copied/E/beta'  : Item(status='D ', copied='+', wc_rev='-'),
       'A/B-copied/F'       : Item(status='  ', copied='+', wc_rev='-'),
       })
   run_and_verify_status_no_server(sbox.wc_dir, expected_status)

Modified: subversion/branches/diff-optimizations-bytes/subversion/tests/libsvn_fs/fs-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/diff-optimizations-bytes/subversion/tests/libsvn_fs/fs-test.c?rev=1044847&r1=1044846&r2=1044847&view=diff
==============================================================================
--- subversion/branches/diff-optimizations-bytes/subversion/tests/libsvn_fs/fs-test.c (original)
+++ subversion/branches/diff-optimizations-bytes/subversion/tests/libsvn_fs/fs-test.c Sun Dec 12 16:43:42 2010
@@ -4253,7 +4253,8 @@ verify_checksum(const svn_test_opts_t *o
      against our idea of its checksum.  They should be the same. */
 
   str = svn_stringbuf_create("My text editor charges me rent.", pool);
-  svn_checksum(&expected_checksum, svn_checksum_md5, str->data, str->len, pool);
+  SVN_ERR(svn_checksum(&expected_checksum, svn_checksum_md5, str->data,
+                       str->len, pool));
 
   SVN_ERR(svn_test__create_fs(&fs, "test-repo-verify-checksum",
                               opts, pool));

Modified: subversion/branches/diff-optimizations-bytes/subversion/tests/libsvn_subr/auth-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/diff-optimizations-bytes/subversion/tests/libsvn_subr/auth-test.c?rev=1044847&r1=1044846&r2=1044847&view=diff
==============================================================================
--- subversion/branches/diff-optimizations-bytes/subversion/tests/libsvn_subr/auth-test.c (original)
+++ subversion/branches/diff-optimizations-bytes/subversion/tests/libsvn_subr/auth-test.c Sun Dec 12 16:43:42 2010
@@ -34,7 +34,8 @@ test_platform_specific_auth_providers(ap
   int number_of_providers = 0;
 
   /* Test non-available auth provider */
-  svn_auth_get_platform_specific_provider(&provider, "fake", "fake", pool);
+  SVN_ERR(svn_auth_get_platform_specific_provider(&provider, "fake", "fake",
+                                                  pool));
 
   if (provider)
     return svn_error_createf
@@ -44,7 +45,8 @@ test_platform_specific_auth_providers(ap
 
   /* Make sure you get appropriate number of providers when retrieving
      all auth providers */
-  svn_auth_get_platform_specific_client_providers(&providers, NULL, pool);
+  SVN_ERR(svn_auth_get_platform_specific_client_providers(&providers, NULL,
+                                                          pool));
 
 #ifdef SVN_HAVE_GNOME_KEYRING
   number_of_providers += 2;

Modified: subversion/branches/diff-optimizations-bytes/subversion/tests/libsvn_wc/db-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/diff-optimizations-bytes/subversion/tests/libsvn_wc/db-test.c?rev=1044847&r1=1044846&r2=1044847&view=diff
==============================================================================
--- subversion/branches/diff-optimizations-bytes/subversion/tests/libsvn_wc/db-test.c (original)
+++ subversion/branches/diff-optimizations-bytes/subversion/tests/libsvn_wc/db-test.c Sun Dec 12 16:43:42 2010
@@ -181,6 +181,11 @@ static const char * const TESTING_DATA =
   "  1, 'I', 1, '', 2, 'some/dir', 2, 'normal',"
   "  0, null, 'dir', '()', 'immediates', null, null, 2, " TIME_2s ", '" AUTHOR_2 "',"
   "  null, null, null, null);"
+
+   /* I'm not sure what the working J is supposed to represent.  It
+      replaces the base J, but is it a copy or not?  It has no
+      copyfrom, but nodes like J/J-e appear to be deleted which
+      implies they are children of a copied J. */
   "insert into nodes values ("
   "  1, 'J', 1, '', null, null, null, 'normal',"
   "  0, null, 'dir', '()', 'immediates', null, null, null, null, null,"
@@ -201,6 +206,7 @@ static const char * const TESTING_DATA =
   "  1, 'J/J-b/J-b-b', 2, 'J/J-b', null, null, 2, 'normal',"
   "  0, null, 'file', '()', null, null, null, null, null, null,"
   "  null, null, null, null);"
+#ifndef SVN_WC__OP_DEPTH
   "insert into nodes values ("
   "  1, 'J/J-c', 1, 'J', null, null, null, 'not-present',"
   "  0, null, 'dir', '()', null, null, null, null, null, null,"
@@ -209,10 +215,29 @@ static const char * const TESTING_DATA =
   "  1, 'J/J-c/J-c-a', 1, 'J/J-c', null, null, null, 'not-present',"
   "  0, null, 'dir', '()', null, null, null, null, null, null,"
   "  null, null, null, null);"
+#else
+  "insert into nodes values ("
+  "  1, 'J/J-c', 1, 'J', null, null, null, 'normal',"
+  "  0, null, 'dir', '()', null, null, null, null, null, null,"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'J/J-c/J-c-a', 1, 'J/J-c', null, null, null, 'normal',"
+  "  0, null, 'dir', '()', null, null, null, null, null, null,"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'J/J-c', 2, 'J', null, null, null, 'base-deleted',"
+  "  0, null, 'dir', '()', null, null, null, null, null, null,"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'J/J-c/J-c-a', 2, 'J/J-c', null, null, null, 'base-deleted',"
+  "  0, null, 'dir', '()', null, null, null, null, null, null,"
+  "  null, null, null, null);"
+#endif
   "insert into nodes values ("
   "  1, 'J/J-d', 2, 'J', 2, 'moved/file', 2, 'normal',"
   "  1, null, 'file', '()', null, '$md5 $" MD5_1 "', null, 2, " TIME_2s ", '" AUTHOR_2 "',"
   "  10, null, null, null);"
+#ifndef SVN_WC__OP_DEPTH
   "insert into nodes values ("
   "  1, 'J/J-e', 1, 'J', null, null, null, 'not-present',"
   "  0, 'other/place', 'dir', '()', null, null, null, null, null, null,"
@@ -225,6 +250,32 @@ static const char * const TESTING_DATA =
   "  1, 'J/J-e/J-e-b', 1, 'J/J-e', null, null, null, 'not-present',"
   "  0, null, 'dir', '()', null, null, null, null, null, null,"
   "  null, null, null, null);"
+#else
+  "insert into nodes values ("
+  "  1, 'J/J-e', 1, 'J', null, null, null, 'normal',"
+  "  0, 'other/place', 'dir', '()', null, null, null, null, null, null,"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'J/J-e/J-e-a', 1, 'J/J-e', null, null, null, 'normal',"
+  "  0, null, 'file', '()', null, null, null, null, null, null,"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'J/J-e/J-e-b', 1, 'J/J-e', null, null, null, 'normal',"
+  "  0, null, 'dir', '()', null, null, null, null, null, null,"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'J/J-e', 2, 'J', null, null, null, 'base-deleted',"
+  "  0, 'other/place', 'dir', '()', null, null, null, null, null, null,"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'J/J-e/J-e-a', 2, 'J/J-e', null, null, null, 'base-deleted',"
+  "  0, null, 'file', '()', null, null, null, null, null, null,"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'J/J-e/J-e-b', 2, 'J/J-e', null, null, null, 'base-deleted',"
+  "  0, null, 'dir', '()', null, null, null, null, null, null,"
+  "  null, null, null, null);"
+#endif
   "insert into nodes values ("
   "  1, 'J/J-e/J-e-b/Jeba', 1, 'J/J-e/J-e-b', null, null, null, 'base-deleted',"
   "  0, null, 'file', '()', null, null, null, null, null, null,"
@@ -253,6 +304,7 @@ static const char * const TESTING_DATA =
   "  1, 'L', 1, '', null, null, null, 'normal',"
   "  0, null, 'dir', '()', 'immediates', null, null, null, null, null,"
   "  null, null, null, null);"
+#ifndef SVN_WC__OP_DEPTH
   "insert into nodes values ("
   "  1, 'L/L-a', 1, 'L', null, null, null, 'not-present',"
   "  0, null, 'dir', '()', 'immediates', null, null, null, null, null,"
@@ -261,6 +313,24 @@ static const char * const TESTING_DATA =
   "  1, 'L/L-a/L-a-a', 1, 'L', null, null, null, 'not-present',"
   "  0, null, 'dir', '()', 'immediates', null, null, null, null, null,"
   "  null, null, null, null);"
+#else
+  "insert into nodes values ("
+  "  1, 'L/L-a', 1, 'L', null, null, null, 'normal',"
+  "  0, null, 'dir', '()', 'immediates', null, null, null, null, null,"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'L/L-a/L-a-a', 1, 'L', null, null, null, 'normal',"
+  "  0, null, 'dir', '()', 'immediates', null, null, null, null, null,"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'L/L-a', 2, 'L', null, null, null, 'base-deleted',"
+  "  0, null, 'dir', '()', 'immediates', null, null, null, null, null,"
+  "  null, null, null, null);"
+  "insert into nodes values ("
+  "  1, 'L/L-a/L-a-a', 2, 'L', null, null, null, 'base-deleted',"
+  "  0, null, 'dir', '()', 'immediates', null, null, null, null, null,"
+  "  null, null, null, null);"
+#endif
    "insert into actual_node values ("
    "  1, 'I', '', null, null, null, null, null, 'changelist', null, "
    "  null, null, null, null, null);"
@@ -1032,7 +1102,6 @@ test_scan_deletion(apr_pool_t *pool)
   const char *local_abspath;
   svn_wc__db_t *db;
   const char *base_del_abspath;
-  svn_boolean_t base_replaced;
   const char *work_del_abspath;
   const char *moved_to_abspath;
 
@@ -1043,14 +1112,12 @@ test_scan_deletion(apr_pool_t *pool)
   /* Node was moved elsewhere. */
   SVN_ERR(svn_wc__db_scan_deletion(
             &base_del_abspath,
-            &base_replaced,
             &moved_to_abspath,
             &work_del_abspath,
             db, svn_dirent_join(local_abspath, "J/J-e", pool),
             pool, pool));
   SVN_TEST_ASSERT(validate_abspath(local_abspath, "J/J-e",
                                    base_del_abspath, pool));
-  SVN_TEST_ASSERT(base_replaced);
   SVN_TEST_ASSERT(validate_abspath(local_abspath, "other/place",
                                    moved_to_abspath, pool));
   SVN_TEST_ASSERT(validate_abspath(local_abspath, "J/J-e",
@@ -1059,14 +1126,12 @@ test_scan_deletion(apr_pool_t *pool)
   /* Node was moved elsewhere (child of operation root). */
   SVN_ERR(svn_wc__db_scan_deletion(
             &base_del_abspath,
-            &base_replaced,
             &moved_to_abspath,
             &work_del_abspath,
             db, svn_dirent_join(local_abspath, "J/J-e/J-e-a", pool),
             pool, pool));
   SVN_TEST_ASSERT(validate_abspath(local_abspath, "J/J-e",
                                    base_del_abspath, pool));
-  SVN_TEST_ASSERT(base_replaced);
   SVN_TEST_ASSERT(validate_abspath(local_abspath, "other/place",
                                    moved_to_abspath, pool));
   SVN_TEST_ASSERT(validate_abspath(local_abspath, "J/J-e",
@@ -1075,7 +1140,6 @@ test_scan_deletion(apr_pool_t *pool)
   /* Root of delete. Parent is a WORKING node. */
   SVN_ERR(svn_wc__db_scan_deletion(
             &base_del_abspath,
-            &base_replaced,
             &moved_to_abspath,
             &work_del_abspath,
             db, svn_dirent_join(local_abspath, "J/J-c", pool),
@@ -1083,7 +1147,6 @@ test_scan_deletion(apr_pool_t *pool)
   /* Implicit delete of "J" (via replacement).  */
   SVN_TEST_ASSERT(validate_abspath(local_abspath, "J",
                                    base_del_abspath, pool));
-  SVN_TEST_ASSERT(base_replaced);
   SVN_TEST_ASSERT(moved_to_abspath == NULL);
   SVN_TEST_ASSERT(validate_abspath(local_abspath, "J/J-c",
                                    work_del_abspath, pool));
@@ -1091,7 +1154,6 @@ test_scan_deletion(apr_pool_t *pool)
   /* Child of a deleted root. */
   SVN_ERR(svn_wc__db_scan_deletion(
             &base_del_abspath,
-            &base_replaced,
             &moved_to_abspath,
             &work_del_abspath,
             db, svn_dirent_join(local_abspath, "J/J-c/J-c-a", pool),
@@ -1099,7 +1161,6 @@ test_scan_deletion(apr_pool_t *pool)
   /* Implicit delete of "J" (via replacement).  */
   SVN_TEST_ASSERT(validate_abspath(local_abspath, "J",
                                    base_del_abspath, pool));
-  SVN_TEST_ASSERT(base_replaced);
   SVN_TEST_ASSERT(moved_to_abspath == NULL);
   SVN_TEST_ASSERT(validate_abspath(local_abspath, "J/J-c",
                                    work_del_abspath, pool));
@@ -1107,23 +1168,30 @@ test_scan_deletion(apr_pool_t *pool)
   /* Base-deleted tree extending past deleted WORKING subtree.  */
   SVN_ERR(svn_wc__db_scan_deletion(
             &base_del_abspath,
-            &base_replaced,
             &moved_to_abspath,
             &work_del_abspath,
             db, svn_dirent_join(local_abspath, "J/J-e/J-e-b/Jeba", pool),
             pool, pool));
+  /* ### I don't understand this.  "J/J-e/J-e-b/Jeba" is a deleted
+     base node that is not overlayed by the replacement rooted at "J".
+     Why does base_del_abspath refer to "J-e"?  */
   SVN_TEST_ASSERT(validate_abspath(local_abspath, "J/J-e",
                                    base_del_abspath, pool));
-  SVN_TEST_ASSERT(base_replaced);
   SVN_TEST_ASSERT(validate_abspath(local_abspath, "other/place",
                                    moved_to_abspath, pool));
+#ifndef SVN_WC__OP_DEPTH
+  /* ### I don't understand this.  "J/J-e/J-e-b/Jeba" is a deleted
+     base node that is not overlayed by the replacement rooted at "J".
+     Why is work_del_abspath not NULL?  */
   SVN_TEST_ASSERT(validate_abspath(local_abspath, "J/J-e",
                                    work_del_abspath, pool));
+#else
+  SVN_TEST_ASSERT(work_del_abspath == NULL);
+#endif
 
   /* Base-deleted tree extending past added WORKING tree.  */
   SVN_ERR(svn_wc__db_scan_deletion(
             &base_del_abspath,
-            &base_replaced,
             &moved_to_abspath,
             &work_del_abspath,
             db, svn_dirent_join(local_abspath, "J/J-f/J-f-a", pool),
@@ -1131,49 +1199,42 @@ test_scan_deletion(apr_pool_t *pool)
   /* Implicit delete of "J" (via replacement).  */
   SVN_TEST_ASSERT(validate_abspath(local_abspath, "J",
                                    base_del_abspath, pool));
-  SVN_TEST_ASSERT(base_replaced);
   SVN_TEST_ASSERT(moved_to_abspath == NULL);
   SVN_TEST_ASSERT(work_del_abspath == NULL);
 
   /* Root of delete. Parent is a BASE node. */
   SVN_ERR(svn_wc__db_scan_deletion(
             &base_del_abspath,
-            &base_replaced,
             &moved_to_abspath,
             &work_del_abspath,
             db, svn_dirent_join(local_abspath, "K", pool),
             pool, pool));
   SVN_TEST_ASSERT(validate_abspath(local_abspath, "K",
                                    base_del_abspath, pool));
-  SVN_TEST_ASSERT(!base_replaced);
   SVN_TEST_ASSERT(moved_to_abspath == NULL);
   SVN_TEST_ASSERT(work_del_abspath == NULL);
 
   /* Base-deleted tree. Start below root.  */
   SVN_ERR(svn_wc__db_scan_deletion(
             &base_del_abspath,
-            &base_replaced,
             &moved_to_abspath,
             &work_del_abspath,
             db, svn_dirent_join(local_abspath, "K/K-a", pool),
             pool, pool));
   SVN_TEST_ASSERT(validate_abspath(local_abspath, "K",
                                    base_del_abspath, pool));
-  SVN_TEST_ASSERT(!base_replaced);
   SVN_TEST_ASSERT(moved_to_abspath == NULL);
   SVN_TEST_ASSERT(work_del_abspath == NULL);
 
   /* Base-deleted tree via move.  */
   SVN_ERR(svn_wc__db_scan_deletion(
             &base_del_abspath,
-            &base_replaced,
             &moved_to_abspath,
             &work_del_abspath,
             db, svn_dirent_join(local_abspath, "K/K-b", pool),
             pool, pool));
   SVN_TEST_ASSERT(validate_abspath(local_abspath, "K/K-b",
                                    base_del_abspath, pool));
-  SVN_TEST_ASSERT(!base_replaced);
   SVN_TEST_ASSERT(validate_abspath(local_abspath, "moved/away",
                                    moved_to_abspath, pool));
   SVN_TEST_ASSERT(work_del_abspath == NULL);
@@ -1181,13 +1242,11 @@ test_scan_deletion(apr_pool_t *pool)
   /* Subtree deletion of added tree. Start at child.  */
   SVN_ERR(svn_wc__db_scan_deletion(
             &base_del_abspath,
-            &base_replaced,
             &moved_to_abspath,
             &work_del_abspath,
             db, svn_dirent_join(local_abspath, "L/L-a/L-a-a", pool),
             pool, pool));
   SVN_TEST_ASSERT(base_del_abspath == NULL);
-  SVN_TEST_ASSERT(!base_replaced);
   SVN_TEST_ASSERT(moved_to_abspath == NULL);
   SVN_TEST_ASSERT(validate_abspath(local_abspath, "L/L-a",
                                    work_del_abspath, pool));
@@ -1195,13 +1254,11 @@ test_scan_deletion(apr_pool_t *pool)
   /* Subtree deletion of added tree. Start at root.  */
   SVN_ERR(svn_wc__db_scan_deletion(
             &base_del_abspath,
-            &base_replaced,
             &moved_to_abspath,
             &work_del_abspath,
             db, svn_dirent_join(local_abspath, "L/L-a", pool),
             pool, pool));
   SVN_TEST_ASSERT(base_del_abspath == NULL);
-  SVN_TEST_ASSERT(!base_replaced);
   SVN_TEST_ASSERT(moved_to_abspath == NULL);
   SVN_TEST_ASSERT(validate_abspath(local_abspath, "L/L-a",
                                    work_del_abspath, pool));
@@ -1209,13 +1266,11 @@ test_scan_deletion(apr_pool_t *pool)
   /* Root of delete, parent converted to BASE during post-commit. */
   SVN_ERR(svn_wc__db_scan_deletion(
             &base_del_abspath,
-            &base_replaced,
             &moved_to_abspath,
             &work_del_abspath,
             db, svn_dirent_join(local_abspath, "M/M-a", pool),
             pool, pool));
   SVN_TEST_ASSERT(base_del_abspath == NULL);
-  SVN_TEST_ASSERT(!base_replaced);
   SVN_TEST_ASSERT(moved_to_abspath == NULL);
   SVN_TEST_ASSERT(validate_abspath(local_abspath, "M/M-a",
                                    work_del_abspath, pool));

Modified: subversion/branches/diff-optimizations-bytes/subversion/tests/libsvn_wc/op-depth-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/diff-optimizations-bytes/subversion/tests/libsvn_wc/op-depth-test.c?rev=1044847&r1=1044846&r2=1044847&view=diff
==============================================================================
--- subversion/branches/diff-optimizations-bytes/subversion/tests/libsvn_wc/op-depth-test.c (original)
+++ subversion/branches/diff-optimizations-bytes/subversion/tests/libsvn_wc/op-depth-test.c Sun Dec 12 16:43:42 2010
@@ -938,9 +938,12 @@ test_delete_of_copies(const svn_test_opt
                          FALSE, TRUE, NULL, NULL, NULL, NULL, pool));
   {
     nodes_row_t rows[] = {
-      { 2, "A/B-copied/E",       "not-present",       1, "A/B/E" },
-      { 2, "A/B-copied/E/alpha", "not-present",       1, "A/B/E/alpha" },
-      { 2, "A/B-copied/E/beta",  "not-present",       1, "A/B/E/beta" },
+      { 2, "A/B-copied/E",       "normal",       1, "A/B/E" },
+      { 2, "A/B-copied/E/alpha", "normal",       1, "A/B/E/alpha" },
+      { 2, "A/B-copied/E/beta",  "normal",       1, "A/B/E/beta" },
+      { 3, "A/B-copied/E",       "base-deleted", NO_COPY_FROM },
+      { 3, "A/B-copied/E/alpha", "base-deleted", NO_COPY_FROM },
+      { 3, "A/B-copied/E/beta",  "base-deleted", NO_COPY_FROM },
       { 0 }
     };
     SVN_ERR(check_db_rows(&b, "A/B-copied/E", rows));
@@ -949,13 +952,15 @@ test_delete_of_copies(const svn_test_opt
   SVN_ERR(wc_copy(&b, "A/D/G", "A/B-copied/E"));
   {
     nodes_row_t rows[] = {
-      { 2, "A/B-copied/E",       "not-present",       1, "A/B/E" },
-      { 2, "A/B-copied/E/alpha", "not-present",       1, "A/B/E/alpha" },
-      { 2, "A/B-copied/E/beta",  "not-present",       1, "A/B/E/beta" },
-      { 3, "A/B-copied/E",       "normal",            1, "A/D/G" },
-      { 3, "A/B-copied/E/pi",    "normal",            1, "A/D/G/pi" },
-      { 3, "A/B-copied/E/rho",   "normal",            1, "A/D/G/rho" },
-      { 3, "A/B-copied/E/tau",   "normal",            1, "A/D/G/tau" },
+      { 2, "A/B-copied/E",       "normal",       1, "A/B/E" },
+      { 2, "A/B-copied/E/alpha", "normal",       1, "A/B/E/alpha" },
+      { 2, "A/B-copied/E/beta",  "normal",       1, "A/B/E/beta" },
+      { 3, "A/B-copied/E",       "normal",       1, "A/D/G" },
+      { 3, "A/B-copied/E/alpha", "base-deleted", NO_COPY_FROM },
+      { 3, "A/B-copied/E/beta",  "base-deleted", NO_COPY_FROM },
+      { 3, "A/B-copied/E/pi",    "normal",       1, "A/D/G/pi" },
+      { 3, "A/B-copied/E/rho",   "normal",       1, "A/D/G/rho" },
+      { 3, "A/B-copied/E/tau",   "normal",       1, "A/D/G/tau" },
       { 0 }
     };
     SVN_ERR(check_db_rows(&b, "A/B-copied/E", rows));
@@ -965,13 +970,16 @@ test_delete_of_copies(const svn_test_opt
                          FALSE, TRUE, NULL, NULL, NULL, NULL, pool));
   {
     nodes_row_t rows[] = {
-      { 2, "A/B-copied/E",       "not-present",       1, "A/B/E" },
-      { 2, "A/B-copied/E/alpha", "not-present",       1, "A/B/E/alpha" },
-      { 2, "A/B-copied/E/beta",  "not-present",       1, "A/B/E/beta" },
-      { 3, "A/B-copied/E",       "normal",            1, "A/D/G" },
-      { 3, "A/B-copied/E/pi",    "normal",            1, "A/D/G/pi" },
-      { 3, "A/B-copied/E/rho",   "not-present",       1, "A/D/G/rho" },
-      { 3, "A/B-copied/E/tau",   "normal",            1, "A/D/G/tau" },
+      { 2, "A/B-copied/E",       "normal",       1, "A/B/E" },
+      { 2, "A/B-copied/E/alpha", "normal",       1, "A/B/E/alpha" },
+      { 2, "A/B-copied/E/beta",  "normal",       1, "A/B/E/beta" },
+      { 3, "A/B-copied/E",       "normal",       1, "A/D/G" },
+      { 3, "A/B-copied/E/alpha", "base-deleted", NO_COPY_FROM },
+      { 3, "A/B-copied/E/beta",  "base-deleted", NO_COPY_FROM },
+      { 3, "A/B-copied/E/pi",    "normal",       1, "A/D/G/pi" },
+      { 3, "A/B-copied/E/rho",   "normal",       1, "A/D/G/rho" },
+      { 3, "A/B-copied/E/tau",   "normal",       1, "A/D/G/tau" },
+      { 4, "A/B-copied/E/rho",   "base-deleted", NO_COPY_FROM },
       { 0 }
     };
     SVN_ERR(check_db_rows(&b, "A/B-copied/E", rows));
@@ -981,9 +989,12 @@ test_delete_of_copies(const svn_test_opt
                          FALSE, TRUE, NULL, NULL, NULL, NULL, pool));
   {
     nodes_row_t rows[] = {
-      { 2, "A/B-copied/E",       "not-present",       1, "A/B/E" },
-      { 2, "A/B-copied/E/alpha", "not-present",       1, "A/B/E/alpha" },
-      { 2, "A/B-copied/E/beta",  "not-present",       1, "A/B/E/beta" },
+      { 2, "A/B-copied/E",       "normal",       1, "A/B/E" },
+      { 2, "A/B-copied/E/alpha", "normal",       1, "A/B/E/alpha" },
+      { 2, "A/B-copied/E/beta",  "normal",       1, "A/B/E/beta" },
+      { 3, "A/B-copied/E",       "base-deleted", NO_COPY_FROM },
+      { 3, "A/B-copied/E/alpha", "base-deleted", NO_COPY_FROM },
+      { 3, "A/B-copied/E/beta",  "base-deleted", NO_COPY_FROM },
       { 0 }
     };
     SVN_ERR(check_db_rows(&b, "A/B-copied/E", rows));
@@ -995,7 +1006,8 @@ test_delete_of_copies(const svn_test_opt
                          FALSE, TRUE, NULL, NULL, NULL, NULL, pool));
   {
     nodes_row_t rows[] = {
-      { 3, "A/B-copied/E/F", "not-present",       1, "A/B/F" },
+      { 3, "A/B-copied/E/F", "normal",       1, "A/B/F" },
+      { 4, "A/B-copied/E/F", "base-deleted", NO_COPY_FROM },
       { 0 }
     };
     SVN_ERR(check_db_rows(&b, "A/B-copied/E/F", rows));
@@ -1750,49 +1762,195 @@ test_mixed_rev_copy(const svn_test_opts_
   return SVN_NO_ERROR;
 }
 
+static svn_error_t *
+test_delete_of_replace(const svn_test_opts_t *opts, apr_pool_t *pool)
+{
+  wc_baton_t b;
+
+  b.pool = pool;
+  SVN_ERR(svn_test__create_repos_and_wc(&b.repos_url, &b.wc_abspath,
+                                        "delete_of_replace", opts, pool));
+  SVN_ERR(svn_wc_context_create(&b.wc_ctx, NULL, pool, pool));
+  SVN_ERR(wc_mkdir(&b, "A"));
+  SVN_ERR(wc_mkdir(&b, "A/B"));
+  SVN_ERR(wc_mkdir(&b, "A/B/C"));
+  SVN_ERR(wc_mkdir(&b, "A/B/C/F"));
+  SVN_ERR(wc_mkdir(&b, "A/B/C/F/K"));
+  SVN_ERR(wc_mkdir(&b, "A/B/C/G"));
+  SVN_ERR(wc_mkdir(&b, "A/B/C/G/K"));
+  SVN_ERR(wc_commit(&b, ""));
+  SVN_ERR(wc_update(&b, "", 1));
+
+  SVN_ERR(wc_copy(&b, "A", "X"));
+  SVN_ERR(wc_move(&b, "X/B/C/F", "X/B/C/H"));
+  SVN_ERR(wc_commit(&b, ""));
+  SVN_ERR(wc_update(&b, "", 2));
+
+  SVN_ERR(wc_delete(&b, "A/B"));
+  SVN_ERR(wc_copy(&b, "X/B", "A/B"));
+  {
+    nodes_row_t rows[] = {
+      { 0, "A",         "normal",       2, "A" },
+      { 0, "A/B",       "normal",       2, "A/B" },
+      { 0, "A/B/C",     "normal",       2, "A/B/C" },
+      { 0, "A/B/C/F",   "normal",       2, "A/B/C/F" },
+      { 0, "A/B/C/F/K", "normal",       2, "A/B/C/F/K" },
+      { 0, "A/B/C/G",   "normal",       2, "A/B/C/G" },
+      { 0, "A/B/C/G/K", "normal",       2, "A/B/C/G/K" },
+      { 2, "A/B",       "normal",       2, "X/B" },
+      { 2, "A/B/C",     "normal",       2, "X/B/C" },
+      { 2, "A/B/C/F",   "base-deleted", NO_COPY_FROM },
+      { 2, "A/B/C/F/K", "base-deleted", NO_COPY_FROM },
+      { 2, "A/B/C/G",   "normal",       2, "X/B/C/G" },
+      { 2, "A/B/C/G/K", "normal",       2, "X/B/C/G/K" },
+      { 2, "A/B/C/H",   "normal",       2, "X/B/C/H" },
+      { 2, "A/B/C/H/K", "normal",       2, "X/B/C/H/K" },
+      { 0 }
+    };
+    SVN_ERR(check_db_rows(&b, "A", rows));
+  }
+
+  SVN_ERR(wc_delete(&b, "A/B"));
+  {
+    nodes_row_t rows[] = {
+      { 0, "A",         "normal",       2, "A" },
+      { 0, "A/B",       "normal",       2, "A/B" },
+      { 0, "A/B/C",     "normal",       2, "A/B/C" },
+      { 0, "A/B/C/F",   "normal",       2, "A/B/C/F" },
+      { 0, "A/B/C/F/K", "normal",       2, "A/B/C/F/K" },
+      { 0, "A/B/C/G",   "normal",       2, "A/B/C/G" },
+      { 0, "A/B/C/G/K", "normal",       2, "A/B/C/G/K" },
+      { 2, "A/B",       "base-deleted", NO_COPY_FROM },
+      { 2, "A/B/C",     "base-deleted", NO_COPY_FROM },
+      { 2, "A/B/C/F",   "base-deleted", NO_COPY_FROM },
+      { 2, "A/B/C/F/K", "base-deleted", NO_COPY_FROM },
+      { 2, "A/B/C/G",   "base-deleted", NO_COPY_FROM },
+      { 2, "A/B/C/G/K", "base-deleted", NO_COPY_FROM },
+      { 0 }
+    };
+    SVN_ERR(check_db_rows(&b, "A", rows));
+  }
+
+  return SVN_NO_ERROR;
+}
+
+static svn_error_t *
+test_del_replace_not_present(const svn_test_opts_t *opts, apr_pool_t *pool)
+{
+  wc_baton_t b;
+
+  b.pool = pool;
+  SVN_ERR(svn_test__create_repos_and_wc(&b.repos_url, &b.wc_abspath,
+                                        "del_replace_not_present", opts, pool));
+  SVN_ERR(svn_wc_context_create(&b.wc_ctx, NULL, pool, pool));
+  SVN_ERR(wc_mkdir(&b, "A"));
+  SVN_ERR(wc_mkdir(&b, "A/B"));
+  SVN_ERR(wc_mkdir(&b, "A/B/X"));
+  SVN_ERR(wc_mkdir(&b, "A/B/Y"));
+  SVN_ERR(wc_mkdir(&b, "A/B/Z"));
+  SVN_ERR(wc_commit(&b, ""));
+
+  SVN_ERR(wc_copy(&b, "A", "X"));
+  SVN_ERR(wc_mkdir(&b, "X/B/W"));
+  SVN_ERR(wc_commit(&b, ""));
+
+  SVN_ERR(wc_update(&b, "", 2));
+  SVN_ERR(wc_update(&b, "A/B/X", 0));
+  SVN_ERR(wc_update(&b, "A/B/Y", 0));
+  SVN_ERR(wc_update(&b, "X/B/W", 0));
+  SVN_ERR(wc_update(&b, "X/B/Y", 0));
+  SVN_ERR(wc_update(&b, "X/B/Z", 0));
+
+  SVN_ERR(wc_delete(&b, "A"));
+  {
+    nodes_row_t rows[] = {
+      { 0, "A",         "normal",       2, "A" },
+      { 0, "A/B",       "normal",       2, "A/B" },
+      { 0, "A/B/X",     "not-present",  2, "A/B/X" },
+      { 0, "A/B/Y",     "not-present",  2, "A/B/Y" },
+      { 0, "A/B/Z",     "normal",       2, "A/B/Z" },
+      { 1, "A",         "base-deleted", NO_COPY_FROM },
+      { 1, "A/B",       "base-deleted", NO_COPY_FROM },
+      { 1, "A/B/Z",     "base-deleted", NO_COPY_FROM },
+      { 0 }
+    };
+    SVN_ERR(check_db_rows(&b, "A", rows));
+  }
+
+  SVN_ERR(wc_copy(&b, "X", "A"));
+  {
+    nodes_row_t rows[] = {
+      { 0, "A",         "normal",       2, "A" },
+      { 0, "A/B",       "normal",       2, "A/B" },
+      { 0, "A/B/X",     "not-present",  2, "A/B/X" },
+      { 0, "A/B/Y",     "not-present",  2, "A/B/Y" },
+      { 0, "A/B/Z",     "normal",       2, "A/B/Z" },
+      { 1, "A",         "normal",       2, "X" },
+      { 1, "A/B",       "normal",       2, "X/B" },
+      { 1, "A/B/W",     "not-present",  2, "X/B/W" },
+      { 1, "A/B/X",     "normal",       2, "X/B/X" },
+      { 1, "A/B/Y",     "not-present",  2, "X/B/Y" },
+      { 1, "A/B/Z",     "not-present",  2, "X/B/Z" },
+      { 0 }
+    };
+    SVN_ERR(check_db_rows(&b, "A", rows));
+  }
+
+  SVN_ERR(wc_delete(&b, "A"));
+  {
+    nodes_row_t rows[] = {
+      { 0, "A",         "normal",       2, "A" },
+      { 0, "A/B",       "normal",       2, "A/B" },
+      { 0, "A/B/X",     "not-present",  2, "A/B/X" },
+      { 0, "A/B/Y",     "not-present",  2, "A/B/Y" },
+      { 0, "A/B/Z",     "normal",       2, "A/B/Z" },
+      { 1, "A",         "base-deleted", NO_COPY_FROM },
+      { 1, "A/B",       "base-deleted", NO_COPY_FROM },
+      { 1, "A/B/Z",     "base-deleted", NO_COPY_FROM },
+      { 0 }
+    };
+    SVN_ERR(check_db_rows(&b, "A", rows));
+  }
+
+  return SVN_NO_ERROR;
+}
+
+
 /* ---------------------------------------------------------------------- */
 /* The list of test functions */
 
 struct svn_test_descriptor_t test_funcs[] =
   {
     SVN_TEST_NULL,
-    SVN_TEST_OPTS_WIMP(test_wc_wc_copies,
-                       "test_wc_wc_copies",
-                       "needs op_depth"),
-    SVN_TEST_OPTS_WIMP(test_reverts,
-                       "test_reverts",
-                       "needs op_depth"),
-    SVN_TEST_OPTS_WIMP(test_deletes,
-                       "test_deletes",
-                       "needs op_depth"),
-    SVN_TEST_OPTS_WIMP(test_delete_of_copies,
-                       "test_delete_of_copies",
-                       "needs op_depth"),
-    SVN_TEST_OPTS_WIMP(test_delete_with_base,
-                       "test_delete_with_base",
-                       "needs op_depth"),
-    SVN_TEST_OPTS_WIMP(test_adds,
-                       "test_adds",
-                       "needs op_depth"),
-    SVN_TEST_OPTS_WIMP(test_repo_wc_copies,
-                       "test_repo_wc_copies",
-                       "needs op_depth"),
-    SVN_TEST_OPTS_WIMP(test_delete_with_update,
-                       "test_delete_with_update",
-                       "needs op_depth"),
-    SVN_TEST_OPTS_WIMP(test_adds_change_kind,
-                       "test_adds_change_kind",
-                       "needs op_depth"),
+    SVN_TEST_OPTS_PASS(test_wc_wc_copies,
+                       "test_wc_wc_copies"),
+    SVN_TEST_OPTS_PASS(test_reverts,
+                       "test_reverts"),
+    SVN_TEST_OPTS_PASS(test_deletes,
+                       "test_deletes"),
+    SVN_TEST_OPTS_PASS(test_delete_of_copies,
+                       "test_delete_of_copies"),
+    SVN_TEST_OPTS_PASS(test_delete_with_base,
+                       "test_delete_with_base"),
+    SVN_TEST_OPTS_PASS(test_adds,
+                       "test_adds"),
+    SVN_TEST_OPTS_PASS(test_repo_wc_copies,
+                       "test_repo_wc_copies"),
+    SVN_TEST_OPTS_PASS(test_delete_with_update,
+                       "test_delete_with_update"),
+    SVN_TEST_OPTS_PASS(test_adds_change_kind,
+                       "test_adds_change_kind"),
     SVN_TEST_OPTS_PASS(test_base_dir_insert_remove,
                        "test_base_dir_insert_remove"),
-    SVN_TEST_OPTS_WIMP(test_temp_op_make_copy,
-                       "test_temp_op_make_copy",
-                       "needs op_depth"),
-    SVN_TEST_OPTS_WIMP(test_wc_move,
-                       "test_wc_move",
-                       "needs op_depth"),
-    SVN_TEST_OPTS_WIMP(test_mixed_rev_copy,
-                       "test_mixed_rev_copy",
-                       "needs op_depth"),
+    SVN_TEST_OPTS_PASS(test_temp_op_make_copy,
+                       "test_temp_op_make_copy"),
+    SVN_TEST_OPTS_PASS(test_wc_move,
+                       "test_wc_move"),
+    SVN_TEST_OPTS_PASS(test_mixed_rev_copy,
+                       "test_mixed_rev_copy"),
+    SVN_TEST_OPTS_PASS(test_delete_of_replace,
+                       "test_delete_of_replace"),
+    SVN_TEST_OPTS_PASS(test_del_replace_not_present,
+                       "test_del_replace_not_present"),
     SVN_TEST_NULL
   };

Modified: subversion/branches/diff-optimizations-bytes/tools/dev/unix-build/Makefile.svn
URL: http://svn.apache.org/viewvc/subversion/branches/diff-optimizations-bytes/tools/dev/unix-build/Makefile.svn?rev=1044847&r1=1044846&r2=1044847&view=diff
==============================================================================
--- subversion/branches/diff-optimizations-bytes/tools/dev/unix-build/Makefile.svn (original)
+++ subversion/branches/diff-optimizations-bytes/tools/dev/unix-build/Makefile.svn Sun Dec 12 16:43:42 2010
@@ -8,6 +8,7 @@ ENABLE_RUBY_BINDINGS ?= yes
 ENABLE_PERL_BINDINGS ?= yes
 ENABLE_JAVA_BINDINGS ?= no # they don't build with thread-less APR...
 USE_APR_ICONV ?= no # set to yes to use APR iconv instead of GNU iconv
+PARALLEL ?= PARALLEL=1 CLEANUP=1
 
 PWD		= $(shell pwd)
 UNAME		= $(shell uname)
@@ -1068,64 +1069,32 @@ start-svnserve: $(SVN_OBJDIR)/.compiled
 stop-svnserve:
 	$(SVNSERVE_STOP_CMD)
 
-# run tests in parallel
-PARALLEL=PARALLEL=1 CLEANUP=1
-TEST_LOGS=tests.log fails.log
+define do_check
+@-cd $(svn_builddir) && for fs in fsfs bdb; do \
+    echo "Begin test: $(subst svn-check-,,$@) x $$fs"; \
+    make check $(PARALLEL) $1 FS_TYPE=$$fs; \
+    for log in tests.log fails.log; do \
+        test -f $$log && mv -f $$log $$log.$@-$$fs; \
+    done; \
+done
+endef
 
 svn-check-neon: httpd-conf $(SVN_OBJDIR)/.compiled $(SVN_OBJDIR)/.bindings-compiled
 	$(HTTPD_START_CMD)
-	-cd $(svn_builddir) && make check FS_TYPE=fsfs \
-	       BASE_URL=http://localhost:$(HTTPD_CHECK_PORT) HTTP_LIBRARY=neon \
-	       $(PARALLEL)
-	-$(foreach log, $(TEST_LOGS), \
-		test -f $(svn_builddir)/$(log) && cp -f $(svn_builddir)/$(log) \
-			$(svn_builddir)/$(log).$@-fsfs;)
-	-cd $(svn_builddir) && make check FS_TYPE=bdb \
-	       BASE_URL=http://localhost:$(HTTPD_CHECK_PORT) HTTP_LIBRARY=neon \
-	       $(PARALLEL)
-	-$(foreach log, $(TEST_LOGS), \
-		test -f $(svn_builddir)/$(log) && cp -f $(svn_builddir)/$(log) \
-			$(svn_builddir)/$(log).$@-bdb;)
+	$(call do_check,BASE_URL=http://localhost:$(HTTPD_CHECK_PORT) HTTP_LIBRARY=neon)
 	$(HTTPD_STOP_CMD)
 
 svn-check-serf: httpd-conf $(SVN_OBJDIR)/.compiled $(SVN_OBJDIR)/.bindings-compiled
 	$(HTTPD_START_CMD)
-	-cd $(svn_builddir) && make check FS_TYPE=fsfs \
-	       BASE_URL=http://localhost:$(HTTPD_CHECK_PORT) HTTP_LIBRARY=serf \
-	       $(PARALLEL)
-	-$(foreach log, $(TEST_LOGS), \
-		test -f $(svn_builddir)/$(log) && cp -f $(svn_builddir)/$(log) \
-			$(svn_builddir)/$(log).$@-fsfs;)
-	-cd $(svn_builddir) && make check FS_TYPE=bdb \
-	       BASE_URL=http://localhost:$(HTTPD_CHECK_PORT) HTTP_LIBRARY=serf \
-	       $(PARALLEL)
-	-$(foreach log, $(TEST_LOGS), \
-		test -f $(svn_builddir)/$(log) && cp -f $(svn_builddir)/$(log) \
-			$(svn_builddir)/$(log).$@-bdb;)
+	$(call do_check,BASE_URL=http://localhost:$(HTTPD_CHECK_PORT) HTTP_LIBRARY=serf)
 	$(HTTPD_STOP_CMD)
 
 svn-check-local:
-	-cd $(svn_builddir) && make check FS_TYPE=fsfs $(PARALLEL)
-	-$(foreach log, $(TEST_LOGS), \
-		test -f $(svn_builddir)/$(log) && cp -f $(svn_builddir)/$(log) \
-			$(svn_builddir)/$(log).$@-fsfs;)
-	-cd $(svn_builddir) && make check FS_TYPE=bdb $(PARALLEL)
-	-$(foreach log, $(TEST_LOGS), \
-		test -f $(svn_builddir)/$(log) && cp -f $(svn_builddir)/$(log) \
-			$(svn_builddir)/$(log).$@-bdb;)
+	$(call do_check)
 
 svn-check-svn:
 	$(SVNSERVE_START_CMD)
-	-cd $(svn_builddir) && make check FS_TYPE=fsfs \
-		BASE_URL=svn://127.0.0.1 $(PARALLEL)
-	-$(foreach log, $(TEST_LOGS), \
-		test -f $(svn_builddir)/$(log) && cp -f $(svn_builddir)/$(log) \
-			$(svn_builddir)/$(log).$@-fsfs;)
-	-cd $(svn_builddir) && make check FS_TYPE=bdb \
-		BASE_URL=svn://127.0.0.1 $(PARALLEL)
-	-$(foreach log, $(TEST_LOGS), \
-		test -f $(svn_builddir)/$(log) && cp -f $(svn_builddir)/$(log) \
-			$(svn_builddir)/$(log).$@-bdb;)
+	$(call do_check,BASE_URL=svn://127.0.0.1)
 	$(SVNSERVE_STOP_CMD)
 
 .PHONY: svn-check-swig-pl svn-check-swig-py svn-check-swig-rb svn-check-javahl

Modified: subversion/branches/diff-optimizations-bytes/tools/dist/collect_sigs.py
URL: http://svn.apache.org/viewvc/subversion/branches/diff-optimizations-bytes/tools/dist/collect_sigs.py?rev=1044847&r1=1044846&r2=1044847&view=diff
==============================================================================
--- subversion/branches/diff-optimizations-bytes/tools/dist/collect_sigs.py (original)
+++ subversion/branches/diff-optimizations-bytes/tools/dist/collect_sigs.py Sun Dec 12 16:43:42 2010
@@ -28,6 +28,11 @@
 #  * Post to IRC when a new signature is collected
 #    - Since we don't want to have a long running bot, perhaps we could
 #      also patch wayita to accept and then echo a privmsg?
+#  * Mail dev@ when somebody submits a successful signature, and include a
+#    comments field which could be included in the mail.
+#  * Use a subversion repository instead of sqlite backend
+#    - no need to re-invent storage and retrieval
+#    - perhaps we could re-use existing CIA/mailer hooks?
 #
 
 import sys, os