subversion-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From julianf...@apache.org
Subject svn commit: r1429457 [17/21] - in /subversion/branches/tree-read-api: ./ build/ build/ac-macros/ build/generator/templates/ build/win32/ contrib/server-side/svncutter/ doc/ subversion/bindings/cxxhl/include/ subversion/bindings/cxxhl/include/svncxxhl/ ...
Date Sun, 06 Jan 2013 02:33:39 GMT
Modified: subversion/branches/tree-read-api/subversion/tests/cmdline/changelist_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/tree-read-api/subversion/tests/cmdline/changelist_tests.py?rev=1429457&r1=1429456&r2=1429457&view=diff
==============================================================================
--- subversion/branches/tree-read-api/subversion/tests/cmdline/changelist_tests.py (original)
+++ subversion/branches/tree-read-api/subversion/tests/cmdline/changelist_tests.py Sun Jan  6 02:33:34 2013
@@ -1189,57 +1189,6 @@ def readd_after_revert(sbox):
   svntest.actions.run_and_verify_svn(None, None, [],
                                      'add', dummy)
 
-def empty_pseudo_changelist(sbox):
-  "the empty pseudo-changelist"
-
-  # Boilerplate.
-  sbox.build(read_only = True)
-  wc_dir = sbox.wc_dir
-
-  # Helper functions.
-
-  def found_nodes(*args):
-    # Extract the Greek-tree-relative paths.
-    return set(map(lambda info: info['Path'][len(wc_dir)+1:],
-                    svntest.actions.run_and_parse_info(*args)))
-
-  def find_nodes(nodeset, *args):
-    assert isinstance(nodeset, set)
-    foundset = found_nodes(*args)
-    nodeset = set(map(lambda path: path.replace('/', os.path.sep), nodeset))
-    if nodeset != foundset:
-      raise svntest.Failure("Expected nodeset %s but found %s"
-                            % (nodeset, foundset))
-
-  # Convenience variables.
-  E_path = sbox.ospath('A/B/E')
-  alpha_path = sbox.ospath('A/B/E/alpha')
-  beta_path = sbox.ospath('A/B/E/beta')
-  iota_path = sbox.ospath('iota')
-
-  # Can't add an item to the empty changelist.
-  expected_err = 'svn: E125014: .*'
-  svntest.actions.run_and_verify_svn(None, [], expected_err,
-                                     'changelist', '', iota_path)
-
-  # Modify alpha and beta
-  svntest.main.file_append(alpha_path, "More stuff in alpha\n")
-  svntest.main.file_append(beta_path, "More stuff in beta\n")
-
-  # Add beta to 'testlist'.
-  svntest.actions.run_and_verify_svn(None, None, [],
-                                     'changelist', 'testlist', beta_path)
-
-  # Convenience variables.
-  changelist = {
-    'testlist' : set(['A/B/E/beta']),
-    '' : set(['A/B/E', 'A/B/E/alpha']),
-  }
-
-  # Some basic validations.
-  find_nodes(changelist['testlist'] | changelist[''], '-R', E_path)
-  find_nodes(changelist['testlist'], '--cl', 'testlist', '-R', E_path)
-  find_nodes(changelist[''], '--cl', '', '-R', E_path)
 
 ########################################################################
 # Run the tests
@@ -1263,7 +1212,6 @@ test_list = [ None,
               add_remove_non_existent_target,
               add_remove_unversioned_target,
               readd_after_revert,
-              empty_pseudo_changelist,
              ]
 
 if __name__ == '__main__':

Modified: subversion/branches/tree-read-api/subversion/tests/cmdline/commit_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/tree-read-api/subversion/tests/cmdline/commit_tests.py?rev=1429457&r1=1429456&r2=1429457&view=diff
==============================================================================
--- subversion/branches/tree-read-api/subversion/tests/cmdline/commit_tests.py (original)
+++ subversion/branches/tree-read-api/subversion/tests/cmdline/commit_tests.py Sun Jan  6 02:33:34 2013
@@ -1974,6 +1974,7 @@ def from_wc_top_with_bad_editor(sbox):
   exit_code, out, err = svntest.actions.run_and_verify_svn(
     "Commit succeeded when should have failed.",
     None, svntest.verify.AnyOutput,
+    '--force-interactive',
     'ci', '--editor-cmd', 'no_such-editor')
 
   err = " ".join([x.strip() for x in err])
@@ -2920,8 +2921,8 @@ def commit_danglers(sbox):
 # dir/subdir should bump LastChangedRev of subdir in originating WC
 @XFail()
 @Issue(4203)
-def commit_moved_dir_with_nested_mod_in_subdir(sbox):
-  "commit of moved dir with nested mod in subdir"
+def last_changed_of_copied_subdir(sbox):
+  "last changed of copied subdir"
 
   sbox.build()
   wc_dir = sbox.wc_dir
@@ -3012,7 +3013,7 @@ test_list = [ None,
               commit_incomplete,
               commit_add_subadd,
               commit_danglers,
-              commit_moved_dir_with_nested_mod_in_subdir,
+              last_changed_of_copied_subdir,
              ]
 
 if __name__ == '__main__':

Modified: subversion/branches/tree-read-api/subversion/tests/cmdline/copy_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/tree-read-api/subversion/tests/cmdline/copy_tests.py?rev=1429457&r1=1429456&r2=1429457&view=diff
==============================================================================
--- subversion/branches/tree-read-api/subversion/tests/cmdline/copy_tests.py (original)
+++ subversion/branches/tree-read-api/subversion/tests/cmdline/copy_tests.py Sun Jan  6 02:33:34 2013
@@ -2458,22 +2458,11 @@ def move_dir_back_and_forth(sbox):
   # Move the moved dir: D_moved back to its starting
   # location at A/D.
 
-  if svntest.main.wc_is_singledb(wc_dir):
-    # In single-db target is gone on-disk after it was moved away, so this
-    # move works ok
-    expected_err = []
-  else:
-    # In !SINGLE_DB the target of the copy exists on-dir, so svn tries
-    # to move the file below the deleted directory
-    expected_err = '.*Cannot copy to .*as it is scheduled for deletion'
-
-  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({
+  svntest.actions.run_and_verify_svn(None, None, [], 'mv', D_move_path, D_path)
+
+  # 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='-'),
@@ -2484,8 +2473,8 @@ def move_dir_back_and_forth(sbox):
       '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)
+  })
+  svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
 def copy_move_added_paths(sbox):
   "copy and move added paths without commits"
@@ -4364,9 +4353,9 @@ def copy_added_dir_with_copy(sbox):
   sbox.build(read_only=True)
   wc_dir = sbox.wc_dir
 
-  new_dir = sbox.ospath('NewDir');
-  new_dir2 = sbox.ospath('NewDir2');
-  new_dir3 = sbox.ospath('NewDir3');
+  new_dir = sbox.ospath('NewDir')
+  new_dir2 = sbox.ospath('NewDir2')
+  new_dir3 = sbox.ospath('NewDir3')
 
   # Alias for svntest.actions.run_and_verify_svn
   rav_svn = svntest.actions.run_and_verify_svn
@@ -4398,7 +4387,6 @@ def copy_added_dir_with_copy(sbox):
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
 
-@SkipUnless(svntest.main.is_posix_os)
 @Issue(3303)
 def copy_broken_symlink(sbox):
   """copy broken symlink"""
@@ -4408,14 +4396,14 @@ def copy_broken_symlink(sbox):
   sbox.build()
   wc_dir = sbox.wc_dir
 
-  new_symlink = sbox.ospath('new_symlink');
-  copied_symlink = sbox.ospath('copied_symlink');
-  os.symlink('linktarget', new_symlink)
+  new_symlink = sbox.ospath('new_symlink')
+  copied_symlink = sbox.ospath('copied_symlink')
 
   # Alias for svntest.actions.run_and_verify_svn
   rav_svn = svntest.actions.run_and_verify_svn
 
-  rav_svn(None, None, [], 'add', new_symlink)
+  sbox.simple_add_symlink('linktarget', 'new_symlink')
+
   rav_svn(None, None, [], 'cp', new_symlink, copied_symlink)
 
   # Check whether both new_symlink and copied_symlink are added to the

Modified: subversion/branches/tree-read-api/subversion/tests/cmdline/davautocheck.sh
URL: http://svn.apache.org/viewvc/subversion/branches/tree-read-api/subversion/tests/cmdline/davautocheck.sh?rev=1429457&r1=1429456&r2=1429457&view=diff
==============================================================================
--- subversion/branches/tree-read-api/subversion/tests/cmdline/davautocheck.sh (original)
+++ subversion/branches/tree-read-api/subversion/tests/cmdline/davautocheck.sh Sun Jan  6 02:33:34 2013
@@ -219,7 +219,13 @@ fi
 [ -r "$MOD_AUTHZ_SVN" ] \
   || fail "authz_svn_module not found, please use '--enable-shared --enable-dso --with-apxs' with your 'configure' script"
 
-BUILDDIR_LIBRARY_PATH="$ABS_BUILDDIR/subversion/libsvn_ra_neon/.libs:$ABS_BUILDDIR/subversion/libsvn_ra_local/.libs:$ABS_BUILDDIR/subversion/libsvn_ra_svn/.libs"
+for d in "$ABS_BUILDDIR"/subversion/*/.libs; do
+  if [ -z "$BUILDDIR_LIBRARY_PATH" ]; then
+    BUILDDIR_LIBRARY_PATH="$d"
+  else
+    BUILDDIR_LIBRARY_PATH="$BUILDDIR_LIBRARY_PATH:$d"
+  fi
+done
 
 case "`uname`" in
   Darwin*)
@@ -435,7 +441,7 @@ MaxRequestsPerChild 0
 <IfModule worker.c>
   ThreadsPerChild   8
 </IfModule>
-MaxClients          16
+MaxClients          32
 HostNameLookups     Off
 LogFormat           "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" format
 CustomLog           "$HTTPD_ROOT/req" format
@@ -517,6 +523,12 @@ if [ $# -eq 1 ] && [ "x$1" = 'x--no-test
   exit
 fi
 
+if type time > /dev/null; then
+  TIME_CMD=time
+else
+  TIME_CMD=""
+fi
+
 say "starting the tests..."
 
 CLIENT_CMD="$ABS_BUILDDIR/subversion/svn/svn"
@@ -534,13 +546,13 @@ else
 fi
 
 if [ $# = 0 ]; then
-  time make check "BASE_URL=$BASE_URL" $SSL_MAKE_VAR
+  $TIME_CMD make check "BASE_URL=$BASE_URL" $SSL_MAKE_VAR
   r=$?
 else
   (cd "$ABS_BUILDDIR/subversion/tests/cmdline/"
   TEST="$1"
   shift
-  time "$ABS_SRCDIR/subversion/tests/cmdline/${TEST}_tests.py" "--url=$BASE_URL" $SSL_TEST_ARG "$@")
+  $TIME_CMD "$ABS_SRCDIR/subversion/tests/cmdline/${TEST}_tests.py" "--url=$BASE_URL" $SSL_TEST_ARG "$@")
   r=$?
 fi
 

Modified: subversion/branches/tree-read-api/subversion/tests/cmdline/depth_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/tree-read-api/subversion/tests/cmdline/depth_tests.py?rev=1429457&r1=1429456&r2=1429457&view=diff
==============================================================================
--- subversion/branches/tree-read-api/subversion/tests/cmdline/depth_tests.py (original)
+++ subversion/branches/tree-read-api/subversion/tests/cmdline/depth_tests.py Sun Jan  6 02:33:34 2013
@@ -2084,9 +2084,9 @@ def excluded_path_update_operation(sbox)
     'A/B/E'            : Item(status='D '),
     })
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
-  expected_status.remove('A/B/E/alpha', 'A/B/E/beta', 'A/B/E');
+  expected_status.remove('A/B/E/alpha', 'A/B/E/beta', 'A/B/E')
   expected_disk = svntest.main.greek_state.copy()
-  expected_disk.remove('A/B/E/alpha', 'A/B/E/beta', 'A/B/E');
+  expected_disk.remove('A/B/E/alpha', 'A/B/E/beta', 'A/B/E')
 
   svntest.actions.run_and_verify_update(wc_dir,
                                         expected_output,
@@ -2124,8 +2124,8 @@ def excluded_path_update_operation(sbox)
   expected_output = svntest.wc.State(wc_dir, {
     'A/B'            : Item(status='D '),
     })
-  expected_status.remove('A/B/F', 'A/B/E', 'A/B/lambda', 'A/B');
-  expected_disk.remove('A/B/F', 'A/B/E', 'A/B/lambda', 'A/B');
+  expected_status.remove('A/B/F', 'A/B/E', 'A/B/lambda', 'A/B')
+  expected_disk.remove('A/B/F', 'A/B/E', 'A/B/lambda', 'A/B')
   svntest.actions.run_and_verify_update(wc_dir,
                                         expected_output,
                                         expected_disk,
@@ -2158,8 +2158,8 @@ def excluded_path_update_operation(sbox)
   expected_output = svntest.wc.State(wc_dir, {
     'iota' : Item(status='D '),
     })
-  expected_status.remove('iota');
-  expected_disk.remove('iota');
+  expected_status.remove('iota')
+  expected_disk.remove('iota')
   svntest.actions.run_and_verify_update(wc_dir,
                                         expected_output,
                                         expected_disk,
@@ -2202,9 +2202,9 @@ def excluded_path_misc_operation(sbox):
     'A/B/E'            : Item(status='D '),
     })
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
-  expected_status.remove('A/B/E/alpha', 'A/B/E/beta', 'A/B/E');
+  expected_status.remove('A/B/E/alpha', 'A/B/E/beta', 'A/B/E')
   expected_disk = svntest.main.greek_state.copy()
-  expected_disk.remove('A/B/E/alpha', 'A/B/E/beta', 'A/B/E');
+  expected_disk.remove('A/B/E/alpha', 'A/B/E/beta', 'A/B/E')
 
   svntest.actions.run_and_verify_update(wc_dir,
                                         expected_output,
@@ -2452,9 +2452,8 @@ def make_depth_tree_conflicts(sbox):
   expected_disk = svntest.main.greek_state.copy()
   expected_disk.remove('A/mu',
                        'A/B', 'A/B/lambda', 'A/B/E/alpha', 'A/B/E/beta',
-                       'A/D/gamma');
-  if svntest.main.wc_is_singledb(sbox.wc_dir):
-    expected_disk.remove('A/B/E', 'A/B/F')
+                       'A/D/gamma',
+                       'A/B/E', 'A/B/F')
 
   # This test is set XFail because this (correct) status cannot be
   # verified due to an "svn update" bug. The tree-conflict on A/B

Modified: subversion/branches/tree-read-api/subversion/tests/cmdline/diff_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/tree-read-api/subversion/tests/cmdline/diff_tests.py?rev=1429457&r1=1429456&r2=1429457&view=diff
==============================================================================
--- subversion/branches/tree-read-api/subversion/tests/cmdline/diff_tests.py (original)
+++ subversion/branches/tree-read-api/subversion/tests/cmdline/diff_tests.py Sun Jan  6 02:33:34 2013
@@ -3336,12 +3336,18 @@ def diff_url_against_local_mods(sbox):
                                      'up')
 
   # In A, add, remove and change a file, and commit.
-  make_file_edit_del_add(A);
+  make_file_edit_del_add(A)
   svntest.actions.run_and_verify_svn(None, None, [],
                                      'ci', '-m', 'committing A')
 
   # In A2, do the same changes but leave uncommitted.
-  make_file_edit_del_add(A2);
+  make_file_edit_del_add(A2)
+
+  # Diff Path of A against working copy of A2.
+  # Output using arbritrary diff handling should be empty.
+  expected_output = []
+  svntest.actions.run_and_verify_svn(None, expected_output, [],
+                                     'diff', '--old', A, '--new', A2)
 
   # Diff URL of A against working copy of A2. Output should be empty.
   expected_output = []
@@ -3352,7 +3358,6 @@ def diff_url_against_local_mods(sbox):
 #----------------------------------------------------------------------
 # Diff against old revision of the parent directory of a removed and
 # locally re-added file.
-@XFail()
 @Issue(3797)
 def diff_preexisting_rev_against_local_add(sbox):
   "diff -r1 of dir with removed-then-readded file"
@@ -3711,7 +3716,7 @@ def diff_git_with_props(sbox):
                     make_diff_prop_header("new") + \
                     make_diff_prop_added("svn:eol-style", "native") + \
                     make_git_diff_header(iota_path, "iota",
-                                         "revision 1", "working copy",
+                                         "revision 2", "working copy",
                                          text_changes=False) + \
                     make_diff_prop_header("iota") + \
                     make_diff_prop_added("svn:keywords", "Id")
@@ -3722,7 +3727,6 @@ def diff_git_with_props(sbox):
   svntest.actions.run_and_verify_svn(None, expected_output, [], 'diff',
                                      '--git', wc_dir)
 
-@XFail()
 @Issue(4010)
 def diff_correct_wc_base_revnum(sbox):
   "diff WC-WC shows the correct base rev num"
@@ -3769,24 +3773,31 @@ def diff_git_with_props_on_dir(sbox):
   # Now commit the local mod, creating rev 2.
   expected_output = svntest.wc.State(wc_dir, {
     '.' : Item(verb='Sending'),
+    'A' : Item(verb='Sending'),
     })
 
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
   expected_status.add({
     '' : Item(status='  ', wc_rev=2),
     })
+  expected_status.tweak('A', wc_rev=2)
 
-  svntest.main.run_svn(None, 'ps', 'a','b', wc_dir)
+  sbox.simple_propset('k','v', '', 'A')
   svntest.actions.run_and_verify_commit(wc_dir, expected_output,
                                         expected_status, None, wc_dir)
 
   was_cwd = os.getcwd()
   os.chdir(wc_dir)
-  expected_output = make_git_diff_header(".", "", "revision 1",
+  expected_output = make_git_diff_header("A", "A", "revision 1",
+                                         "revision 2",
+                                         add=False, text_changes=False) + \
+                    make_diff_prop_header("A") + \
+                    make_diff_prop_added("k", "v") + \
+                    make_git_diff_header(".", "", "revision 1",
                                          "revision 2",
                                          add=False, text_changes=False) + \
                     make_diff_prop_header("") + \
-                    make_diff_prop_added("a", "b")
+                    make_diff_prop_added("k", "v")
 
   svntest.actions.run_and_verify_svn(None, expected_output, [], 'diff',
                                      '-c2', '--git')
@@ -3981,7 +3992,7 @@ def diff_arbitrary_files_and_dirs(sbox):
   wc_dir = sbox.wc_dir
 
   # diff iota with A/mu
-  expected_output = make_diff_header("mu", "working copy", "working copy",
+  expected_output = make_diff_header("iota", "working copy", "working copy",
                                      "iota", "A/mu") + [
                       "@@ -1 +1 @@\n",
                       "-This is the file 'iota'.\n",
@@ -4108,7 +4119,7 @@ def diff_properties_no_newline(sbox):
   # may not be predictable.)
   for pname, old_val, new_val in subtests:
     expected_output = \
-      make_diff_header("iota", "revision 1", "working copy") + \
+      make_diff_header("iota", "revision 2", "working copy") + \
       make_diff_prop_header("iota") + \
       make_diff_prop_modified(pname, old_val, new_val)
 
@@ -4118,6 +4129,28 @@ def diff_properties_no_newline(sbox):
 
   os.chdir(old_cwd)
 
+def diff_arbitrary_same(sbox):
+  "diff arbitrary files and dirs but same"
+
+  sbox.build(read_only = True)
+
+  sbox.simple_propset('k', 'v', 'A', 'A/mu', 'A/D/G/pi')
+
+  svntest.main.file_write(sbox.ospath('A/mu'), "new mu")
+
+  sbox.simple_copy('A', 'A2')
+
+  svntest.actions.run_and_verify_svn(None, [], [],
+                                     'diff',
+                                     '--old', sbox.ospath('A'),
+                                     '--new', sbox.ospath('A2'))
+
+  svntest.actions.run_and_verify_svn(None, [], [],
+                                     'diff', '--summarize',
+                                     '--old', sbox.ospath('A'),
+                                     '--new', sbox.ospath('A2'))
+
+
 ########################################################################
 #Run the tests
 
@@ -4190,6 +4223,7 @@ test_list = [ None,
               diff_arbitrary_files_and_dirs,
               diff_properties_only,
               diff_properties_no_newline,
+              diff_arbitrary_same,
               ]
 
 if __name__ == '__main__':

Modified: subversion/branches/tree-read-api/subversion/tests/cmdline/entries_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/tree-read-api/subversion/tests/cmdline/entries_tests.py?rev=1429457&r1=1429456&r2=1429457&view=diff
==============================================================================
--- subversion/branches/tree-read-api/subversion/tests/cmdline/entries_tests.py (original)
+++ subversion/branches/tree-read-api/subversion/tests/cmdline/entries_tests.py Sun Jan  6 02:33:34 2013
@@ -185,11 +185,8 @@ def obstructed_entries(sbox):
   entries = svntest.main.run_entriesdump(D_path)
   check_names(entries, 'H')
 
-  if svntest.main.wc_is_singledb(wc_dir):
-    # Data is not missing in single-db
-    validate(entries['H'], revision=1)
-  else:
-    validate(entries['H'], revision=-1)
+  # Data is not missing in single-db
+  validate(entries['H'], revision=1)
 
   ### need to get svn_wc__db_read_info() to generate obstructed_add
 

Modified: subversion/branches/tree-read-api/subversion/tests/cmdline/export_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/tree-read-api/subversion/tests/cmdline/export_tests.py?rev=1429457&r1=1429456&r2=1429457&view=diff
==============================================================================
--- subversion/branches/tree-read-api/subversion/tests/cmdline/export_tests.py (original)
+++ subversion/branches/tree-read-api/subversion/tests/cmdline/export_tests.py Sun Jan  6 02:33:34 2013
@@ -370,9 +370,12 @@ def export_working_copy_at_base_revision
   gamma_path = os.path.join(wc_dir, 'A', 'D', 'gamma')
   E_path = os.path.join(wc_dir, 'A', 'B', 'E')
   rho_path = os.path.join(wc_dir, 'A', 'D', 'G', 'rho')
+  H_path = os.path.join(wc_dir, 'A', 'D', 'H')
+  phi_path = os.path.join(wc_dir, 'A', 'D', 'H', 'phi')
+  chi_path = os.path.join(wc_dir, 'A', 'D', 'H', 'chi')
 
   # Make some local modifications: modify mu and C, add kappa and K, delete
-  # gamma and E, and replace rho.  (Directories can't yet be replaced.)
+  # gamma and E, and replace rho and H.
   # These modifications should *not* get exported at the base revision.
   svntest.main.file_append(mu_path, 'Appended text')
   svntest.main.run_svn(None, 'propset', 'p', 'v', mu_path, C_path)
@@ -383,6 +386,12 @@ def export_working_copy_at_base_revision
   svntest.main.run_svn(None, 'rm', rho_path)
   svntest.main.file_append(rho_path, "Replacement file 'rho'.")
   svntest.main.run_svn(None, 'add', rho_path)
+  svntest.main.run_svn(None, 'rm', H_path)
+  svntest.main.run_svn(None, 'mkdir', H_path)
+  svntest.main.file_append(phi_path, "This is the file 'phi'.")
+  svntest.main.run_svn(None, 'add', phi_path)
+  svntest.main.file_append(chi_path, "Replacement file 'chi'.")
+  svntest.main.run_svn(None, 'add', chi_path)
 
   # Note that we don't tweak the expected disk tree at all,
   # since the modifications should not be present.

Modified: subversion/branches/tree-read-api/subversion/tests/cmdline/getopt_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/tree-read-api/subversion/tests/cmdline/getopt_tests.py?rev=1429457&r1=1429456&r2=1429457&view=diff
==============================================================================
--- subversion/branches/tree-read-api/subversion/tests/cmdline/getopt_tests.py (original)
+++ subversion/branches/tree-read-api/subversion/tests/cmdline/getopt_tests.py Sun Jan  6 02:33:34 2013
@@ -59,6 +59,9 @@ def load_expected_output(basename):
 
   return exp_stdout, exp_stderr
 
+# With plaintext password storage enabled, `svn --version' emits a warning:
+warn_line_re = re.compile("WARNING: Plaintext password storage")
+
 # This is a list of lines to delete.
 del_lines_res = [
                  # In 'svn --version', the date line is variable, for example:
@@ -100,6 +103,7 @@ rep_lines_res = [
 switch_res_line = 'System information:'
 
 # This is a list of lines to delete after having seen switch_res_line.
+switched_warn_line_re = None
 switched_del_lines_res = [
                           # In svn --version --verbose, dependent libs loaded
                           # shared libs are optional.
@@ -119,20 +123,31 @@ switched_rep_lines_res = [
 def process_lines(lines):
   "delete lines that should not be compared and search and replace the rest"
   output = [ ]
+  warn_re = warn_line_re
   del_res = del_lines_res
   rep_res = rep_lines_res
 
+  skip_next_line = 0
   for line in lines:
+    if skip_next_line:
+      skip_next_line = 0
+      continue
+
     if line.startswith(switch_res_line):
+      warn_re = switched_warn_line_re
       del_res = switched_del_lines_res
       rep_res = switched_rep_lines_res
 
     # Skip these lines from the output list.
     delete_line = 0
-    for delete_re in del_res:
-      if delete_re.match(line):
-        delete_line = 1
-        break
+    if warn_re and warn_re.match(line):
+      delete_line = 1
+      skip_next_line = 1     # Ignore the empty line after the warning
+    else:
+      for delete_re in del_res:
+        if delete_re.match(line):
+          delete_line = 1
+          break
     if delete_line:
       continue
 

Modified: subversion/branches/tree-read-api/subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout
URL: http://svn.apache.org/viewvc/subversion/branches/tree-read-api/subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout?rev=1429457&r1=1429456&r2=1429457&view=diff
==============================================================================
--- subversion/branches/tree-read-api/subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout (original)
+++ subversion/branches/tree-read-api/subversion/tests/cmdline/getopt_tests_data/svn_help_log_switch_stdout Sun Jan  6 02:33:34 2013
@@ -116,7 +116,10 @@ Global options:
   --username ARG           : specify a username ARG
   --password ARG           : specify a password ARG
   --no-auth-cache          : do not cache authentication tokens
-  --non-interactive        : do no interactive prompting
+  --non-interactive        : do no interactive prompting (default is to prompt
+                             only if standard input is a terminal device)
+  --force-interactive      : do interactive prompting even if standard input
+                             is not a terminal device
   --trust-server-cert      : accept SSL server certificates from unknown
                              certificate authorities without prompting (but only
                              with '--non-interactive')
@@ -196,7 +199,10 @@ Global options:
   --username ARG           : specify a username ARG
   --password ARG           : specify a password ARG
   --no-auth-cache          : do not cache authentication tokens
-  --non-interactive        : do no interactive prompting
+  --non-interactive        : do no interactive prompting (default is to prompt
+                             only if standard input is a terminal device)
+  --force-interactive      : do interactive prompting even if standard input
+                             is not a terminal device
   --trust-server-cert      : accept SSL server certificates from unknown
                              certificate authorities without prompting (but only
                              with '--non-interactive')

Modified: subversion/branches/tree-read-api/subversion/tests/cmdline/history_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/tree-read-api/subversion/tests/cmdline/history_tests.py?rev=1429457&r1=1429456&r2=1429457&view=diff
==============================================================================
--- subversion/branches/tree-read-api/subversion/tests/cmdline/history_tests.py (original)
+++ subversion/branches/tree-read-api/subversion/tests/cmdline/history_tests.py Sun Jan  6 02:33:34 2013
@@ -64,7 +64,7 @@ def cat_traces_renames(sbox):
     'A/D/G/bloo' : Item(verb='Adding')
     })
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
-  expected_status.remove('A/D/G/rho');
+  expected_status.remove('A/D/G/rho')
   expected_status.add({ 'A/D/G/bloo' :
                         Item(wc_rev=2, status='  ') })
 
@@ -87,7 +87,7 @@ def cat_traces_renames(sbox):
     'A/D/G/rho' : Item(verb='Adding')
     })
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
-  expected_status.remove('A/D/G/pi');
+  expected_status.remove('A/D/G/pi')
   expected_status.tweak('A/D/G/rho', wc_rev=3)
   expected_status.add({ 'A/D/G/bloo' :
                         Item(wc_rev=2, status='  ') })

Modified: subversion/branches/tree-read-api/subversion/tests/cmdline/info_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/tree-read-api/subversion/tests/cmdline/info_tests.py?rev=1429457&r1=1429456&r2=1429457&view=diff
==============================================================================
--- subversion/branches/tree-read-api/subversion/tests/cmdline/info_tests.py (original)
+++ subversion/branches/tree-read-api/subversion/tests/cmdline/info_tests.py Sun Jan  6 02:33:34 2013
@@ -522,8 +522,65 @@ def binary_tree_conflict(sbox):
   }]
   svntest.actions.run_and_verify_info(expected_info, iota)
 
+def relpath_escaping(sbox):
+  "relpath escaping should be usable as-is"
 
+  sbox.build()
+  wc_dir = sbox.wc_dir
 
+  name = 'path with space, +, % and #'
+  name2 = 'path with %20'
+  sbox.simple_copy('iota', name)
+  sbox.simple_copy('iota', name2)
+  sbox.simple_commit()
+
+  testpath = sbox.ospath(name)
+
+  expected = {'Path' : re.escape(testpath),
+              'URL' : '.*/path.*with.*space.*',
+              'Relative URL' : '.*/path.*with.*space.*',
+             }
+             
+  svntest.actions.run_and_verify_info([expected], sbox.ospath(name))
+
+  info = svntest.actions.run_and_parse_info(sbox.ospath(name), sbox.ospath(name2))
+
+  # And now verify that the returned URL and relative url are usable
+
+  # Also test the local path (to help resolving the relative path) and an
+  # unescaped path which the client should automatically encode
+  svntest.actions.run_and_verify_svn(None, None, [], 'info',
+                                     info[0]['Relative URL'],
+                                     info[0]['URL'],
+                                     testpath,
+                                     '^/' + name,
+
+                                     info[1]['Relative URL'],
+                                     info[1]['URL'])
+
+  # And now do the same thing with a the file external handling
+  sbox.simple_propset('svn:externals',
+                        info[0]['Relative URL'] + " f1\n" +
+                        info[0]['URL'] + " f2\n" +
+                        '"^/' + name + "\" f3\n" +
+
+                        info[1]['Relative URL'] + " g1\n" +
+                        info[1]['URL'] + " g2\n",
+                      ''
+                     )
+
+  # And now we expect to see 3 file externals
+  expected_output = svntest.wc.State(wc_dir, {
+    'f1'                : Item(status='A '),
+    'f2'                : Item(status='A '),
+    'f3'                : Item(status='A '),
+
+    'g1'                : Item(status='A '),
+    'g2'                : Item(status='A '),
+  })
+
+  svntest.actions.run_and_verify_update(wc_dir,
+                                        expected_output, None, None)
 
 ########################################################################
 # Run the tests
@@ -539,6 +596,7 @@ test_list = [ None,
               info_repos_root_url,
               info_show_exclude,
               binary_tree_conflict,
+              relpath_escaping,
              ]
 
 if __name__ == '__main__':

Modified: subversion/branches/tree-read-api/subversion/tests/cmdline/lock_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/tree-read-api/subversion/tests/cmdline/lock_tests.py?rev=1429457&r1=1429456&r2=1429457&view=diff
==============================================================================
--- subversion/branches/tree-read-api/subversion/tests/cmdline/lock_tests.py (original)
+++ subversion/branches/tree-read-api/subversion/tests/cmdline/lock_tests.py Sun Jan  6 02:33:34 2013
@@ -855,12 +855,7 @@ def lock_switched_files(sbox):
   expected_status.tweak('A/D/gamma', 'A/B/lambda', writelocked='K')
 
   # In WC-NG locks are kept per working copy, not per file
-  if svntest.main.wc_is_singledb(wc_dir):
-    # In single-db you see these files are locked locally
-    expected_status.tweak('A/B/E/alpha', 'iota', writelocked='K')
-  else:
-    # In multi-db you see these files are not locked in the right dir
-    expected_status.tweak('A/B/E/alpha', 'iota', writelocked='O')
+  expected_status.tweak('A/B/E/alpha', 'iota', writelocked='K')
 
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
@@ -1437,15 +1432,10 @@ def lock_twice_in_one_wc(sbox):
   os.chmod(mu2_path, 0700)
   svntest.main.file_append(mu2_path, "Updated text")
 
-  if svntest.main.wc_is_singledb(wc_dir):
-    # Commit will just succeed as the DB owns the lock. It's a user decision
-    # to commit the other target instead of the one originally locked
-    expected_err = []
-  else:
-    # Commit should fail because it is locked in the other location
-    expected_err = '.*(([Nn]o)|(Server)).*[lL]ock.*'
+  # Commit will just succeed as the DB owns the lock. It's a user decision
+  # to commit the other target instead of the one originally locked
 
-  svntest.actions.run_and_verify_svn(None, None, expected_err,
+  svntest.actions.run_and_verify_svn(None, None, [],
                                      'commit', mu2_path, '-m', '')
 
 #----------------------------------------------------------------------
@@ -1520,7 +1510,7 @@ def verify_path_escaping(sbox):
       'file #1'           : Item(status='  ', writelocked='K', wc_rev='2'),
       'file #2'           : Item(status='  ', writelocked='O', wc_rev='2'),
       'file #3'           : Item(status='  ', writelocked='B', wc_rev='2')
-    });
+    })
 
   # Make sure the file locking is reported correctly
   svntest.actions.run_and_verify_status(wc_dir, expected_status)

Modified: subversion/branches/tree-read-api/subversion/tests/cmdline/log_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/tree-read-api/subversion/tests/cmdline/log_tests.py?rev=1429457&r1=1429456&r2=1429457&view=diff
==============================================================================
--- subversion/branches/tree-read-api/subversion/tests/cmdline/log_tests.py (original)
+++ subversion/branches/tree-read-api/subversion/tests/cmdline/log_tests.py Sun Jan  6 02:33:34 2013
@@ -1006,7 +1006,7 @@ def log_xml_empty_date(sbox):
   # Create the revprop-change hook for this test
   svntest.actions.enable_revprop_changes(sbox.repo_dir)
 
-  date_re = re.compile('<date');
+  date_re = re.compile('<date')
 
   # Ensure that we get a date before we delete the property.
   exit_code, output, errput = svntest.actions.run_and_verify_svn(

Modified: subversion/branches/tree-read-api/subversion/tests/cmdline/merge_authz_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/tree-read-api/subversion/tests/cmdline/merge_authz_tests.py?rev=1429457&r1=1429456&r2=1429457&view=diff
==============================================================================
--- subversion/branches/tree-read-api/subversion/tests/cmdline/merge_authz_tests.py (original)
+++ subversion/branches/tree-read-api/subversion/tests/cmdline/merge_authz_tests.py Sun Jan  6 02:33:34 2013
@@ -184,7 +184,7 @@ def mergeinfo_and_skipped_paths(sbox):
     'C'         : Item(),
     })
   expected_skip = wc.State(A_COPY_path, {
-    'B/E'       : Item(),
+    'B/E'       : Item(verb='Skipped missing target'),
     })
   svntest.actions.run_and_verify_merge(A_COPY_path, '4', '8',
                                        sbox.repo_url + '/A', None,
@@ -256,9 +256,9 @@ def mergeinfo_and_skipped_paths(sbox):
     'C'         : Item(),
     })
   expected_skip = wc.State(A_COPY_2_path, {
-    'B/E'     : Item(),
-    'D/G'       : Item(),
-    'D/H/psi'   : Item(),
+    'B/E'     : Item(verb='Skipped missing target'),
+    'D/G/rho' : Item(verb='Skipped'),
+    'D/H/psi' : Item(verb='Skipped missing target'),
     })
   svntest.actions.run_and_verify_merge(A_COPY_2_path, '4', '8',
                                        sbox.repo_url + '/A', None,
@@ -323,7 +323,8 @@ def mergeinfo_and_skipped_paths(sbox):
     'mu'        : Item("This is the file 'mu'.\n"),
     'C'         : Item(),
     })
-  expected_skip = wc.State(A_COPY_3_path, {'B/E' : Item()})
+  expected_skip = wc.State(A_COPY_3_path,
+                           {'B/E' : Item(verb='Skipped missing target')})
   svntest.actions.run_and_verify_merge(A_COPY_3_path, '5', '7',
                                        sbox.repo_url + '/A', None,
                                        expected_output,
@@ -361,7 +362,7 @@ def mergeinfo_and_skipped_paths(sbox):
     'chi'   : Item("This is the file 'chi'.\n"),
     })
   expected_skip = wc.State(A_COPY_2_H_path, {
-    'psi'   : Item(),
+    'psi'   : Item(verb='Skipped missing target'),
     })
   # Note we don't bother checking expected mergeinfo output because the
   # multiple merges being performed here, -c5 and -c8, will result in
@@ -470,7 +471,7 @@ def mergeinfo_and_skipped_paths(sbox):
                    props={SVN_PROP_MERGEINFO : '/A/D/H/zeta:9'}),
     })
   expected_skip = wc.State(A_COPY_2_H_path, {
-    'psi' : Item(),
+    'psi' : Item(verb='Skipped missing target'),
     })
   svntest.actions.run_and_verify_merge(A_COPY_2_H_path, '4', '9',
                                        sbox.repo_url + '/A/D/H', None,

Modified: subversion/branches/tree-read-api/subversion/tests/cmdline/merge_automatic_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/tree-read-api/subversion/tests/cmdline/merge_automatic_tests.py?rev=1429457&r1=1429456&r2=1429457&view=diff
==============================================================================
--- subversion/branches/tree-read-api/subversion/tests/cmdline/merge_automatic_tests.py (original)
+++ subversion/branches/tree-read-api/subversion/tests/cmdline/merge_automatic_tests.py Sun Jan  6 02:33:34 2013
@@ -762,10 +762,11 @@ def cherry3_fwd(sbox):
 def subtree_to_and_fro(sbox):
   "reintegrate considers source subtree mergeinfo"
 
-#     A (--o-o-o-o---------x
-#       ( \         \     /
-#       (  \         \   /
-#     B (   o--o------s--
+  #   A      (-----o-o-o-o------------x
+  #          ( \            \        /
+  #          (  \            \      /
+  #   A_COPY (   o---------o--s--o--
+  #              2 3 4 5 6 7  8  9
 
   # Some paths we'll care about.
   A_COPY_gamma_path = sbox.ospath('A_COPY/D/gamma')
@@ -777,7 +778,7 @@ def subtree_to_and_fro(sbox):
   wc_dir = sbox.wc_dir
 
   # Setup a simple 'trunk & branch': Copy ^/A to ^/A_COPY in r2 and then
-  # make a few edits under A in r3-6:
+  # make a few edits under A in r3-6 (edits r3, r4, r6 are under subtree 'D'):
   wc_disk, wc_status = set_up_branch(sbox)
 
   # r7 - Edit a file on the branch.
@@ -803,21 +804,12 @@ def subtree_to_and_fro(sbox):
   # not considered a merge.  So the changes which exist on A/D and were
   # merged to A_COPY/D, are merged *back* to A, resulting in a conflict:
   #
-  #   C:\SVN\src-trunk\Debug\subversion\tests\cmdline\svn-test-work\
-  #     working_copies\merge_automatic_tests-18>svn merge ^^/A_COPY A
-  #   DBG: merge.c:11461: base on source: file:///C:/SVN/src-trunk/Debug/
-  #     subversion/tests/cmdline/svn-test-work/repositories/
-  #     merge_automatic_tests-18/A@1
-  #   DBG: merge.c:11462: base on target: file:///C:/SVN/src-trunk/Debug/
-  #     subversion/tests/cmdline/svn-test-work/repositories/
-  #     merge_automatic_tests-18/A@1
-  #   DBG: merge.c:11567: yca   file:///C:/SVN/src-trunk/Debug/subversion/
-  #     tests/cmdline/svn-test-work/repositories/merge_automatic_tests-18/A@1
-  #   DBG: merge.c:11568: base  file:///C:/SVN/src-trunk/Debug/subversion/
-  #     tests/cmdline/svn-test-work/repositories/merge_automatic_tests-18/A@1
-  #   DBG: merge.c:11571: right file:///C:/SVN/src-trunk/Debug/subversion/
-  #     tests/cmdline/svn-test-work/repositories/merge_automatic_tests-18/
-  #     A_COPY@8
+  #   C:\...\working_copies\merge_automatic_tests-18>svn merge ^^/A_COPY A
+  #   DBG: merge.c:11461: base on source: ^/A@1
+  #   DBG: merge.c:11462: base on target: ^/A@1
+  #   DBG: merge.c:11567: yca   ^/A@1
+  #   DBG: merge.c:11568: base  ^/A@1
+  #   DBG: merge.c:11571: right ^/A_COPY@8
   #   Conflict discovered in file 'A\D\H\psi'.
   #   Select: (p) postpone, (df) diff-full, (e) edit,
   #           (mc) mine-conflict, (tc) theirs-conflict,

Modified: subversion/branches/tree-read-api/subversion/tests/cmdline/merge_reintegrate_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/tree-read-api/subversion/tests/cmdline/merge_reintegrate_tests.py?rev=1429457&r1=1429456&r2=1429457&view=diff
==============================================================================
--- subversion/branches/tree-read-api/subversion/tests/cmdline/merge_reintegrate_tests.py (original)
+++ subversion/branches/tree-read-api/subversion/tests/cmdline/merge_reintegrate_tests.py Sun Jan  6 02:33:34 2013
@@ -818,13 +818,13 @@ def reintegrate_on_shallow_wc(sbox):
   # Now revert the reintegrate and make a second change on the
   # branch in r4, but this time change a subtree that corresponds
   # to the missing (shallow) portion of the source.  The reintegrate
-  # should still succeed, albeit skipping some paths.
+  # should still succeed.
   svntest.actions.run_and_verify_svn(None, None, [], 'revert', '-R', wc_dir)
   svntest.main.file_write(psi_COPY_path, "more branch work")
   svntest.main.run_svn(None, 'commit', '-m',
                        'Some more work on the A_COPY branch', wc_dir)
-  # Reuse the same expectations as the prior merge, except that
-  # non-inheritable mergeinfo is set on the root of the missing subtree...
+  # Reuse the same expectations as the prior merge, except for the mergeinfo
+  # on the target root that now includes the latest rev on the branch.
   expected_mergeinfo_output.add({
       'D' : Item(status=' U')
       })
@@ -832,9 +832,11 @@ def reintegrate_on_shallow_wc(sbox):
   expected_A_disk.tweak('D', props={SVN_PROP_MERGEINFO : '/A_COPY/D:2-4*'})
   # ... a depth-restricted item is skipped ...
   expected_A_skip.add({
-      'D/H' : Item()
+      'D/H/psi' : Item(verb='Skipped')
   })
-  # ... and the mergeinfo on the target root includes the latest rev on the branch.
+  # Currently this fails due to r1424469.  For a full explanation see
+  # http://svn.haxx.se/dev/archive-2012-12/0472.shtml
+  # and http://svn.haxx.se/dev/archive-2012-12/0475.shtml
   expected_A_disk.tweak('', props={SVN_PROP_MERGEINFO : '/A_COPY:2-4'})
   svntest.actions.run_and_verify_merge(A_path, None, None,
                                        sbox.repo_url + '/A_COPY', None,
@@ -858,9 +860,9 @@ def reintegrate_fail_on_stale_source(sbo
   mu_path = os.path.join(A_path, "mu")
   svntest.main.file_append(mu_path, 'some text appended to mu\n')
   svntest.actions.run_and_verify_svn(None, None, [], 'commit',
-                                     '-m', 'a change to mu', mu_path);
+                                     '-m', 'a change to mu', mu_path)
   # Unmix the revisions in the working copy.
-  svntest.actions.run_and_verify_svn(None, None, [], 'update', wc_dir);
+  svntest.actions.run_and_verify_svn(None, None, [], 'update', wc_dir)
   # The merge --reintegrate succeeds but since there were no changes
   # on A_COPY after it was branched the only result is updated mergeinfo
   # on the reintegrate target.
@@ -1265,8 +1267,7 @@ def reintegrate_with_subtree_mergeinfo(s
   #      rev N+3.  The renamed subtree on 'branch' now has additional explicit
   #      mergeinfo decribing the synch merge from trunk@N+1 to trunk@N+2.
   #
-  #   E) Reintegrate 'branch' to 'trunk'.  This fails as it appears not all
-  #      of 'trunk' was previously merged to 'branch'
+  #   E) Reintegrate 'branch' to 'trunk'.
   #
   #                                       Step:   A   B    C   D    E
   #   A_COPY_3    ---[9]--

Modified: subversion/branches/tree-read-api/subversion/tests/cmdline/merge_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/tree-read-api/subversion/tests/cmdline/merge_tests.py?rev=1429457&r1=1429456&r2=1429457&view=diff
==============================================================================
--- subversion/branches/tree-read-api/subversion/tests/cmdline/merge_tests.py (original)
+++ subversion/branches/tree-read-api/subversion/tests/cmdline/merge_tests.py Sun Jan  6 02:33:34 2013
@@ -1490,7 +1490,7 @@ def merge_skips_obstructions(sbox):
     'Q/bar'  : Item(status='  ', wc_rev='-', copied='+'),
     })
   expected_skip = wc.State(C_path, {
-    'foo' : Item(),
+    'foo' : Item(verb='Skipped'),
     })
   # Unversioned:
   svntest.main.file_append(os.path.join(C_path, "foo"), "foo")
@@ -1534,8 +1534,8 @@ def merge_skips_obstructions(sbox):
     'foo'  : Item(status='A ', wc_rev='-', copied='+'),
     })
   expected_skip = wc.State(C_path, {
-    'Q'     : Item(),
-    'Q/bar' : Item(),
+    'Q'     : Item(verb='Skipped'),
+    'Q/bar' : Item(verb='Skipped'),
     })
 
   svntest.actions.run_and_verify_merge(C_path, '1', '2', F_url, None,
@@ -1595,8 +1595,8 @@ def merge_skips_obstructions(sbox):
   # No-op merge still sets mergeinfo
   expected_status.tweak('', status=' M')
   expected_skip = wc.State(wc_dir, {
-    'iota'   : Item(),
-    'A/D/G'  : Item(),
+    'iota'  : Item(verb='Skipped'),
+    'A/D/G' : Item(verb='Skipped'),
     })
   svntest.actions.run_and_verify_merge(wc_dir, '2', '3',
                                        sbox.repo_url, None,
@@ -1657,7 +1657,7 @@ def merge_skips_obstructions(sbox):
   expected_disk.remove('A/D/G')
   expected_disk.tweak('', props={SVN_PROP_MERGEINFO : '/:4'})
   expected_skip = wc.State(wc_dir, {
-    'A/B/lambda'  : Item(),
+    'A/B/lambda' : Item(verb='Skipped'),
     })
   # No-op merge still sets mergeinfo.
   expected_status_short = expected_status.copy(wc_dir)
@@ -1705,6 +1705,9 @@ def merge_skips_obstructions(sbox):
   expected_disk.remove('A/B/lambda')
   expected_status.tweak('A/B/lambda', status='! ')
   expected_status.tweak('', status='  ')
+  expected_skip = wc.State(wc_dir, {
+    'A/B/lambda' : Item(verb='Skipped missing target'),
+    })
   # Why do we need to --ignore-ancestry?  Because the previous merge of r4,
   # despite being inoperative, set mergeinfo for r4 on the WC.  With the
   # advent of merge tracking this repeat merge attempt would not be attempted.
@@ -1735,8 +1738,6 @@ def merge_into_missing(sbox):
   sbox.build()
   wc_dir = sbox.wc_dir
 
-  single_db = svntest.main.wc_is_singledb(wc_dir)
-
   F_path = sbox.ospath('A/B/F')
   F_url = sbox.repo_url + '/A/B/F'
   Q_path = os.path.join(F_path, 'Q')
@@ -1798,23 +1799,16 @@ def merge_into_missing(sbox):
   expected_status = wc.State(F_path, {
     ''      : Item(status='  ', wc_rev=1),
     'foo'   : Item(status='! ', wc_rev=2),
-    'Q'     : Item(status='! ', wc_rev='?'),
-    })
-  expected_skip = wc.State(F_path, {
-    'Q'   : Item(),
-    'foo' : Item(),
-    })
-
-  if single_db:
-    # Revision not lost
-    expected_status.tweak('Q', wc_rev=2)
+    'Q'     : Item(status='! ', wc_rev=2),
     # Missing data still available
-    expected_status.add({
-      'Q/R'      : Item(status='! ', wc_rev='3'),
-      'Q/R/bar'  : Item(status='! ', wc_rev='3'),
-      'Q/baz'    : Item(status='! ', wc_rev='3'),
+    'Q/R'      : Item(status='! ', wc_rev=3),
+    'Q/R/bar'  : Item(status='! ', wc_rev=3),
+    'Q/baz'    : Item(status='! ', wc_rev=3),
+  })
+  expected_skip = wc.State(F_path, {
+    'Q'   : Item(verb='Skipped missing target'),
+    'foo' : Item(verb='Skipped missing target'),
     })
-
   # Use --ignore-ancestry because merge tracking aware merges raise an
   # error when the merge target is missing subtrees due to OS-level
   # deletes.
@@ -1837,20 +1831,15 @@ def merge_into_missing(sbox):
   expected_status = wc.State(F_path, {
     ''      : Item(status='  ', wc_rev=1),
     'foo'   : Item(status='! ', wc_rev=2),
-    'Q'     : Item(status='! ', wc_rev='?'),
-    })
-  expected_mergeinfo_output = wc.State(F_path, {
-    })
-
-  if single_db:
+    'Q'     : Item(status='! ', entry_rev='?', wc_rev='2'),
     # Revision is known and we can record mergeinfo
-    expected_status.tweak('Q', wc_rev='2', entry_rev='?')
-    expected_status.add({
-      'Q/R'      : Item(status='! ', wc_rev='3'),
-      'Q/R/bar'  : Item(status='! ', wc_rev='3'),
-      'Q/baz'    : Item(status='! ', wc_rev='3'),
+    'Q/R'      : Item(status='! ', wc_rev='3'),
+    'Q/R/bar'  : Item(status='! ', wc_rev='3'),
+    'Q/baz'    : Item(status='! ', wc_rev='3'),
+  })
+  expected_mergeinfo_output = wc.State(F_path, {
     })
-
+  
   svntest.actions.run_and_verify_merge(F_path, '1', '2', F_url, None,
                                        expected_output,
                                        expected_mergeinfo_output,
@@ -1879,18 +1868,11 @@ def merge_into_missing(sbox):
   expected_status.add({
     'A/B/F'     : Item(status='  ', wc_rev=1),
     'A/B/F/foo' : Item(status='! ', wc_rev=2),
-    'A/B/F/Q'   : Item(status='! ', wc_rev='?'),
-    })
-  if single_db:
-    # Revision known and mergeinfo recorded
-    expected_status.tweak('A/B/F/Q', wc_rev='2')
-    # Missing data still available
-    expected_status.add({
-      'A/B/F/Q'        : Item(status='! ', wc_rev='2'),
-      'A/B/F/Q/baz'    : Item(status='! ', wc_rev='3'),
-      'A/B/F/Q/R'      : Item(status='! ', wc_rev='3'),
-      'A/B/F/Q/R/bar'  : Item(status='! ', wc_rev='3'),
-    })
+    'A/B/F/Q'   : Item(status='! ', wc_rev=2),
+    'A/B/F/Q/baz'    : Item(status='! ', wc_rev='3'),
+    'A/B/F/Q/R'      : Item(status='! ', wc_rev='3'),
+    'A/B/F/Q/R/bar'  : Item(status='! ', wc_rev='3'),
+  })
 
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
@@ -4941,56 +4923,54 @@ def mergeinfo_inheritance(sbox):
 
   # In single-db mode you can't create a disconnected working copy by just
   # copying a subdir
-  if svntest.main.wc_is_singledb(wc_dir):
-    return
 
-  # Copy the subtree A_COPY/B/E from the working copy, making the
-  # disconnected WC E_only.
-  other_wc = sbox.add_wc_path('E_only')
-  svntest.actions.duplicate_dir(E_COPY_path, other_wc)
-
-  # Update the disconnected WC it so it will get the most recent mergeinfo
-  # from the repos when merging.
-  svntest.actions.run_and_verify_svn(None, exp_noop_up_out(7), [], 'up',
-                                     other_wc)
-
-  # Merge r5:4 into the root of the disconnected WC.
-  # E_only has no explicit mergeinfo and since it's the root of the WC
-  # cannot inherit any mergeinfo from a working copy ancestor path. Nor
-  # does it have any mergeinfo explicitly set on it in the repository.
-  # An ancestor path on the repository side, A_COPY/B does have the merge
-  # info '/A/B:5' however and E_only should inherit this, resulting in
-  # empty mergeinfo after the removal of r5 (A_COPY has mergeinfo of
-  # '/A:3' so this empty mergeinfo is needed to override that.
-  expected_output = wc.State(other_wc,
-                             {'beta' : Item(status='U ')})
-  expected_mergeinfo_output = wc.State(other_wc, {
-    '' : Item(status=' G')
-    })
-  expected_elision_output = wc.State(other_wc, {
-    })
-  expected_status = wc.State(other_wc, {
-    ''      : Item(status=' M', wc_rev=7),
-    'alpha' : Item(status='  ', wc_rev=7),
-    'beta'  : Item(status='M ', wc_rev=7),
-    })
-  expected_disk = wc.State('', {
-    ''      : Item(props={SVN_PROP_MERGEINFO : ''}),
-    'alpha' : Item("This is the file 'alpha'.\n"),
-    'beta'  : Item("This is the file 'beta'.\n"),
-    })
-  expected_skip = wc.State(other_wc, { })
-
-  svntest.actions.run_and_verify_merge(other_wc, '5', '4',
-                                       sbox.repo_url + '/A/B/E', None,
-                                       expected_output,
-                                       expected_mergeinfo_output,
-                                       expected_elision_output,
-                                       expected_disk,
-                                       expected_status,
-                                       expected_skip,
-                                       None, None, None, None,
-                                       None, 1)
+  ## Copy the subtree A_COPY/B/E from the working copy, making the
+  ## disconnected WC E_only.
+  #other_wc = sbox.add_wc_path('E_only')
+  #svntest.actions.duplicate_dir(E_COPY_path, other_wc)
+  #
+  ## Update the disconnected WC it so it will get the most recent mergeinfo
+  ## from the repos when merging.
+  #svntest.actions.run_and_verify_svn(None, exp_noop_up_out(7), [], 'up',
+  #                                   other_wc)
+  #
+  ## Merge r5:4 into the root of the disconnected WC.
+  ## E_only has no explicit mergeinfo and since it's the root of the WC
+  ## cannot inherit any mergeinfo from a working copy ancestor path. Nor
+  ## does it have any mergeinfo explicitly set on it in the repository.
+  ## An ancestor path on the repository side, A_COPY/B does have the merge
+  ## info '/A/B:5' however and E_only should inherit this, resulting in
+  ## empty mergeinfo after the removal of r5 (A_COPY has mergeinfo of
+  ## '/A:3' so this empty mergeinfo is needed to override that.
+  #expected_output = wc.State(other_wc,
+  #                           {'beta' : Item(status='U ')})
+  #expected_mergeinfo_output = wc.State(other_wc, {
+  #  '' : Item(status=' G')
+  #  })
+  #expected_elision_output = wc.State(other_wc, {
+  #  })
+  #expected_status = wc.State(other_wc, {
+  #  ''      : Item(status=' M', wc_rev=7),
+  #  'alpha' : Item(status='  ', wc_rev=7),
+  #  'beta'  : Item(status='M ', wc_rev=7),
+  #  })
+  #expected_disk = wc.State('', {
+  #  ''      : Item(props={SVN_PROP_MERGEINFO : ''}),
+  #  'alpha' : Item("This is the file 'alpha'.\n"),
+  #  'beta'  : Item("This is the file 'beta'.\n"),
+  #  })
+  #expected_skip = wc.State(other_wc, { })
+  #
+  #svntest.actions.run_and_verify_merge(other_wc, '5', '4',
+  #                                     sbox.repo_url + '/A/B/E', None,
+  #                                     expected_output,
+  #                                     expected_mergeinfo_output,
+  #                                     expected_elision_output,
+  #                                     expected_disk,
+  #                                     expected_status,
+  #                                     expected_skip,
+  #                                     None, None, None, None,
+  #                                     None, 1)
 
 #----------------------------------------------------------------------
 @SkipUnless(server_has_mergeinfo)
@@ -6964,9 +6944,7 @@ def merge_loses_mergeinfo(sbox):
   expected_elision_output = wc.State(A_C_wc_dir, {
     '' : Item(status=' U'),
     })
-  expected_disk = wc.State('', {'J': Item()})
-  if svntest.main.wc_is_singledb(wc_dir):
-    expected_disk.remove('J')
+  expected_disk = wc.State('', {})
   expected_status = wc.State(A_C_wc_dir,
                              { ''    : Item(wc_rev=4, status=' M'),
                                'J'   : Item(wc_rev=4, status='D ')
@@ -6985,11 +6963,8 @@ def merge_loses_mergeinfo(sbox):
   expected_output = wc.State(A_C_wc_dir, {'K' : Item(status='A ')})
   expected_disk = wc.State('', {
     'K'       : Item(),
-    'J'       : Item(),
     ''        : Item(props={SVN_PROP_MERGEINFO : '/A/B:3'}),
     })
-  if svntest.main.wc_is_singledb(wc_dir):
-    expected_disk.remove('J')
   expected_status = wc.State(A_C_wc_dir,
                              { ''    : Item(wc_rev=4, status=' M'),
                                'K'   : Item(status='A ',
@@ -7652,7 +7627,7 @@ def merge_away_subtrees_noninheritable_r
                                        None, None, None, None, None, 1, 1,
                                        '--depth', 'empty', H_COPY_2_path)
   svntest.actions.run_and_verify_svn(None, None, [], 'commit', '-m',
-                                     'log msg', wc_dir);
+                                     'log msg', wc_dir)
   svntest.actions.run_and_verify_svn(None, None, [], 'up', wc_dir)
   # Now reverse the prior merge.  Issue #3392 manifests itself here with
   # a mergeinfo parsing error:
@@ -7816,6 +7791,10 @@ def merge_to_sparse_directories(sbox):
   # by the merge, 'B' and 'D', get non-inheritable mergeinfo for r4:9.
   # The root and 'D' do should also get the changes
   # that affect them directly (the prop adds from r8 and r9).
+  #
+  # Currently this fails due to r1424469.  For a full explanation see
+  # http://svn.haxx.se/dev/archive-2012-12/0472.shtml
+  # and http://svn.haxx.se/dev/archive-2012-12/0475.shtml
   expected_output = wc.State(immediates_dir, {
     'D'   : Item(status=' U'),
     'mu'  : Item(status='U '),
@@ -7845,8 +7824,8 @@ def merge_to_sparse_directories(sbox):
                               "prop:name" : "propval"}),
     })
   expected_skip = svntest.wc.State(immediates_dir, {
-    'D/H'               : Item(),
-    'B/E'               : Item(),
+    'D/H/omega' : Item(verb="Skipped"),
+    'B/E/beta'  : Item(verb="Skipped"),
     })
   svntest.actions.run_and_verify_merge(immediates_dir, '4', '9',
                                        sbox.repo_url + '/A', None,
@@ -7899,8 +7878,9 @@ def merge_to_sparse_directories(sbox):
                        props={SVN_PROP_MERGEINFO : '/A/mu:5-9'}),
     })
   expected_skip = svntest.wc.State(files_dir, {
-    'D'               : Item(),
-    'B'               : Item(),
+    'D'         : Item(verb="Skipped"),
+    'D/H/omega' : Item(verb="Skipped"),
+    'B/E/beta'  : Item(verb="Skipped"),
     })
   svntest.actions.run_and_verify_merge(files_dir, '4', '9',
                                        sbox.repo_url + '/A', None,
@@ -7942,9 +7922,10 @@ def merge_to_sparse_directories(sbox):
                               "prop:name" : "propval"}),
     })
   expected_skip = svntest.wc.State(empty_dir, {
-    'mu'               : Item(),
-    'D'               : Item(),
-    'B'               : Item(),
+    'mu'        : Item(verb="Skipped missing target"),
+    'D'         : Item(verb="Skipped"),
+    'D/H/omega' : Item(verb="Skipped"),
+    'B/E/beta'  : Item(verb="Skipped"),
     })
   svntest.actions.run_and_verify_merge(empty_dir, '4', '9',
                                        sbox.repo_url + '/A', None,
@@ -14014,7 +13995,6 @@ def no_self_referential_filtering_on_add
                               '/A_COPY/C:8\n' +
                               '/A_COPY/C_MOVED:8',
                               'propname' : 'propval'}),
-    'C'         : Item(),
     'D'         : Item(),
     'D/G'       : Item(),
     'D/G/pi'    : Item("This is the file 'pi'.\n"),
@@ -14026,8 +14006,6 @@ def no_self_referential_filtering_on_add
     'D/H/psi'   : Item("New content"),
     'D/H/omega' : Item("New content"),
     })
-  if svntest.main.wc_is_singledb(wc_dir):
-    expected_A_COPY_2_disk.remove('C')
   expected_A_COPY_2_skip = wc.State(A_COPY_2_path, { })
   svntest.actions.run_and_verify_merge(A_COPY_2_path, None, None,
                                        sbox.repo_url + '/A', None,
@@ -14842,7 +14820,7 @@ def noop_file_merge(sbox):
     [], 'merge', '-c5', sbox.repo_url + '/A', A_COPY_path)
   svntest.actions.run_and_verify_svn(None, None, [], 'commit', '-m',
                                      'Merge r5 from A to A_COPY',
-                                     wc_dir);
+                                     wc_dir)
 
   # Update working copy to allow full inheritance and elision.
   svntest.actions.run_and_verify_svn(None, exp_noop_up_out(7), [],
@@ -15434,9 +15412,10 @@ def skipped_files_get_correct_mergeinfo(
     'D/gamma'   : Item("This is the file 'gamma'.\n"),
     'D/H'       : Item(props={SVN_PROP_MERGEINFO : '/A/D/H:2*,3,4-8*'}),
     })
-  expected_skip = wc.State(A_COPY_path,
-                           {'D/H/psi'   : Item(),
-                            'D/H/omega' : Item()})
+  expected_skip = wc.State(
+    A_COPY_path,
+    {'D/H/psi'   : Item(verb='Skipped missing target'),
+     'D/H/omega' : Item(verb='Skipped missing target')})
   expected_output = wc.State(A_COPY_path,
                              {'B/E/beta'  : Item(status='U '),
                               'D/G/rho'   : Item(status='U ')})
@@ -15591,14 +15570,13 @@ def committed_case_only_move_and_revert(
     })
   expected_disk.tweak('', props={SVN_PROP_MERGEINFO : '/A:3,5'})
   expected_disk.add({'c' : Item()})
-  if svntest.main.wc_is_singledb(wc_dir):
-    expected_disk.remove('C')
+  expected_disk.remove('C')
   expected_status.tweak('MU', status='  ', wc_rev=4, copied=None)
   expected_status.remove('mu')
   expected_status.tweak('C', status='D ')
   expected_status.tweak('', wc_rev=4)
   expected_status.add({'c' : Item(status='A ', copied='+', wc_rev='-')})
-  # This merge succeeds, but A_COPY/c is in a strange state, added with
+  # This merge succeeds. It used to leave a strange state, added with
   # history but missing:
   #
   #   M      merge_tests-139\A_COPY
@@ -15734,7 +15712,7 @@ def foreign_repos_del_and_props(sbox):
   wc_dir = sbox.wc_dir
   wc2_dir = sbox.add_wc_path('wc2')
 
-  (r2_path, r2_url) = sbox.add_repo_path('fgn');
+  (r2_path, r2_url) = sbox.add_repo_path('fgn')
   svntest.main.create_repos(r2_path)
 
   svntest.actions.run_and_verify_svn(None, None, [], 'checkout',
@@ -16135,7 +16113,7 @@ def merge_into_locally_added_file(sbox):
 
   shutil.copy(pi_path, new_path)
   svntest.main.file_append(pi_path, "foo\n")
-  sbox.simple_commit(); # r2
+  sbox.simple_commit() # r2
 
   sbox.simple_add('A/D/G/new')
 
@@ -16180,7 +16158,7 @@ def merge_into_locally_added_directory(s
   new_dir_path = sbox.ospath("A/D/new_dir")
 
   svntest.main.file_append_binary(pi_path, "foo\n")
-  sbox.simple_commit(); # r2
+  sbox.simple_commit() # r2
 
   os.mkdir(new_dir_path)
   svntest.main.file_append_binary(os.path.join(new_dir_path, 'pi'),

Modified: subversion/branches/tree-read-api/subversion/tests/cmdline/merge_tree_conflict_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/tree-read-api/subversion/tests/cmdline/merge_tree_conflict_tests.py?rev=1429457&r1=1429456&r2=1429457&view=diff
==============================================================================
--- subversion/branches/tree-read-api/subversion/tests/cmdline/merge_tree_conflict_tests.py (original)
+++ subversion/branches/tree-read-api/subversion/tests/cmdline/merge_tree_conflict_tests.py Sun Jan  6 02:33:34 2013
@@ -625,7 +625,6 @@ def mergeinfo_recording_in_skipped_merge
     'B'        : Item(),
     'B/lambda' : Item(contents="This is the file 'lambda'.\n"),
     'B/F'      : Item(),
-    'B/E'      : Item(),
     'D/gamma'  : Item("This is the file 'gamma'.\n"),
     'D/G'      : Item(),
     'D/G/pi'   : Item("This is the file 'pi'.\n"),
@@ -636,9 +635,6 @@ def mergeinfo_recording_in_skipped_merge
     'D/H/omega': Item("This is the file 'omega'.\n"),
     'D/H/psi'  : Item("This is the file 'psi'.\n"),
     })
-  if svntest.main.wc_is_singledb(sbox.wc_dir):
-    # Delete removes directories in single-db
-    expected_disk.remove('B/E')
   expected_skip = wc.State(A_COPY_path, {})
   svntest.actions.run_and_verify_merge(A_COPY_path, None, None,
                                        A_url, None,
@@ -769,7 +765,7 @@ def tree_conflicts_and_obstructions(sbox
     'beta'        : Item(status='  ', wc_rev=3),
     })
   expected_skip = wc.State(branch_path, {
-    'alpha-moved' : Item(),
+    'alpha-moved' : Item(verb='Skipped'),
     })
 
   svntest.actions.run_and_verify_merge(branch_path,
@@ -1299,48 +1295,38 @@ def tree_conflicts_merge_edit_onto_missi
     'F'                 : Item(status='  ', wc_rev=3),
     'F/alpha'           : Item(status='! ', wc_rev=3),
     'D'                 : Item(status='  ', wc_rev=3),
-    'D/D1'              : Item(status='! ', wc_rev='?'),
+    'D/D1'              : Item(status='! ', wc_rev='3', entry_rev='?'),
     'DF'                : Item(status='  ', wc_rev=3),
-    'DF/D1'             : Item(status='! ', wc_rev='?'),
-    'DF/D1/beta'        : Item(status='  '),
+    'DF/D1'             : Item(status='! ', wc_rev=3, entry_rev='?'),
+    'DF/D1/beta'        : Item(status='! ', wc_rev=3),
     'DD'                : Item(status='  ', wc_rev=3),
-    'DD/D1'             : Item(status='! ', wc_rev='?'),
-    'DD/D1/D2'          : Item(status='  '),
+    'DD/D1'             : Item(status='! ', wc_rev=3, entry_rev='?'),
+    'DD/D1/D2'          : Item(status='! ', wc_rev=3),
     'DDF'               : Item(status='  ', wc_rev=3),
-    'DDF/D1'            : Item(status='! ', wc_rev='?'),
-    'DDF/D1/D2'         : Item(status='  '),
-    'DDF/D1/D2/gamma'   : Item(status='  '),
+    'DDF/D1'            : Item(status='! ', wc_rev=3, entry_rev='?'),
+    'DDF/D1/D2'         : Item(status='! ', wc_rev=3),
+    'DDF/D1/D2/gamma'   : Item(status='! ', wc_rev=3),
     'DDD'               : Item(status='  ', wc_rev=3),
-    'DDD/D1'            : Item(status='! ', wc_rev='?'),
-    'DDD/D1/D2'         : Item(status='  '),
-    'DDD/D1/D2/D3'      : Item(status='  '),
-    })
-
-  if svntest.main.wc_is_singledb(sbox.wc_dir):
-    expected_status.tweak('D/D1',            wc_rev=3, entry_rev='?')
-    expected_status.tweak('DF/D1',           wc_rev=3, entry_rev='?')
-    expected_status.tweak('DF/D1/beta',      wc_rev=3, status='! ')
-    expected_status.tweak('DD/D1',           wc_rev=3, entry_rev='?')
-    expected_status.tweak('DD/D1/D2',        wc_rev=3, status='! ')
-    expected_status.tweak('DDF/D1',          wc_rev=3, entry_rev='?')
-    expected_status.tweak('DDF/D1/D2',       wc_rev=3, status='! ')
-    expected_status.tweak('DDF/D1/D2/gamma', wc_rev=3, status='! ')
-    expected_status.tweak('DDD/D1',          wc_rev=3, entry_rev='?')
-    expected_status.tweak('DDD/D1/D2',       wc_rev=3, status='! ')
-    expected_status.tweak('DDD/D1/D2/D3',    wc_rev=3, status='! ')
+    'DDD/D1'            : Item(status='! ', wc_rev=3, entry_rev='?'),
+    'DDD/D1/D2'         : Item(status='! ', wc_rev=3),
+    'DDD/D1/D2/D3'      : Item(status='! ', wc_rev=3),
+    })
 
   expected_skip = svntest.wc.State('', {
-    'F/alpha'           : Item(),
-    # BH: After fixing several issues in the obstruction handling
-    #     I get the following Skip notifications. Please review!
-    'D/D1'              : Item(),
-    'DD/D1'             : Item(),
-    'DF/D1'             : Item(),
-    'DDD/D1'            : Item(),
-    'DDF/D1'            : Item(),
+    'F/alpha'           : Item(verb='Skipped missing target'),
+    # Obstruction handling improvements in 1.7 and 1.8 added
+    'DF/D1/beta'        : Item(verb='Skipped missing target'),
+    'DDD/D1/D2/D3/zeta' : Item(verb='Skipped'),
+    'DDD/D1/D2/D3'      : Item(verb='Skipped missing target'),
+    'DDF/D1/D2/gamma'   : Item(verb='Skipped missing target'),
+    'D/D1/delta'        : Item(verb='Skipped'),
+    'D/D1'              : Item(verb='Skipped missing target'),
+    'DD/D1/D2/epsilon'  : Item(verb='Skipped'),
+    'DD/D1/D2'          : Item(verb='Skipped missing target'),
     })
 
-
+  # Currently this test fails because some parts of the merge
+  # start succeeding. 
   svntest.actions.deep_trees_run_tests_scheme_for_merge(sbox,
     [ DeepTreesTestCase(
                "local_tree_missing_incoming_leaf_edit",
@@ -1381,46 +1367,32 @@ def tree_conflicts_merge_del_onto_missin
     'F'                 : Item(status='  ', wc_rev=3),
     'F/alpha'           : Item(status='! ', wc_rev=3),
     'D'                 : Item(status='  ', wc_rev=3),
-    'D/D1'              : Item(status='! ', wc_rev='?'),
+    'D/D1'              : Item(status='! ', wc_rev=3),
     'DF'                : Item(status='  ', wc_rev=3),
-    'DF/D1'             : Item(status='! ', wc_rev='?'),
-    'DF/D1/beta'        : Item(status='  '),
+    'DF/D1'             : Item(status='! ', wc_rev=3),
+    'DF/D1/beta'        : Item(status='! ', wc_rev=3),
     'DD'                : Item(status='  ', wc_rev=3),
-    'DD/D1'             : Item(status='! ', wc_rev='?'),
-    'DD/D1/D2'          : Item(status='  '),
+    'DD/D1'             : Item(status='! ', wc_rev=3),
+    'DD/D1/D2'          : Item(status='! ', wc_rev=3),
     'DDF'               : Item(status='  ', wc_rev=3),
-    'DDF/D1'            : Item(status='! ', wc_rev='?'),
-    'DDF/D1/D2'         : Item(status='  '),
-    'DDF/D1/D2/gamma'   : Item(status='  '),
+    'DDF/D1'            : Item(status='! ', wc_rev=3),
+    'DDF/D1/D2'         : Item(status='! ', wc_rev=3),
+    'DDF/D1/D2/gamma'   : Item(status='! ', wc_rev=3),
     'DDD'               : Item(status='  ', wc_rev=3),
-    'DDD/D1'            : Item(status='! ', wc_rev='?'),
-    'DDD/D1/D2'         : Item(status='  '),
-    'DDD/D1/D2/D3'      : Item(status='  '),
-    })
-
-  if svntest.main.wc_is_singledb(sbox.wc_dir):
-    expected_status.tweak('D/D1',            wc_rev=3)
-    expected_status.tweak('DF/D1',           wc_rev=3)
-    expected_status.tweak('DF/D1/beta',      wc_rev=3, status='! ')
-    expected_status.tweak('DD/D1',           wc_rev=3)
-    expected_status.tweak('DD/D1/D2',        wc_rev=3, status='! ')
-    expected_status.tweak('DDF/D1',          wc_rev=3)
-    expected_status.tweak('DDF/D1/D2',       wc_rev=3, status='! ')
-    expected_status.tweak('DDF/D1/D2/gamma', wc_rev=3, status='! ')
-    expected_status.tweak('DDD/D1',          wc_rev=3)
-    expected_status.tweak('DDD/D1/D2',       wc_rev=3, status='! ')
-    expected_status.tweak('DDD/D1/D2/D3',    wc_rev=3, status='! ')
+    'DDD/D1'            : Item(status='! ', wc_rev=3),
+    'DDD/D1/D2'         : Item(status='! ', wc_rev=3),
+    'DDD/D1/D2/D3'      : Item(status='! ', wc_rev=3),
+    })
 
   expected_skip = svntest.wc.State('', {
-    'F/alpha'           : Item(),
-    'D/D1'              : Item(),
-    # BH: After fixing several issues in the obstruction handling
-    #     I get the following Skip notifications. Please review!
-    'D/D1'              : Item(),
-    'DD/D1'             : Item(),
-    'DF/D1'             : Item(),
-    'DDD/D1'            : Item(),
-    'DDF/D1'            : Item(),
+    'F/alpha'           : Item(verb='Skipped missing target'),
+    'D/D1'              : Item(verb='Skipped missing target'),
+    # Obstruction handling improvements in 1.7 and 1.8 added
+    'D/D1'              : Item(verb='Skipped missing target'),
+    'DD/D1/D2'          : Item(verb='Skipped missing target'),
+    'DF/D1/beta'        : Item(verb='Skipped missing target'),
+    'DDD/D1/D2/D3'      : Item(verb='Skipped missing target'),
+    'DDF/D1/D2/gamma'   : Item(verb='Skipped missing target'),
     })
 
   svntest.actions.deep_trees_run_tests_scheme_for_merge(sbox,

Modified: subversion/branches/tree-read-api/subversion/tests/cmdline/patch_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/tree-read-api/subversion/tests/cmdline/patch_tests.py?rev=1429457&r1=1429456&r2=1429457&view=diff
==============================================================================
--- subversion/branches/tree-read-api/subversion/tests/cmdline/patch_tests.py (original)
+++ subversion/branches/tree-read-api/subversion/tests/cmdline/patch_tests.py Sun Jan  6 02:33:34 2013
@@ -278,7 +278,7 @@ def patch_absolute_paths(sbox):
   expected_status.tweak('A/B/E/alpha', status='M ')
 
   expected_skip = wc.State('', {
-    lambda_path:  Item(),
+    lambda_path:  Item(verb='Skipped missing target'),
   })
 
   svntest.actions.run_and_verify_patch('.', os.path.abspath(patch_file_path),
@@ -999,11 +999,7 @@ def patch_add_new_dir(sbox):
            'X/Y/new'   : Item(contents='new\n'),
            'A/Z'       : Item()
   })
-  expected_disk.remove('A/B/E/alpha')
-  expected_disk.remove('A/B/E/beta')
-  if svntest.main.wc_is_singledb(wc_dir):
-    expected_disk.remove('A/B/E')
-    expected_disk.remove('A/C')
+  expected_disk.remove('A/B/E', 'A/B/E/alpha', 'A/B/E/beta', 'A/C')
 
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
   expected_status.add({
@@ -1016,9 +1012,11 @@ def patch_add_new_dir(sbox):
            'A/C'       : Item(status='D ', wc_rev=1),
   })
 
-  expected_skip = wc.State('', {A_Z_new_path : Item(),
-                                A_B_E_Y_new_path : Item(),
-                                A_C_new_path : Item()})
+  expected_skip = wc.State(
+    '',
+    {A_Z_new_path     : Item(verb='Skipped missing target'),
+     A_B_E_Y_new_path : Item(verb='Skipped missing target'),
+     A_C_new_path     : Item(verb='Skipped missing target')})
 
   svntest.actions.run_and_verify_patch(wc_dir,
                                        os.path.abspath(patch_file_path),
@@ -1103,16 +1101,15 @@ def patch_remove_empty_dirs(sbox):
   ]
 
   expected_disk = svntest.main.greek_state.copy()
-  expected_disk.remove('A/D/H/chi')
-  expected_disk.remove('A/D/H/psi')
-  expected_disk.remove('A/D/H/omega')
-  expected_disk.remove('A/B/lambda')
-  expected_disk.remove('A/B/E/alpha')
-  expected_disk.remove('A/B/E/beta')
-  if svntest.main.wc_is_singledb(wc_dir):
-    expected_disk.remove('A/B/E')
-    expected_disk.remove('A/B/F')
-    expected_disk.remove('A/B')
+  expected_disk.remove('A/D/H/chi',
+                       'A/D/H/psi',
+                       'A/D/H/omega',
+                       'A/B/lambda',
+                       'A/B',
+                       'A/B/E',
+                       'A/B/E/alpha',
+                       'A/B/E/beta',
+                       'A/B/F')
 
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
   expected_status.add({'A/D/H/chi' : Item(status='! ', wc_rev=1)})
@@ -2457,7 +2454,7 @@ def patch_same_twice(sbox):
     '  Skipped paths: 1\n',
   ]
 
-  expected_skip = wc.State('', {beta_path : Item()})
+  expected_skip = wc.State('', {beta_path : Item(verb='Skipped')})
 
   # See above comment about the iota patch being applied twice.
   iota_contents += "Some more bytes\n"
@@ -3978,7 +3975,9 @@ def patch_delete_and_skip(sbox):
   expected_status.tweak('A/B/E/alpha', status='D ')
   expected_status.tweak('A/B/E/beta', status='D ')
 
-  expected_skip = wc.State('', {skipped_path: Item()})
+  expected_skip = wc.State(
+    '',
+    {skipped_path: Item(verb='Skipped missing target')})
 
   svntest.actions.run_and_verify_patch('.', os.path.abspath(patch_file_path),
                                        expected_output,
@@ -4202,6 +4201,7 @@ def patch_git_with_index_line(sbox):
                                        1) # dry-run
 
 @XFail()
+@Issue(4273)
 def patch_change_symlink_target(sbox):
   "patch changes symlink target"
 

Modified: subversion/branches/tree-read-api/subversion/tests/cmdline/prop_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/tree-read-api/subversion/tests/cmdline/prop_tests.py?rev=1429457&r1=1429456&r2=1429457&view=diff
==============================================================================
--- subversion/branches/tree-read-api/subversion/tests/cmdline/prop_tests.py (original)
+++ subversion/branches/tree-read-api/subversion/tests/cmdline/prop_tests.py Sun Jan  6 02:33:34 2013
@@ -2535,11 +2535,11 @@ def inheritable_ignores(sbox):
   sbox.simple_propset('svn:ignore', '*.foo', 'A/B/E')
   sbox.simple_commit()
 
-  # Some directories and files that should be added because they don't
-  # match any applicable ignores.
-  X_dir_path = os.path.join(wc_dir, 'ADD-ME-DIR-X')
-  Y_dir_path = os.path.join(wc_dir, 'A', 'ADD-ME-DIR-Y.doo')
-  Z_dir_path = os.path.join(wc_dir, 'A', 'D', 'G', 'ADD-ME-DIR-Z.doo')
+  # Some directories and files that should always be added because they
+  # don't match any applicable ignore patterns.
+  X_dir_path = sbox.ospath('ADD-ME-DIR-X')
+  Y_dir_path = sbox.ospath('A/ADD-ME-DIR-Y.doo')
+  Z_dir_path = sbox.ospath('A/D/G/ADD-ME-DIR-Z.doo')
   os.mkdir(X_dir_path)
   os.mkdir(Y_dir_path)
   os.mkdir(Z_dir_path)
@@ -2547,11 +2547,11 @@ def inheritable_ignores(sbox):
   # Some directories and files that should be ignored when adding
   # because they match an ignore pattern (unless of course they are
   # the direct target of an add, which we always add).
-  boo_dir_path = os.path.join(wc_dir, 'IGNORE-ME-DIR.boo')
-  goo_dir_path = os.path.join(wc_dir, 'IGNORE-ME-DIR.boo', 'IGNORE-ME-DIR.goo')
-  doo_dir_path = os.path.join(wc_dir, 'A', 'B', 'IGNORE-ME-DIR.doo')
-  moo_dir_path = os.path.join(wc_dir, 'A', 'D', 'IGNORE-ME-DIR.moo')
-  foo_dir_path = os.path.join(wc_dir, 'A', 'B', 'E', 'IGNORE-ME-DIR.foo')
+  boo_dir_path = sbox.ospath('IGNORE-ME-DIR.boo')
+  goo_dir_path = sbox.ospath('IGNORE-ME-DIR.boo/IGNORE-ME-DIR.goo')
+  doo_dir_path = sbox.ospath('A/B/IGNORE-ME-DIR.doo')
+  moo_dir_path = sbox.ospath('A/D/IGNORE-ME-DIR.moo')
+  foo_dir_path = sbox.ospath('A/B/E/IGNORE-ME-DIR.foo')
   os.mkdir(boo_dir_path)
   os.mkdir(goo_dir_path)
   os.mkdir(doo_dir_path)
@@ -2650,8 +2650,8 @@ def inheritable_ignores(sbox):
                                      '--config-dir', config_dir)
   os.chdir(saved_wd)
 
-  # Now revert and try the add with the --no-ignore flag, only the
-  # svn:global-ignores should be enforced.
+  # Now revert and try the add with the --no-ignore flag, nothing should
+  # be ignored.
   svntest.actions.run_and_verify_svn(None, None, [], 'revert', wc_dir, '-R')
   saved_wd = os.getcwd()
   os.chdir(sbox.wc_dir)
@@ -2665,15 +2665,25 @@ def inheritable_ignores(sbox):
                                  'IGNORE-ME-DIR.goo') + '\n',
      'A         ' + os.path.join('A', 'B', 'E', 'IGNORE-ME-DIR.foo') + '\n',
      'A         ' + os.path.join('A', 'B', 'E', 'ignore-me-file.foo') + '\n',
-     'A         ' + os.path.join('A', 'D', 'G', 'ignore-me-file.goo') + '\n'])
-  svntest.actions.run_and_verify_svn("Adds in spite of ignores", expected,
-                                     [], 'add', '.', '--force','--no-ignore',
-                                     '--config-dir', config_dir)
+     'A         ' + os.path.join('A', 'D', 'G', 'ignore-me-file.goo') + '\n',
+
+     'A         ' + os.path.join('A', 'B', 'E', 'ignore-me-file.doo') + '\n',
+     'A         ' + os.path.join('A', 'B', 'IGNORE-ME-DIR.doo') + '\n',
+     'A         ' + os.path.join('A', 'B', 'IGNORE-ME-DIR.doo',
+                                 'ignore-me-file.doo') + '\n',
+     'A         ' + os.path.join('A', 'B', 'IGNORE-ME-DIR.doo',
+                                 'ignore-me-file.roo') + '\n',
+     'A         ' + os.path.join('A', 'D', 'IGNORE-ME-DIR.moo') + '\n',
+     'A         ' + os.path.join('A', 'D', 'ignore-me-file.moo') + '\n'])
+  svntest.actions.run_and_verify_svn("Files ignored with --no-ignore",
+                                     expected, [], 'add', '.', '--force',
+                                     '--no-ignore', '--config-dir',
+                                     config_dir)
 
 def almost_known_prop_names(sbox):
   "propset with svn: prefix but unknown name"
 
-  sbox.build()
+  sbox.build(read_only=True)
   wc_dir = sbox.wc_dir
   iota_path = sbox.ospath('iota')
 

Modified: subversion/branches/tree-read-api/subversion/tests/cmdline/relocate_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/tree-read-api/subversion/tests/cmdline/relocate_tests.py?rev=1429457&r1=1429456&r2=1429457&view=diff
==============================================================================
--- subversion/branches/tree-read-api/subversion/tests/cmdline/relocate_tests.py (original)
+++ subversion/branches/tree-read-api/subversion/tests/cmdline/relocate_tests.py Sun Jan  6 02:33:34 2013
@@ -88,10 +88,7 @@ def relocate_deleted_missing_copied(sbox
     'A/D2/H/omega' : Item(status='  ', wc_rev='-', copied='+'),
     'A/D2/H/psi'   : Item(status='  ', wc_rev='-', copied='+'),
     })
-  if svntest.main.wc_is_singledb(wc_dir):
-    expected_status.tweak('A/B/F', status='! ', wc_rev='1')
-  else:
-    expected_status.tweak('A/B/F', status='! ', wc_rev='?')
+  expected_status.tweak('A/B/F', status='! ', wc_rev='1')
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
   # Relocate
@@ -105,14 +102,10 @@ def relocate_deleted_missing_copied(sbox
 
   # Deleted and missing entries should be preserved, so update should
   # show only A/B/F being reinstated
-  if svntest.main.wc_is_singledb(wc_dir):
-    expected_output = svntest.wc.State(wc_dir, {
+  expected_output = svntest.wc.State(wc_dir, {
         'A/B/F' : Item(verb='Restored'),
-        })
-  else:
-    expected_output = svntest.wc.State(wc_dir, {
-        'A/B/F' : Item(status='A '),
-        })
+  })
+
   expected_disk = svntest.main.greek_state.copy()
   expected_disk.remove('A/mu')
   expected_disk.add({
@@ -123,10 +116,7 @@ def relocate_deleted_missing_copied(sbox
     'A/D2/H/omega' : Item("This is the file 'omega'.\n"),
     'A/D2/H/psi'   : Item("This is the file 'psi'.\n"),
     })
-  if not svntest.main.wc_is_singledb(wc_dir):
-    expected_disk.add({
-        'A/D2/G'       : Item(),
-        })
+
   expected_status.add({
     'A/B/F'       : Item(status='  ', wc_rev='2'),
     })

Modified: subversion/branches/tree-read-api/subversion/tests/cmdline/resolved_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/tree-read-api/subversion/tests/cmdline/resolved_tests.py?rev=1429457&r1=1429456&r2=1429457&view=diff
==============================================================================
--- subversion/branches/tree-read-api/subversion/tests/cmdline/resolved_tests.py (original)
+++ subversion/branches/tree-read-api/subversion/tests/cmdline/resolved_tests.py Sun Jan  6 02:33:34 2013
@@ -111,11 +111,11 @@ def resolved_on_wc_root(sbox):
 
   expected_disk = svntest.main.greek_state.copy()
   expected_disk.remove('iota',
+                       'A/B',
                        'A/B/lambda',
-                       'A/B/E/alpha', 'A/B/E/beta',
+                       'A/B/E', 'A/B/E/alpha', 'A/B/E/beta',
+                       'A/B/F',
                        'A/D/gamma')
-  if svntest.main.wc_is_singledb(sbox.wc_dir):
-    expected_disk.remove('A/B/E', 'A/B/F', 'A/B')
 
   expected_status = svntest.actions.get_virginal_state(wc, 2)
   expected_status.tweak('iota', 'A/B', 'A/D/gamma',



Mime
View raw message