You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by br...@apache.org on 2014/01/09 10:31:15 UTC

svn commit: r1556765 [11/12] - in /subversion/branches/fsfs-ucsnorm: ./ contrib/server-side/fsfsfixer/fixer/ subversion/bindings/javahl/native/ subversion/bindings/javahl/native/jniwrapper/ subversion/bindings/javahl/src/org/apache/subversion/javahl/ s...

Modified: subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/lock_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/lock_tests.py?rev=1556765&r1=1556764&r2=1556765&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/lock_tests.py (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/lock_tests.py Thu Jan  9 09:31:10 2014
@@ -1309,7 +1309,7 @@ def unlock_wrong_token(sbox):
   ### The error message returned is actually this, but let's worry about that
   ### another day...
   svntest.actions.run_and_verify_svn2(
-    None, None, ".*((No lock on path)|(400 Bad Request))", 0,
+    None, None, ".*(No lock on path)", 0,
     'unlock', file_path)
 
 #----------------------------------------------------------------------
@@ -1365,7 +1365,7 @@ def unlocked_lock_of_other_user(sbox):
 
   # now try to unlock with user jconstant, should fail but exit 0.
   if sbox.repo_url.startswith("http"):
-    expected_err = ".*403 Forbidden.*"
+    expected_err = "svn: warning: W160039: .*[Uu]nlock of .*403 Forbidden.*"
   else:
     expected_err = "svn: warning: W160039: User '%s' is trying to use a lock owned by "\
                    "'%s'.*" % (svntest.main.wc_author2, svntest.main.wc_author)
@@ -1460,8 +1460,7 @@ def lock_path_not_in_head(sbox):
                                      '-m', 'Some deletions', wc_dir)
   svntest.actions.run_and_verify_svn(None, None, [], 'up', '-r1', wc_dir)
   expected_lock_fail_err_re = "svn: warning: W160042: " \
-  "((Path .* doesn't exist in HEAD revision)" \
-  "|(L(ock|OCK) request (on '.*' )?failed: 405 Method Not Allowed))"
+  "(Path .* doesn't exist in HEAD revision)"
   # Issue #3524 These lock attemtps were triggering an assert over ra_serf:
   #
   # working_copies\lock_tests-37>svn lock A\D
@@ -1521,7 +1520,6 @@ def verify_path_escaping(sbox):
 
 #----------------------------------------------------------------------
 # Issue #3674: Replace + propset of locked file fails over DAV
-@XFail(svntest.main.is_ra_type_dav)
 @Issue(3674)
 def replace_and_propset_locked_path(sbox):
   "test replace + propset of locked file"
@@ -1554,11 +1552,9 @@ def replace_and_propset_locked_path(sbox
   # Replace A/D/G and A/D/G/rho, propset on A/D/G/rho.
   svntest.actions.run_and_verify_svn(None, None, [],
                                      'rm', G_path)
-  # Recreate path for single-db
-  if not os.path.exists(G_path):
-    os.mkdir(G_path)
+
   svntest.actions.run_and_verify_svn(None, None, [],
-                                     'add', G_path)
+                                     'mkdir', G_path)
   svntest.main.file_append(rho_path, "This is the new file 'rho'.\n")
   svntest.actions.run_and_verify_svn(None, None, [],
                                      'add', rho_path)
@@ -1685,7 +1681,7 @@ def block_unlock_if_pre_unlock_hook_fail
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
   # Make sure the unlock operation fails as pre-unlock hook blocks it.
-  expected_unlock_fail_err_re = ".*error text|.*500 Internal Server Error"
+  expected_unlock_fail_err_re = ".*error text"
   svntest.actions.run_and_verify_svn2(None, None, expected_unlock_fail_err_re,
                                       1, 'unlock', pi_path)
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
@@ -1876,11 +1872,11 @@ def drop_locks_on_parent_deletion(sbox):
     
   expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
   expected_status.tweak('A/B',
-						'A/B/E',
-						'A/B/E/alpha',
-						'A/B/F',
-						'A/B/lambda',
-						wc_rev='3')
+                        'A/B/E',
+                        'A/B/E/alpha',
+                        'A/B/F',
+                        'A/B/lambda',
+                        wc_rev='3')
   expected_status.remove('A/B/E/beta')
    
   svntest.actions.run_and_verify_commit(wc_dir,
@@ -1888,7 +1884,7 @@ def drop_locks_on_parent_deletion(sbox):
                                         expected_status,
                                         None,
                                         wc_dir)
-	
+
 
 def copy_with_lock(sbox):
   """copy with lock on source"""
@@ -1911,15 +1907,57 @@ def copy_with_lock(sbox):
     'A/B/E2/beta'  : Item(status='  ', wc_rev=2),
     })
 
-  # This is really a regression test for httpd: 2.2.25 and 2.4.6 have
-  # a bug that causes mod_dav to check for locks on the copy source
-  # and so the commit fails.
+  # This is really a regression test for httpd: 2.2.25 and 2.4.6, and
+  # earlier, have a bug that causes mod_dav to check for locks on the
+  # copy source and so the commit fails.
   svntest.actions.run_and_verify_commit(wc_dir,
                                         expected_output,
                                         expected_status,
                                         None,
                                         wc_dir)
-										
+
+def lock_hook_messages(sbox):
+  "verify (un)lock message is transferred correctly"
+
+  sbox.build(create_wc = False)
+  repo_dir = sbox.repo_dir
+
+  iota_url = sbox.repo_url + "/iota"
+  mu_url = sbox.repo_url + "/A/mu"
+
+  svntest.actions.run_and_verify_svn(None, ".*locked by user", [], 'lock',
+                                     iota_url)
+
+  error_msg = "Text with <angle brackets> & ampersand"
+  svntest.actions.create_failing_hook(repo_dir, "pre-lock", error_msg)
+  svntest.actions.create_failing_hook(repo_dir, "pre-unlock", error_msg)
+
+  _, _, actual_stderr = svntest.actions.run_and_verify_svn(
+                                     None, [], svntest.verify.AnyOutput,
+                                     'lock', mu_url)
+  if len(actual_stderr) > 2:
+    actual_stderr = actual_stderr[-2:]
+  expected_err = [
+    'svn: E165001: ' + svntest.actions.hook_failure_message('pre-lock'),
+    error_msg + "\n",
+  ]
+  svntest.verify.compare_and_display_lines(None, 'STDERR',
+                                           expected_err, actual_stderr)
+
+
+  _, _, actual_stderr = svntest.actions.run_and_verify_svn(
+                                     None, [], svntest.verify.AnyOutput,
+                                     'unlock', iota_url)
+  if len(actual_stderr) > 2:
+    actual_stderr = actual_stderr[-2:]
+  expected_err = [
+    'svn: E165001: ' + svntest.actions.hook_failure_message('pre-unlock'),
+    error_msg + "\n",
+  ]
+  svntest.verify.compare_and_display_lines(None, 'STDERR',
+                                           expected_err, actual_stderr)
+
+
 ########################################################################
 # Run the tests
 
@@ -1974,6 +2012,7 @@ test_list = [ None,
               commit_stolen_lock,
               drop_locks_on_parent_deletion,
               copy_with_lock,
+              lock_hook_messages,
             ]
 
 if __name__ == '__main__':

Modified: subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/move_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/move_tests.py?rev=1556765&r1=1556764&r2=1556765&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/move_tests.py (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/move_tests.py Thu Jan  9 09:31:10 2014
@@ -1553,6 +1553,29 @@ def copy_move_commit(sbox):
   sbox.simple_move('A/D/GG', 'A/D/GG-moved')
   sbox.simple_commit('A/D/GG-moved')
 
+def move_to_from_external(sbox):
+  "move to and from an external"
+
+  sbox.build()
+  sbox.simple_propset('svn:externals', '^/A/D/G GG', '')
+  sbox.simple_update()
+
+  svntest.actions.run_and_verify_svn(None, None, [],
+                                     'move',
+                                     sbox.ospath('GG/tau'),
+                                     sbox.ospath('tau'))
+
+  svntest.actions.run_and_verify_svn(None, None, [],
+                                     'move',
+                                     sbox.ospath('iota'),
+                                     sbox.ospath('GG/tau'))
+                                     
+  svntest.actions.run_and_verify_svn(None, None, [],
+                                     'ci', '-m', 'Commit both',
+                                     sbox.ospath(''),
+                                     sbox.ospath('GG'))
+  
+
 #######################################################################
 # Run the tests
 
@@ -1569,6 +1592,7 @@ test_list = [ None,
               move_many_update_add,
               move_del_moved,
               copy_move_commit,
+              move_to_from_external,
             ]
 
 if __name__ == '__main__':

Modified: subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/prop_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/prop_tests.py?rev=1556765&r1=1556764&r2=1556765&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/prop_tests.py (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/prop_tests.py Thu Jan  9 09:31:10 2014
@@ -808,7 +808,6 @@ def copy_inherits_special_props(sbox):
 # non-Posix platforms, we won't have to skip here:
 @Skip(is_non_posix_and_non_windows_os)
 @Issue(3086)
-@XFail(svntest.main.is_ra_type_dav)
 def revprop_change(sbox):
   "set, get, and delete a revprop change"
 
@@ -1634,7 +1633,6 @@ def props_over_time(sbox):
 
 # XFail the same reason revprop_change() is.
 @SkipUnless(svntest.main.server_enforces_date_syntax)
-@XFail(svntest.main.is_ra_type_dav)
 @Issue(3086)
 def invalid_propvalues(sbox):
   "test handling invalid svn:* property values"
@@ -1740,9 +1738,9 @@ def post_revprop_change_hook(sbox):
   svntest.actions.create_failing_hook(repo_dir, 'post-revprop-change',
                                       error_msg)
 
-  # serf/neon/mod_dav_svn give SVN_ERR_RA_DAV_REQUEST_FAILED
+  # serf/mod_dav_svn give SVN_ERR_RA_DAV_PROPPATCH_FAILED
   # file/svn give SVN_ERR_REPOS_HOOK_FAILURE
-  expected_error = 'svn: (E175002|E165001).*post-revprop-change hook failed'
+  expected_error = 'svn: (E175008|E165001).*post-revprop-change hook failed'
 
   svntest.actions.run_and_verify_svn(None, [], expected_error,
                                      'ps', '--revprop', '-r0', 'p', 'v',
@@ -2639,10 +2637,23 @@ def xml_unsafe_author(sbox):
   svntest.actions.run_and_verify_info(expected_info, wc_dir)
 
   # mod_dav_svn sends svn:author (via PROPFIND for DAV)
+  # Since r1553367 this works correctly on ra_serf, since we now request
+  # a single property value which somehow triggers different behavior
   svntest.actions.run_and_verify_svn(None, ['foo\bbar'], [],
                                      'propget', '--revprop', '-r', '1',
                                      'svn:author', '--strict', wc_dir)
 
+  # But a proplist of this property value still fails via DAV.
+  expected_output = [
+    'Unversioned properties on revision 1:\n',
+    '  svn:author\n',
+    '  svn:date\n',
+    '  svn:log\n'
+  ]
+  svntest.actions.run_and_verify_svn(None, expected_output, [],
+                                     'proplist', '--revprop', '-r', '1',
+                                     wc_dir)
+
 
 ########################################################################
 # Run the tests

Modified: subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/relocate_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/relocate_tests.py?rev=1556765&r1=1556764&r2=1556765&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/relocate_tests.py (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/relocate_tests.py Thu Jan  9 09:31:10 2014
@@ -42,7 +42,7 @@ Item = svntest.wc.StateItem
 
 from svntest.main import SVN_PROP_MERGEINFO, server_has_mergeinfo
 from externals_tests import change_external
-from switch_tests import do_routine_switching
+from svntest.deeptrees import do_routine_switching
 
 #----------------------------------------------------------------------
 

Modified: subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/svnadmin_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/svnadmin_tests.py?rev=1556765&r1=1556764&r2=1556765&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/svnadmin_tests.py (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/svnadmin_tests.py Thu Jan  9 09:31:10 2014
@@ -1940,6 +1940,7 @@ def mergeinfo_race(sbox):
 
 
 @Issue(4213)
+@Skip(svntest.main.is_fs_type_fsx)
 def recover_old(sbox):
   "recover --pre-1.4-compatible"
   svntest.main.safe_rmtree(sbox.repo_dir, 1)
@@ -2183,24 +2184,15 @@ def verify_denormalized_names(sbox):
 
   expected_output_regex_list = [
     ".*Verified revision 0.",
-                                                # A/{Eacute}
-    "WARNING 0x0003: Denormalized directory name 'A/.*'",
-                                           # A/{icircumflex}{odiaeresis}ta
-    "WARNING 0x0003: Denormalized file name 'A/.*ta'",
     ".*Verified revision 1.",
     ".*Verified revision 2.",
     ".*Verified revision 3.",
                                            # A/{Eacute}/{aring}lpha
-    "WARNING 0x0003: Denormalized file name 'A/.*/.*lpha'",
-    "WARNING 0x0004: Duplicate representation of path 'A/.*/.*lpha'",
+    "WARNING 0x0003: Duplicate representation of path 'A/.*/.*lpha'",
     ".*Verified revision 4.",
     ".*Verified revision 5.",
-                                       # Q/{aring}lpha
-    "WARNING 0x0005: Denormalized path '/Q/.*lpha'"
-                                  # A/{Eacute}
-    " in svn:mergeinfo property of 'A/.*'",
                                                       # Q/{aring}lpha
-    "WARNING 0x0006: Duplicate representation of path '/Q/.*lpha'"
+    "WARNING 0x0004: Duplicate representation of path '/Q/.*lpha'"
                                   # A/{Eacute}
     " in svn:mergeinfo property of 'A/.*'",
     ".*Verified revision 6.",

Modified: subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/svnmucc_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/svnmucc_tests.py?rev=1556765&r1=1556764&r2=1556765&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/svnmucc_tests.py (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/svnmucc_tests.py Thu Jan  9 09:31:10 2014
@@ -310,22 +310,21 @@ def basic_svnmucc(sbox):
 
   # Expected cannot be younger error
   xtest_svnmucc(sbox.repo_url,
-                ['svnmucc: E205000: Copy source revision cannot be younger ' +
-                 'than base revision',
+                ['svnmucc: E160006: No such revision 42',
                  ], #---------
                 '-m', 'log msg',
                 'cp', '42', 'a', 'b')
 
   # Expected already exists error
   xtest_svnmucc(sbox.repo_url,
-                ["svnmucc: E125002: 'foo' already exists",
+                ["svnmucc: E160020: Path 'foo' already exists",
                  ], #---------
                 '-m', 'log msg',
                 'cp', '17', 'a', 'foo')
 
   # Expected copy_src already exists error
   xtest_svnmucc(sbox.repo_url,
-                ["svnmucc: E125002: 'a/bar' (from 'foo/bar:17') already exists",
+                ["svnmucc: E160020: Path 'a/bar' already exists",
                  ], #---------
                 '-m', 'log msg',
                 'cp', '17', 'foo', 'a',
@@ -333,7 +332,7 @@ def basic_svnmucc(sbox):
 
   # Expected not found error
   xtest_svnmucc(sbox.repo_url,
-                ["svnmucc: E125002: 'a' not found",
+                ["svnmucc: E160013: Path 'a' not found in revision 17",
                  ], #---------
                 '-m', 'log msg',
                 'cp', '17', 'a', 'b')

Modified: subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/svnsync_authz_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/svnsync_authz_tests.py?rev=1556765&r1=1556764&r2=1556765&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/svnsync_authz_tests.py (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/svnsync_authz_tests.py Thu Jan  9 09:31:10 2014
@@ -56,7 +56,7 @@ Item = svntest.wc.StateItem
 def basic_authz(sbox):
   "verify that unreadable content is not synced"
 
-  sbox.build("svnsync-basic-authz")
+  sbox.build(create_wc = False)
 
   write_restrictive_svnserve_conf(sbox.repo_dir)
 
@@ -99,7 +99,7 @@ def basic_authz(sbox):
 def copy_from_unreadable_dir(sbox):
   "verify that copies from unreadable dirs work"
 
-  sbox.build("svnsync-copy-from-unreadable-dir")
+  sbox.build()
 
   B_url = sbox.repo_url + '/A/B'
   P_url = sbox.repo_url + '/A/P'
@@ -207,7 +207,7 @@ def copy_from_unreadable_dir(sbox):
 def copy_with_mod_from_unreadable_dir(sbox):
   "verify copies with mods from unreadable dirs"
 
-  sbox.build("svnsync-copy-with-mod-from-unreadable-dir")
+  sbox.build()
 
   # Make a copy of the B directory.
   svntest.actions.run_and_verify_svn(None,
@@ -315,7 +315,7 @@ def copy_with_mod_from_unreadable_dir(sb
 def copy_with_mod_from_unreadable_dir_and_copy(sbox):
   "verify copies with mods from unreadable dirs +copy"
 
-  sbox.build("svnsync-copy-with-mod-from-unreadable-dir-and-copy")
+  sbox.build()
 
   # Make a copy of the B directory.
   svntest.actions.run_and_verify_svn(None,
@@ -396,6 +396,9 @@ def copy_with_mod_from_unreadable_dir_an
 
 def identity_copy(sbox):
   "copy UTF-8 svn:* props identically"
+
+  sbox.build(create_wc = False)
+
   orig_lc_all = locale.setlocale(locale.LC_ALL)
   other_locales = [ "English.1252", "German.1252", "French.1252",
                     "en_US.ISO-8859-1", "en_GB.ISO-8859-1", "de_DE.ISO-8859-1",
@@ -420,7 +423,7 @@ def identity_copy(sbox):
 def specific_deny_authz(sbox):
   "verify if specifically denied paths dont sync"
 
-  sbox.build("specific-deny-authz")
+  sbox.build()
 
   dest_sbox = sbox.clone_dependent()
   build_repos(dest_sbox)
@@ -440,18 +443,19 @@ def specific_deny_authz(sbox):
   # For mod_dav_svn's parent path setup we need per-repos permissions in
   # the authz file...
   if sbox.repo_url.startswith('http'):
+    args = tuple(s.authz_name() for s in [sbox, sbox, sbox, dest_sbox])
     svntest.main.file_write(sbox.authz_file,
-                            "[specific-deny-authz:/]\n"
+                            "[%s:/]\n"
                             "* = r\n"
                             "\n"
-                            "[specific-deny-authz:/A]\n"
+                            "[%s:/A]\n"
                             "* = \n"
                             "\n"
-                            "[specific-deny-authz:/A_COPY/B/lambda]\n"
+                            "[%s:/A_COPY/B/lambda]\n"
                             "* = \n"
                             "\n"
-                            "[specific-deny-authz-1:/]\n"
-                            "* = rw\n")
+                            "[%s:/]\n"
+                            "* = rw\n" % args)
   # Otherwise we can just go with the permissions needed for the source
   # repository.
   else:
@@ -481,7 +485,7 @@ def copy_delete_unreadable_child(sbox):
   "copy, then rm at-src-unreadable child"
 
   # Prepare the source: Greek tree (r1), cp+rm (r2).
-  sbox.build("copy-delete-unreadable-child")
+  sbox.build(create_wc = False)
   svntest.actions.run_and_verify_svnmucc(None, None, [],
                                          '-m', 'r2',
                                          '-U', sbox.repo_url,

Modified: subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/svntest/deeptrees.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/svntest/deeptrees.py?rev=1556765&r1=1556764&r2=1556765&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/svntest/deeptrees.py (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/svntest/deeptrees.py Thu Jan  9 09:31:10 2014
@@ -196,11 +196,7 @@ deep_trees_after_leaf_del = wc.State('',
 
 # deep trees state after a call to deep_trees_leaf_del with no commit
 def deep_trees_after_leaf_del_no_ci(wc_dir):
-  if svntest.main.wc_is_singledb(wc_dir):
-    return deep_trees_after_leaf_del
-  else:
-    return deep_trees_empty_dirs
-
+  return deep_trees_after_leaf_del
 
 def deep_trees_tree_del(base):
   """Helper function for deep trees test cases.  Delete top-level dirs."""
@@ -240,31 +236,9 @@ deep_trees_after_tree_del = wc.State('',
   'DDD'               : Item(),
   })
 
-# deep trees state without any files
-deep_trees_empty_dirs = wc.State('', {
-  'F'               : Item(),
-  'D'               : Item(),
-  'D/D1'            : Item(),
-  'DF'              : Item(),
-  'DF/D1'           : Item(),
-  'DD'              : Item(),
-  'DD/D1'           : Item(),
-  'DD/D1/D2'        : Item(),
-  'DDF'             : Item(),
-  'DDF/D1'          : Item(),
-  'DDF/D1/D2'       : Item(),
-  'DDD'             : Item(),
-  'DDD/D1'          : Item(),
-  'DDD/D1/D2'       : Item(),
-  'DDD/D1/D2/D3'    : Item(),
-  })
-
 # deep trees state after a call to deep_trees_tree_del with no commit
 def deep_trees_after_tree_del_no_ci(wc_dir):
-  if svntest.main.wc_is_singledb(wc_dir):
-    return deep_trees_after_tree_del
-  else:
-    return deep_trees_empty_dirs
+  return deep_trees_after_tree_del
 
 def deep_trees_tree_del_repos(base):
   """Helper function for deep trees test cases.  Delete top-level dirs,
@@ -1018,3 +992,192 @@ def deep_trees_run_tests_scheme_for_merg
         raise
 
 
+### Bummer.  It would be really nice to have easy access to the URL
+### member of our entries files so that switches could be testing by
+### examining the modified ancestry.  But status doesn't show this
+### information.  Hopefully in the future the cmdline binary will have
+### a subcommand for dumping multi-line detailed information about
+### versioned things.  Until then, we'll stick with the traditional
+### verification methods.
+###
+### gjs says: we have 'svn info' now
+
+def get_routine_status_state(wc_dir):
+  """get the routine status list for WC_DIR at the completion of an
+  initial call to do_routine_switching()"""
+
+  # Construct some paths for convenience
+  ADH_path = os.path.join(wc_dir, 'A', 'D', 'H')
+  chi_path = os.path.join(ADH_path, 'chi')
+  omega_path = os.path.join(ADH_path, 'omega')
+  psi_path = os.path.join(ADH_path, 'psi')
+  pi_path = os.path.join(ADH_path, 'pi')
+  tau_path = os.path.join(ADH_path, 'tau')
+  rho_path = os.path.join(ADH_path, 'rho')
+
+  # Now generate a state
+  state = svntest.actions.get_virginal_state(wc_dir, 1)
+  state.remove('A/B/E', 'A/B/E/alpha', 'A/B/E/beta', 'A/B/F', 'A/B/lambda')
+  state.add({
+    'A/B/pi' : Item(status='  ', wc_rev=1),
+    'A/B/tau' : Item(status='  ', wc_rev=1),
+    'A/B/rho' : Item(status='  ', wc_rev=1),
+    })
+
+  return state
+
+#----------------------------------------------------------------------
+
+def get_routine_disk_state(wc_dir):
+  """get the routine disk list for WC_DIR at the completion of an
+  initial call to do_routine_switching()"""
+
+  disk = svntest.main.greek_state.copy()
+
+  # iota has the same contents as gamma
+  disk.tweak('iota', contents=disk.desc['A/D/gamma'].contents)
+
+  # A/B/* no longer exist, but have been replaced by copies of A/D/G/*
+  disk.remove('A/B/E', 'A/B/E/alpha', 'A/B/E/beta', 'A/B/F', 'A/B/lambda')
+  disk.add({
+    'A/B/pi' : Item("This is the file 'pi'.\n"),
+    'A/B/rho' : Item("This is the file 'rho'.\n"),
+    'A/B/tau' : Item("This is the file 'tau'.\n"),
+    })
+
+  return disk
+
+#----------------------------------------------------------------------
+
+def do_routine_switching(wc_dir, repo_url, verify):
+  """perform some routine switching of the working copy WC_DIR for
+  other tests to use.  If VERIFY, then do a full verification of the
+  switching, else don't bother."""
+
+  ### Switch the file `iota' to `A/D/gamma'.
+
+  # Construct some paths for convenience
+  iota_path = os.path.join(wc_dir, 'iota')
+  gamma_url = repo_url + '/A/D/gamma'
+
+  if verify:
+    # Create expected output tree
+    expected_output = svntest.wc.State(wc_dir, {
+      'iota' : Item(status='U '),
+      })
+
+    # Create expected disk tree (iota will have gamma's contents)
+    expected_disk = svntest.main.greek_state.copy()
+    expected_disk.tweak('iota',
+                        contents=expected_disk.desc['A/D/gamma'].contents)
+
+    # Create expected status tree
+    expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
+    expected_status.tweak('iota', switched='S')
+
+    # Do the switch and check the results in three ways.
+    svntest.actions.run_and_verify_switch(wc_dir, iota_path, gamma_url,
+                                          expected_output,
+                                          expected_disk,
+                                          expected_status,
+                                          None, None, None, None, None,
+                                          False, '--ignore-ancestry')
+  else:
+    svntest.main.run_svn(None, 'switch', '--ignore-ancestry',
+                         gamma_url, iota_path)
+
+  ### Switch the directory `A/B' to `A/D/G'.
+
+  # Construct some paths for convenience
+  AB_path = os.path.join(wc_dir, 'A', 'B')
+  ADG_url = repo_url + '/A/D/G'
+
+  if verify:
+    # Create expected output tree
+    expected_output = svntest.wc.State(wc_dir, {
+      'A/B/E'       : Item(status='D '),
+      'A/B/F'       : Item(status='D '),
+      'A/B/lambda'  : Item(status='D '),
+      'A/B/pi' : Item(status='A '),
+      'A/B/tau' : Item(status='A '),
+      'A/B/rho' : Item(status='A '),
+      })
+
+    # Create expected disk tree (iota will have gamma's contents,
+    # A/B/* will look like A/D/G/*)
+    expected_disk = get_routine_disk_state(wc_dir)
+
+    # Create expected status
+    expected_status = get_routine_status_state(wc_dir)
+    expected_status.tweak('iota', 'A/B', switched='S')
+
+    # Do the switch and check the results in three ways.
+    svntest.actions.run_and_verify_switch(wc_dir, AB_path, ADG_url,
+                                          expected_output,
+                                          expected_disk,
+                                          expected_status,
+                                          None, None, None, None, None,
+                                          False, '--ignore-ancestry')
+  else:
+    svntest.main.run_svn(None, 'switch', '--ignore-ancestry',
+                         ADG_url, AB_path)
+
+
+#----------------------------------------------------------------------
+
+def commit_routine_switching(wc_dir, verify):
+  "Commit some stuff in a routinely-switched working copy."
+
+  # Make some local mods
+  iota_path = os.path.join(wc_dir, 'iota')
+  Bpi_path = os.path.join(wc_dir, 'A', 'B', 'pi')
+  Gpi_path = os.path.join(wc_dir, 'A', 'D', 'G', 'pi')
+  Z_path = os.path.join(wc_dir, 'A', 'D', 'G', 'Z')
+  zeta_path = os.path.join(wc_dir, 'A', 'D', 'G', 'Z', 'zeta')
+
+  svntest.main.file_append(iota_path, "apple")
+  svntest.main.file_append(Bpi_path, "melon")
+  svntest.main.file_append(Gpi_path, "banana")
+  os.mkdir(Z_path)
+  svntest.main.file_append(zeta_path, "This is the file 'zeta'.\n")
+  svntest.main.run_svn(None, 'add', Z_path)
+
+  # Try to commit.  We expect this to fail because, if all the
+  # switching went as expected, A/B/pi and A/D/G/pi point to the
+  # same URL.  We don't allow this.
+  svntest.actions.run_and_verify_commit(
+    wc_dir, None, None,
+    "svn: E195003: Cannot commit both .* as they refer to the same URL$",
+    wc_dir)
+
+  # Okay, that all taken care of, let's revert the A/D/G/pi path and
+  # move along.  Afterward, we should be okay to commit.  (Sorry,
+  # holsta, that banana has to go...)
+  svntest.main.run_svn(None, 'revert', Gpi_path)
+
+  # Create expected output tree.
+  expected_output = svntest.wc.State(wc_dir, {
+    'A/D/G/Z' : Item(verb='Adding'),
+    'A/D/G/Z/zeta' : Item(verb='Adding'),
+    'iota' : Item(verb='Sending'),
+    'A/B/pi' : Item(verb='Sending'),
+    })
+
+  # Created expected status tree.
+  expected_status = get_routine_status_state(wc_dir)
+  expected_status.tweak('iota', 'A/B', switched='S')
+  expected_status.tweak('iota', 'A/B/pi', wc_rev=2, status='  ')
+  expected_status.add({
+    'A/D/G/Z' : Item(status='  ', wc_rev=2),
+    'A/D/G/Z/zeta' : Item(status='  ', wc_rev=2),
+    })
+
+  # Commit should succeed
+  if verify:
+    svntest.actions.run_and_verify_commit(wc_dir,
+                                          expected_output,
+                                          expected_status,
+                                          None, wc_dir)
+  else:
+    svntest.main.run_svn(None,
+                         'ci', '-m', 'log msg', wc_dir)

Modified: subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/svntest/sandbox.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/svntest/sandbox.py?rev=1556765&r1=1556764&r2=1556765&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/svntest/sandbox.py (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/svntest/sandbox.py Thu Jan  9 09:31:10 2014
@@ -63,23 +63,9 @@ class Sandbox:
       self.repo_dir = svntest.main.pristine_greek_repos_dir
       self.repo_url = svntest.main.pristine_greek_repos_url
 
-    ### TODO: Move this into to the build() method
-    # For dav tests we need a single authz file which must be present,
-    # so we recreate it each time a sandbox is created with some default
-    # contents, making sure that an empty file is never present
     if self.repo_url.startswith("http"):
-      # this dir doesn't exist out of the box, so we may have to make it
-      if not os.path.exists(svntest.main.work_dir):
-        os.makedirs(svntest.main.work_dir)
       self.authz_file = os.path.join(svntest.main.work_dir, "authz")
-      tmp_authz_file = os.path.join(svntest.main.work_dir, "authz-" + self.name)
-      open(tmp_authz_file, 'w').write("[/]\n* = rw\n")
-      shutil.move(tmp_authz_file, self.authz_file)
       self.groups_file = os.path.join(svntest.main.work_dir, "groups")
-
-    # For svnserve tests we have a per-repository authz file, and it
-    # doesn't need to be there in order for things to work, so we don't
-    # have any default contents.
     elif self.repo_url.startswith("svn"):
       self.authz_file = os.path.join(self.repo_dir, "conf", "authz")
       self.groups_file = os.path.join(self.repo_dir, "conf", "groups")
@@ -108,9 +94,24 @@ class Sandbox:
        and check out a WC from it (unless CREATE_WC is false). Change the
        sandbox's name to NAME. See actions.make_repo_and_wc() for details."""
     self._set_name(name, read_only)
+    self._ensure_authz()
     svntest.actions.make_repo_and_wc(self, create_wc, read_only, minor_version)
     self._is_built = True
 
+  def _ensure_authz(self):
+    "make sure the repository is accessible"
+
+    if self.repo_url.startswith("http"):
+      default_authz = "[/]\n* = rw\n"
+
+      if (svntest.main.options.parallel == 0
+          and (not os.path.isfile(self.authz_file)
+               or open(self.authz_file,'r').read() != default_authz)):
+
+        tmp_authz_file = os.path.join(svntest.main.work_dir, "authz-" + self.name)
+        open(tmp_authz_file, 'w').write(default_authz)
+        shutil.move(tmp_authz_file, self.authz_file)
+
   def authz_name(self, repo_dir=None):
     "return this sandbox's name for use in an authz file"
     repo_dir = repo_dir or self.repo_dir

Modified: subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/switch_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/switch_tests.py?rev=1556765&r1=1556764&r2=1556765&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/switch_tests.py (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/switch_tests.py Thu Jan  9 09:31:10 2014
@@ -41,198 +41,8 @@ Wimp = svntest.testcase.Wimp_deco
 Item = svntest.wc.StateItem
 
 from svntest.main import SVN_PROP_MERGEINFO, server_has_mergeinfo
-
-
-### Bummer.  It would be really nice to have easy access to the URL
-### member of our entries files so that switches could be testing by
-### examining the modified ancestry.  But status doesn't show this
-### information.  Hopefully in the future the cmdline binary will have
-### a subcommand for dumping multi-line detailed information about
-### versioned things.  Until then, we'll stick with the traditional
-### verification methods.
-###
-### gjs says: we have 'svn info' now
-
-def get_routine_status_state(wc_dir):
-  """get the routine status list for WC_DIR at the completion of an
-  initial call to do_routine_switching()"""
-
-  # Construct some paths for convenience
-  ADH_path = os.path.join(wc_dir, 'A', 'D', 'H')
-  chi_path = os.path.join(ADH_path, 'chi')
-  omega_path = os.path.join(ADH_path, 'omega')
-  psi_path = os.path.join(ADH_path, 'psi')
-  pi_path = os.path.join(ADH_path, 'pi')
-  tau_path = os.path.join(ADH_path, 'tau')
-  rho_path = os.path.join(ADH_path, 'rho')
-
-  # Now generate a state
-  state = svntest.actions.get_virginal_state(wc_dir, 1)
-  state.remove('A/B/E', 'A/B/E/alpha', 'A/B/E/beta', 'A/B/F', 'A/B/lambda')
-  state.add({
-    'A/B/pi' : Item(status='  ', wc_rev=1),
-    'A/B/tau' : Item(status='  ', wc_rev=1),
-    'A/B/rho' : Item(status='  ', wc_rev=1),
-    })
-
-  return state
-
-#----------------------------------------------------------------------
-
-def get_routine_disk_state(wc_dir):
-  """get the routine disk list for WC_DIR at the completion of an
-  initial call to do_routine_switching()"""
-
-  disk = svntest.main.greek_state.copy()
-
-  # iota has the same contents as gamma
-  disk.tweak('iota', contents=disk.desc['A/D/gamma'].contents)
-
-  # A/B/* no longer exist, but have been replaced by copies of A/D/G/*
-  disk.remove('A/B/E', 'A/B/E/alpha', 'A/B/E/beta', 'A/B/F', 'A/B/lambda')
-  disk.add({
-    'A/B/pi' : Item("This is the file 'pi'.\n"),
-    'A/B/rho' : Item("This is the file 'rho'.\n"),
-    'A/B/tau' : Item("This is the file 'tau'.\n"),
-    })
-
-  return disk
-
-#----------------------------------------------------------------------
-
-def do_routine_switching(wc_dir, repo_url, verify):
-  """perform some routine switching of the working copy WC_DIR for
-  other tests to use.  If VERIFY, then do a full verification of the
-  switching, else don't bother."""
-
-  ### Switch the file `iota' to `A/D/gamma'.
-
-  # Construct some paths for convenience
-  iota_path = os.path.join(wc_dir, 'iota')
-  gamma_url = repo_url + '/A/D/gamma'
-
-  if verify:
-    # Create expected output tree
-    expected_output = svntest.wc.State(wc_dir, {
-      'iota' : Item(status='U '),
-      })
-
-    # Create expected disk tree (iota will have gamma's contents)
-    expected_disk = svntest.main.greek_state.copy()
-    expected_disk.tweak('iota',
-                        contents=expected_disk.desc['A/D/gamma'].contents)
-
-    # Create expected status tree
-    expected_status = svntest.actions.get_virginal_state(wc_dir, 1)
-    expected_status.tweak('iota', switched='S')
-
-    # Do the switch and check the results in three ways.
-    svntest.actions.run_and_verify_switch(wc_dir, iota_path, gamma_url,
-                                          expected_output,
-                                          expected_disk,
-                                          expected_status,
-                                          None, None, None, None, None,
-                                          False, '--ignore-ancestry')
-  else:
-    svntest.main.run_svn(None, 'switch', '--ignore-ancestry',
-                         gamma_url, iota_path)
-
-  ### Switch the directory `A/B' to `A/D/G'.
-
-  # Construct some paths for convenience
-  AB_path = os.path.join(wc_dir, 'A', 'B')
-  ADG_url = repo_url + '/A/D/G'
-
-  if verify:
-    # Create expected output tree
-    expected_output = svntest.wc.State(wc_dir, {
-      'A/B/E'       : Item(status='D '),
-      'A/B/F'       : Item(status='D '),
-      'A/B/lambda'  : Item(status='D '),
-      'A/B/pi' : Item(status='A '),
-      'A/B/tau' : Item(status='A '),
-      'A/B/rho' : Item(status='A '),
-      })
-
-    # Create expected disk tree (iota will have gamma's contents,
-    # A/B/* will look like A/D/G/*)
-    expected_disk = get_routine_disk_state(wc_dir)
-
-    # Create expected status
-    expected_status = get_routine_status_state(wc_dir)
-    expected_status.tweak('iota', 'A/B', switched='S')
-
-    # Do the switch and check the results in three ways.
-    svntest.actions.run_and_verify_switch(wc_dir, AB_path, ADG_url,
-                                          expected_output,
-                                          expected_disk,
-                                          expected_status,
-                                          None, None, None, None, None,
-                                          False, '--ignore-ancestry')
-  else:
-    svntest.main.run_svn(None, 'switch', '--ignore-ancestry',
-                         ADG_url, AB_path)
-
-
-#----------------------------------------------------------------------
-
-def commit_routine_switching(wc_dir, verify):
-  "Commit some stuff in a routinely-switched working copy."
-
-  # Make some local mods
-  iota_path = os.path.join(wc_dir, 'iota')
-  Bpi_path = os.path.join(wc_dir, 'A', 'B', 'pi')
-  Gpi_path = os.path.join(wc_dir, 'A', 'D', 'G', 'pi')
-  Z_path = os.path.join(wc_dir, 'A', 'D', 'G', 'Z')
-  zeta_path = os.path.join(wc_dir, 'A', 'D', 'G', 'Z', 'zeta')
-
-  svntest.main.file_append(iota_path, "apple")
-  svntest.main.file_append(Bpi_path, "melon")
-  svntest.main.file_append(Gpi_path, "banana")
-  os.mkdir(Z_path)
-  svntest.main.file_append(zeta_path, "This is the file 'zeta'.\n")
-  svntest.main.run_svn(None, 'add', Z_path)
-
-  # Try to commit.  We expect this to fail because, if all the
-  # switching went as expected, A/B/pi and A/D/G/pi point to the
-  # same URL.  We don't allow this.
-  svntest.actions.run_and_verify_commit(
-    wc_dir, None, None,
-    "svn: E195003: Cannot commit both .* as they refer to the same URL$",
-    wc_dir)
-
-  # Okay, that all taken care of, let's revert the A/D/G/pi path and
-  # move along.  Afterward, we should be okay to commit.  (Sorry,
-  # holsta, that banana has to go...)
-  svntest.main.run_svn(None, 'revert', Gpi_path)
-
-  # Create expected output tree.
-  expected_output = svntest.wc.State(wc_dir, {
-    'A/D/G/Z' : Item(verb='Adding'),
-    'A/D/G/Z/zeta' : Item(verb='Adding'),
-    'iota' : Item(verb='Sending'),
-    'A/B/pi' : Item(verb='Sending'),
-    })
-
-  # Created expected status tree.
-  expected_status = get_routine_status_state(wc_dir)
-  expected_status.tweak('iota', 'A/B', switched='S')
-  expected_status.tweak('iota', 'A/B/pi', wc_rev=2, status='  ')
-  expected_status.add({
-    'A/D/G/Z' : Item(status='  ', wc_rev=2),
-    'A/D/G/Z/zeta' : Item(status='  ', wc_rev=2),
-    })
-
-  # Commit should succeed
-  if verify:
-    svntest.actions.run_and_verify_commit(wc_dir,
-                                          expected_output,
-                                          expected_status,
-                                          None, wc_dir)
-  else:
-    svntest.main.run_svn(None,
-                         'ci', '-m', 'log msg', wc_dir)
-
+from svntest.deeptrees import do_routine_switching, commit_routine_switching, \
+                              get_routine_disk_state, get_routine_status_state
 
 ######################################################################
 # Tests
@@ -2280,8 +2090,6 @@ disk_after_leaf_edit = svntest.deeptrees
 disk_after_leaf_del = svntest.deeptrees.deep_trees_after_leaf_del
 disk_after_tree_del = svntest.deeptrees.deep_trees_after_tree_del
 
-disk_empty_dirs = svntest.deeptrees.deep_trees_empty_dirs
-
 deep_trees_conflict_output = svntest.deeptrees.deep_trees_conflict_output
 deep_trees_conflict_output_skipped = \
     svntest.deeptrees.deep_trees_conflict_output_skipped
@@ -2315,11 +2123,15 @@ def tree_conflicts_on_switch_1_1(sbox):
     'DDF/D1/D2'         : Item(status='  ', treeconflict='U'),
     'DDF/D1/D2/gamma'   : Item(status='  ', treeconflict='U')
   })
-
-  expected_disk = disk_empty_dirs.copy()
-  expected_disk.remove('D/D1', 'DF/D1', 'DD/D1', 'DD/D1/D2',
-                       'DDF/D1', 'DDF/D1/D2',
-                       'DDD/D1', 'DDD/D1/D2', 'DDD/D1/D2/D3')
+  
+  expected_disk = svntest.wc.State('', {
+  'F'               : Item(),
+  'D'               : Item(),
+  'DF'              : Item(),
+  'DD'              : Item(),
+  'DDF'             : Item(),
+  'DDD'             : Item(),
+  })
 
   # The files delta, epsilon, and zeta are incoming additions, but since
   # they are all within locally deleted trees they should also be schedule
@@ -2402,7 +2214,14 @@ def tree_conflicts_on_switch_1_2(sbox):
     'DF/D1/beta'        : Item(status='  ', treeconflict='D'),
   })
 
-  expected_disk = disk_empty_dirs.copy()
+  expected_disk = svntest.wc.State('', {
+    'F'               : Item(),
+    'D'               : Item(),
+    'DF'              : Item(),
+    'DD'              : Item(),
+    'DDF'             : Item(),
+    'DDD'             : Item(),
+  })
 
   expected_status = deep_trees_status_local_tree_del.copy()
 
@@ -2425,13 +2244,6 @@ def tree_conflicts_on_switch_1_2(sbox):
                          'DDD/D1/D2/D3',
                          'DDF/D1/D2/gamma',
                          'DF/D1/beta')
-  ### Why does the deep trees state not include files?
-  expected_disk.remove('D/D1',
-                       'DD/D1/D2',
-                       'DDD/D1/D2/D3')
-  expected_disk.remove('DF/D1', 'DD/D1',
-                       'DDF/D1', 'DDF/D1/D2',
-                       'DDD/D1', 'DDD/D1/D2')
 
   expected_info = {
     'F/alpha' : {
@@ -2580,7 +2392,14 @@ def tree_conflicts_on_switch_2_2(sbox):
   ### when dirs_same_p() is implemented)
   expected_output = deep_trees_conflict_output
 
-  expected_disk = disk_empty_dirs.copy()
+  expected_disk = svntest.wc.State('', {
+    'F'               : Item(),
+    'D'               : Item(),
+    'DF'              : Item(),
+    'DD'              : Item(),
+    'DDF'             : Item(),
+    'DDD'             : Item(),
+  })
 
   expected_status = svntest.deeptrees.deep_trees_virginal_state.copy()
   expected_status.add({'' : Item(),
@@ -2605,15 +2424,6 @@ def tree_conflicts_on_switch_2_2(sbox):
                          'DDD/D1/D2/D3',
                          'DDF/D1/D2',
                          'DDF/D1/D2/gamma',)
-  expected_disk.remove('D/D1',
-                       'DD/D1',
-                       'DD/D1/D2',
-                       'DF/D1',
-                       'DDD/D1',
-                       'DDD/D1/D2',
-                       'DDD/D1/D2/D3',
-                       'DDF/D1',
-                       'DDF/D1/D2',)
 
   expected_info = {
     'F/alpha' : {
@@ -2672,7 +2482,14 @@ def tree_conflicts_on_switch_3(sbox):
 
   expected_output = deep_trees_conflict_output
 
-  expected_disk = disk_empty_dirs.copy()
+  expected_disk = svntest.wc.State('', {
+    'F'               : Item(),
+    'D'               : Item(),
+    'DF'              : Item(),
+    'DD'              : Item(),
+    'DDF'             : Item(),
+    'DDD'             : Item(),
+  })
 
   expected_status = deep_trees_status_local_tree_del.copy()
   expected_status.tweak('', switched='S')
@@ -2694,15 +2511,6 @@ def tree_conflicts_on_switch_3(sbox):
                          'DDD/D1/D2/D3',
                          'DDF/D1/D2',
                          'DDF/D1/D2/gamma',)
-  expected_disk.remove('D/D1',
-                       'DD/D1',
-                       'DD/D1/D2',
-                       'DF/D1',
-                       'DDD/D1',
-                       'DDD/D1/D2',
-                       'DDD/D1/D2/D3',
-                       'DDF/D1',
-                       'DDF/D1/D2',)
 
   expected_info = {
     'F/alpha' : {

Modified: subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/tree_conflict_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/tree_conflict_tests.py?rev=1556765&r1=1556764&r2=1556765&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/tree_conflict_tests.py (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/tree_conflict_tests.py Thu Jan  9 09:31:10 2014
@@ -654,7 +654,6 @@ def up_sw_dir_del_onto_del(sbox):
 #   Adding         branch1\dC\D
 #
 #   Committed revision 4.
-@XFail(svntest.main.is_ra_type_dav)
 @Issue(3314)
 def up_sw_dir_add_onto_add(sbox):
   "up/sw dir: add onto add"

Modified: subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/update_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/update_tests.py?rev=1556765&r1=1556764&r2=1556765&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/update_tests.py (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/update_tests.py Thu Jan  9 09:31:10 2014
@@ -4189,8 +4189,6 @@ disk_after_leaf_edit = svntest.deeptrees
 disk_after_leaf_del = svntest.deeptrees.deep_trees_after_leaf_del
 disk_after_tree_del = svntest.deeptrees.deep_trees_after_tree_del
 
-disk_empty_dirs = svntest.deeptrees.deep_trees_empty_dirs
-
 deep_trees_conflict_output = svntest.deeptrees.deep_trees_conflict_output
 deep_trees_conflict_output_skipped = \
     svntest.deeptrees.deep_trees_conflict_output_skipped
@@ -4223,11 +4221,14 @@ def tree_conflicts_on_update_1_1(sbox):
     'DF/D1/beta'        : Item(status='  ', treeconflict='U'),
   })
 
-  expected_disk = disk_empty_dirs.copy()
-  expected_disk.remove('D/D1', 'DF/D1', 'DD/D1', 'DD/D1/D2',
-                       'DDF/D1', 'DDF/D1/D2',
-                       'DDD/D1', 'DDD/D1/D2', 'DDD/D1/D2/D3')
-
+  expected_disk = svntest.wc.State('', {
+    'F'               : Item(),
+    'D'               : Item(),
+    'DF'              : Item(),
+    'DD'              : Item(),
+    'DDF'             : Item(),
+    'DDD'             : Item(),
+  })
   # The files delta, epsilon, and zeta are incoming additions, but since
   # they are all within locally deleted trees they should also be schedule
   # for deletion.
@@ -4307,7 +4308,14 @@ def tree_conflicts_on_update_1_2(sbox):
     'DDF/D1/D2/gamma'   : Item(status='  ', treeconflict='D'),
   })
 
-  expected_disk = disk_empty_dirs.copy()
+  expected_disk = svntest.wc.State('', {
+    'F'               : Item(),
+    'D'               : Item(),
+    'DF'              : Item(),
+    'DD'              : Item(),
+    'DDF'             : Item(),
+    'DDD'             : Item(),
+  })
 
   expected_status = deep_trees_status_local_tree_del.copy()
 
@@ -4330,14 +4338,6 @@ def tree_conflicts_on_update_1_2(sbox):
                          'DDF/D1/D2/gamma',
                          'DF/D1/beta')
 
-  ### Why does the deep trees state not include files?
-  expected_disk.remove('D/D1',
-                       'DD/D1/D2',
-                       'DDD/D1/D2/D3',
-                       'DF/D1', 'DD/D1',
-                       'DDF/D1', 'DDF/D1/D2',
-                       'DDD/D1', 'DDD/D1/D2')
-
   expected_info = {
     'F/alpha' : {
       'Tree conflict' :
@@ -4486,7 +4486,14 @@ def tree_conflicts_on_update_2_2(sbox):
   ### when dirs_same_p() is implemented)
   expected_output = deep_trees_conflict_output
 
-  expected_disk = disk_empty_dirs.copy()
+  expected_disk = svntest.wc.State('', {
+    'F'               : Item(),
+    'D'               : Item(),
+    'DF'              : Item(),
+    'DD'              : Item(),
+    'DDF'             : Item(),
+    'DDD'             : Item(),
+  })
 
   expected_status = svntest.deeptrees.deep_trees_virginal_state.copy()
   expected_status.add({'' : Item()})
@@ -4519,16 +4526,6 @@ def tree_conflicts_on_update_2_2(sbox):
                          'DDF/D1/D2',
                          'DDF/D1/D2/gamma',)
 
-  expected_disk.remove('D/D1',
-                       'DD/D1',
-                       'DD/D1/D2',
-                       'DF/D1',
-                       'DDD/D1',
-                       'DDD/D1/D2',
-                       'DDD/D1/D2/D3',
-                       'DDF/D1',
-                       'DDF/D1/D2',)
-
   expected_info = {
     'F/alpha' : {
       'Tree conflict' :
@@ -4659,8 +4656,14 @@ def tree_conflicts_on_update_3(sbox):
 
   expected_output = deep_trees_conflict_output
 
-  expected_disk = disk_empty_dirs.copy()
-
+  expected_disk = svntest.wc.State('', {
+    'F'               : Item(),
+    'D'               : Item(),
+    'DF'              : Item(),
+    'DD'              : Item(),
+    'DDF'             : Item(),
+    'DDD'             : Item(),
+  })
   expected_status = deep_trees_status_local_tree_del.copy()
 
   # Expect the incoming tree deletes and the local tree deletes to mean
@@ -4681,16 +4684,6 @@ def tree_conflicts_on_update_3(sbox):
                          'DDF/D1/D2',
                          'DDF/D1/D2/gamma',)
 
-  expected_disk.remove('D/D1',
-                       'DD/D1',
-                       'DD/D1/D2',
-                       'DF/D1',
-                       'DDD/D1',
-                       'DDD/D1/D2',
-                       'DDD/D1/D2/D3',
-                       'DDF/D1',
-                       'DDF/D1/D2',)
-
   expected_info = {
     'F/alpha' : {
       'Tree conflict' :
@@ -6568,7 +6561,6 @@ def move_update_props(sbox):
 
 @Issues(3288)
 @SkipUnless(svntest.main.is_os_windows)
-@XFail(svntest.main.is_ra_type_dav)
 def windows_update_backslash(sbox):
   "test filename with backslashes inside"
 
@@ -6576,17 +6568,43 @@ def windows_update_backslash(sbox):
 
   wc_dir = sbox.wc_dir
 
+  mucc_url = sbox.repo_url
+
+  if mucc_url.startswith('http'):
+    # Apache Httpd doesn't allow creating paths with '\\' in them on Windows
+    # AH00026: found %2f (encoded '/') in URI (decoded='/svn-test-work/repositories/authz_tests-30/!svn/ver/2/A/completely\\unusable\\dir'), returning 404
+    #
+    # Let's use file:// to work around.
+    mucc_url = 'file:///' + os.path.abspath(sbox.repo_dir).replace('\\', '/')
+
   svntest.actions.run_and_verify_svnmucc(None, None, [],
-                    '-U', sbox.repo_url,
+                    '-U', mucc_url,
                     '-m', '',
                     'mkdir', 'A/completely\\unusable\\dir')
 
   # No error and a proper skip + recording in the working copy would also
   # be a good result. This just verifies current behavior.
 
-  expected_error = 'svn: E155000: .* is not valid.*'
-  svntest.actions.run_and_verify_svn(wc_dir, None, expected_error, 'up',
-                                     wc_dir)
+  if sbox.repo_url.startswith('http'):
+    # Apache Httpd doesn't allow paths with '\\' in them on Windows, so the
+    # test if a user is allowed to read them returns a failure. This makes
+    # mod_dav_svn report the path as server excluded (aka absent), which
+    # doesn't produce output when updating.
+    expected_output = [
+      "Updating '%s':\n" % wc_dir,
+      "At revision 2.\n"
+    ]
+    expected_err = []
+  else:
+    expected_output = None
+    expected_err = 'svn: E155000: .* is not valid.*'
+
+  svntest.actions.run_and_verify_svn(wc_dir, expected_output, expected_err,
+                                     'up', wc_dir)
+
+  if sbox.repo_url.startswith('http'):
+    expected_status = svntest.actions.get_virginal_state(wc_dir, 2)
+    svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
 def update_moved_away(sbox):
   "update subtree of moved away"

Modified: subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/upgrade_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/upgrade_tests.py?rev=1556765&r1=1556764&r2=1556765&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/upgrade_tests.py (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/tests/cmdline/upgrade_tests.py Thu Jan  9 09:31:10 2014
@@ -109,8 +109,7 @@ def check_format(sbox, expected_format):
       raise svntest.Failure("found format '%d'; expected '%d'; in wc '%s'" %
                             (found_format, expected_format, root))
 
-    if svntest.main.wc_is_singledb(sbox.wc_dir):
-      dirs[:] = []
+    dirs[:] = []
 
     if dot_svn in dirs:
       dirs.remove(dot_svn)

Modified: subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_client/client-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_client/client-test.c?rev=1556765&r1=1556764&r2=1556765&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_client/client-test.c (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_client/client-test.c Thu Jan  9 09:31:10 2014
@@ -769,6 +769,61 @@ test_foreign_repos_copy(const svn_test_o
   return SVN_NO_ERROR;
 }
 
+static svn_error_t *
+test_suggest_mergesources(const svn_test_opts_t *opts,
+                          apr_pool_t *pool)
+{
+  const char *repos_url;
+  svn_client_ctx_t *ctx;
+  svn_client_mtcc_t *mtcc;
+  apr_array_header_t *results;
+  svn_opt_revision_t peg_rev;
+  svn_opt_revision_t head_rev;
+  const char *wc_dir;
+
+  peg_rev.kind = svn_opt_revision_unspecified;
+
+  /* Create a filesytem and repository containing the Greek tree. */
+  SVN_ERR(create_greek_repos(&repos_url, "mergesources", opts, pool));
+
+  SVN_ERR(svn_client_create_context(&ctx, pool));
+
+  SVN_ERR(svn_client_mtcc_create(&mtcc, repos_url, -1, ctx, pool, pool));
+  SVN_ERR(svn_client_mtcc_add_copy("A", 1, "AA", mtcc, pool));
+  SVN_ERR(svn_client_mtcc_commit(NULL, NULL, NULL, mtcc, pool));
+
+  SVN_ERR(svn_client_suggest_merge_sources(
+                    &results,
+                    svn_path_url_add_component2(repos_url, "AA", pool),
+                    &peg_rev, ctx, pool));
+  SVN_TEST_ASSERT(results != NULL);
+  SVN_TEST_ASSERT(results->nelts >= 1);
+  SVN_TEST_STRING_ASSERT(APR_ARRAY_IDX(results, 0, const char *),
+                          svn_path_url_add_component2(repos_url, "A", pool));
+
+  /* And now test the same thing with a minimal working copy */
+  wc_dir = svn_test_data_path("mergesources-wc", pool);
+  svn_test_add_dir_cleanup(wc_dir);
+
+  head_rev.kind = svn_opt_revision_head;
+  SVN_ERR(svn_client_checkout3(NULL,
+                               svn_path_url_add_component2(repos_url, "AA", pool),
+                               wc_dir,
+                               &head_rev, &head_rev, svn_depth_empty,
+                               FALSE, FALSE, ctx, pool));
+
+
+  SVN_ERR(svn_client_suggest_merge_sources(&results,
+                                           wc_dir,
+                                           &peg_rev, ctx, pool));
+  SVN_TEST_ASSERT(results != NULL);
+  SVN_TEST_ASSERT(results->nelts >= 1);
+  SVN_TEST_STRING_ASSERT(APR_ARRAY_IDX(results, 0, const char *),
+                          svn_path_url_add_component2(repos_url, "A", pool));
+
+  return SVN_NO_ERROR;
+}
+
 /* ========================================================================== */
 
 
@@ -789,5 +844,7 @@ struct svn_test_descriptor_t test_funcs[
     SVN_TEST_OPTS_PASS(test_16k_add, "test adding 16k files"),
 #endif
     SVN_TEST_OPTS_PASS(test_youngest_common_ancestor, "test youngest_common_ancestor"),
+    SVN_TEST_OPTS_PASS(test_suggest_mergesources,
+                       "test svn_client_suggest_merge_sources"),
     SVN_TEST_NULL
   };

Modified: subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_fs/fs-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_fs/fs-test.c?rev=1556765&r1=1556764&r2=1556765&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_fs/fs-test.c (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_fs/fs-test.c Thu Jan  9 09:31:10 2014
@@ -44,6 +44,7 @@
 #include "../svn_test_fs.h"
 
 #include "../../libsvn_delta/delta.h"
+#include "../../libsvn_fs/fs-loader.h"
 
 #define SET_STR(ps, s) ((ps)->data = (s), (ps)->len = strlen(s))
 
@@ -5091,11 +5092,11 @@ commit_timestamp(const svn_test_opts_t *
                               opts, pool));
 
   /* Commit with a specified svn:date. */
-  SVN_ERR(svn_fs_begin_txn(&txn, fs, rev, pool));
+  SVN_ERR(svn_fs_begin_txn2(&txn, fs, rev, SVN_FS_TXN_CLIENT_DATE, pool));
   SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool));
   SVN_ERR(svn_fs_make_dir(txn_root, "/foo", pool));
   SVN_ERR(svn_fs_change_txn_prop(txn, SVN_PROP_REVISION_DATE, date, pool));
-  SVN_ERR(svn_fs_commit_txn2(NULL, &rev, txn, FALSE, pool));
+  SVN_ERR(svn_fs_commit_txn(NULL, &rev, txn, pool));
 
   SVN_ERR(svn_fs_revision_proplist(&proplist, fs, rev, pool));
   svn_date = apr_hash_get(proplist, SVN_PROP_REVISION_DATE,
@@ -5104,10 +5105,33 @@ commit_timestamp(const svn_test_opts_t *
 
   /* Commit that overwrites the specified svn:date. */
   SVN_ERR(svn_fs_begin_txn(&txn, fs, rev, pool));
+  {
+    /* Setting the internal property doesn't enable svn:date behaviour. */
+    apr_array_header_t *props = apr_array_make(pool, 3, sizeof(svn_prop_t));
+    svn_prop_t prop, other_prop1, other_prop2;
+    svn_string_t *val;
+
+    prop.name = SVN_FS__PROP_TXN_CLIENT_DATE;
+    prop.value = svn_string_create("1", pool);
+    other_prop1.name = "foo";
+    other_prop1.value = svn_string_create("fooval", pool);
+    other_prop2.name = "bar";
+    other_prop2.value = svn_string_create("barval", pool);
+    APR_ARRAY_PUSH(props, svn_prop_t) = other_prop1;
+    APR_ARRAY_PUSH(props, svn_prop_t) = prop;
+    APR_ARRAY_PUSH(props, svn_prop_t) = other_prop2;
+    SVN_ERR(svn_fs_change_txn_props(txn, props, pool));
+    SVN_ERR(svn_fs_txn_prop(&val, txn, other_prop1.name, pool));
+    SVN_TEST_ASSERT(val && !strcmp(val->data, other_prop1.value->data));
+    SVN_ERR(svn_fs_txn_prop(&val, txn, other_prop2.name, pool));
+    SVN_TEST_ASSERT(val && !strcmp(val->data, other_prop2.value->data));
+
+    SVN_ERR(svn_fs_change_txn_prop(txn, prop.name, prop.value, pool));
+  }
   SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool));
   SVN_ERR(svn_fs_make_dir(txn_root, "/bar", pool));
   SVN_ERR(svn_fs_change_txn_prop(txn, SVN_PROP_REVISION_DATE, date, pool));
-  SVN_ERR(svn_fs_commit_txn2(NULL, &rev, txn, TRUE, pool));
+  SVN_ERR(svn_fs_commit_txn(NULL, &rev, txn, pool));
 
   SVN_ERR(svn_fs_revision_proplist(&proplist, fs, rev, pool));
   svn_date = apr_hash_get(proplist, SVN_PROP_REVISION_DATE,
@@ -5115,13 +5139,13 @@ commit_timestamp(const svn_test_opts_t *
   SVN_TEST_ASSERT(svn_date && strcmp(svn_date->data, date->data));
 
   /* Commit with a missing svn:date. */
-  SVN_ERR(svn_fs_begin_txn(&txn, fs, rev, pool));
+  SVN_ERR(svn_fs_begin_txn2(&txn, fs, rev, SVN_FS_TXN_CLIENT_DATE, pool));
   SVN_ERR(svn_fs_txn_root(&txn_root, txn, pool));
   SVN_ERR(svn_fs_make_dir(txn_root, "/zag", pool));
   SVN_ERR(svn_fs_change_txn_prop(txn, SVN_PROP_REVISION_DATE, NULL, pool));
   SVN_ERR(svn_fs_txn_prop(&svn_date, txn, SVN_PROP_REVISION_DATE, pool));
   SVN_TEST_ASSERT(!svn_date);
-  SVN_ERR(svn_fs_commit_txn2(NULL, &rev, txn, FALSE, pool));
+  SVN_ERR(svn_fs_commit_txn(NULL, &rev, txn, pool));
 
   SVN_ERR(svn_fs_revision_proplist(&proplist, fs, rev, pool));
   svn_date = apr_hash_get(proplist, SVN_PROP_REVISION_DATE,
@@ -5135,7 +5159,7 @@ commit_timestamp(const svn_test_opts_t *
   SVN_ERR(svn_fs_change_txn_prop(txn, SVN_PROP_REVISION_DATE, NULL, pool));
   SVN_ERR(svn_fs_txn_prop(&svn_date, txn, SVN_PROP_REVISION_DATE, pool));
   SVN_TEST_ASSERT(!svn_date);
-  SVN_ERR(svn_fs_commit_txn2(NULL, &rev, txn, TRUE, pool));
+  SVN_ERR(svn_fs_commit_txn(NULL, &rev, txn, pool));
 
   SVN_ERR(svn_fs_revision_proplist(&proplist, fs, rev, pool));
   svn_date = apr_hash_get(proplist, SVN_PROP_REVISION_DATE,

Modified: subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c?rev=1556765&r1=1556764&r2=1556765&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c Thu Jan  9 09:31:10 2014
@@ -1024,7 +1024,7 @@ upgrade_txns_to_log_addressing(const svn
       svn_pool_clear(iterpool);
 
       SVN_ERR(svn_fs_open_txn(&txn, fs, txn_name, iterpool));
-      SVN_ERR(svn_fs_commit_txn2(NULL, &rev, txn, TRUE, iterpool));
+      SVN_ERR(svn_fs_commit_txn(NULL, &rev, txn, iterpool));
     }
 
   /* Further changes to fill the shard */

Modified: subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_repos/repos-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_repos/repos-test.c?rev=1556765&r1=1556764&r2=1556765&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_repos/repos-test.c (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_repos/repos-test.c Thu Jan  9 09:31:10 2014
@@ -3444,7 +3444,7 @@ test_config_pool(const svn_test_opts_t *
   SVN_ERR(svn_fs_make_file(root, "dir/config", pool));
   SVN_ERR(svn_test__set_file_contents(root, "dir/config",
                                       cfg_buffer1->data, pool));
-  SVN_ERR(svn_fs_commit_txn2(NULL, &rev, txn, TRUE, pool));
+  SVN_ERR(svn_fs_commit_txn(NULL, &rev, txn, pool));
 
   /* reading the config from the repo should still give cfg1 */
   SVN_ERR(svn_repos__config_pool_get(&cfg, NULL, config_pool,
@@ -3462,7 +3462,7 @@ test_config_pool(const svn_test_opts_t *
   SVN_ERR(svn_fs_copy(rev_root, "dir", root, "another-dir", pool));
   SVN_ERR(svn_test__set_file_contents(root, "dir/config",
                                       cfg_buffer2->data, pool));
-  SVN_ERR(svn_fs_commit_txn2(NULL, &rev, txn, TRUE, pool));
+  SVN_ERR(svn_fs_commit_txn(NULL, &rev, txn, pool));
 
   /* reading the config from the repo should give cfg2 now */
   SVN_ERR(svn_repos__config_pool_get(&cfg, NULL, config_pool,

Modified: subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_subr/packed-data-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_subr/packed-data-test.c?rev=1556765&r1=1556764&r2=1556765&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_subr/packed-data-test.c (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_subr/packed-data-test.c Thu Jan  9 09:31:10 2014
@@ -31,7 +31,6 @@
 #include <stdio.h>
 #include <string.h>
 #include <apr_pools.h>
-#include <apr_poll.h>
 
 #include "../svn_test.h"
 

Modified: subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_subr/priority-queue-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_subr/priority-queue-test.c?rev=1556765&r1=1556764&r2=1556765&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_subr/priority-queue-test.c (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_subr/priority-queue-test.c Thu Jan  9 09:31:10 2014
@@ -35,7 +35,7 @@
 #include "../svn_test.h"
 
 #include "svn_error.h"
-#include "svn_sorts.h"
+#include "private/svn_sorts_private.h"
 
 /* priority queue test:
  * items in the queue are simple integers, in ascending order */

Modified: subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_wc/db-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_wc/db-test.c?rev=1556765&r1=1556764&r2=1556765&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_wc/db-test.c (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_wc/db-test.c Thu Jan  9 09:31:10 2014
@@ -338,13 +338,16 @@ create_open(svn_wc__db_t **db,
             apr_pool_t *pool)
 {
   SVN_ERR(svn_dirent_get_absolute(local_abspath,
-                                  svn_dirent_join("fake-wc", subdir, pool),
+                                  svn_dirent_join(
+                                        svn_test_data_path("db-test", pool),
+                                        subdir, pool),
                                   pool));
-  SVN_ERR(svn_wc__db_open(db, NULL, FALSE, TRUE, pool, pool));
-  SVN_ERR(svn_test__create_fake_wc(*local_abspath, TESTING_DATA, pool, pool));
 
   svn_test_add_dir_cleanup(*local_abspath);
 
+  SVN_ERR(svn_wc__db_open(db, NULL, FALSE, TRUE, pool, pool));
+  SVN_ERR(svn_test__create_fake_wc(*local_abspath, TESTING_DATA, pool, pool));
+
   return SVN_NO_ERROR;
 }
 

Modified: subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_wc/op-depth-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_wc/op-depth-test.c?rev=1556765&r1=1556764&r2=1556765&view=diff
==============================================================================
--- subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_wc/op-depth-test.c (original)
+++ subversion/branches/fsfs-ucsnorm/subversion/tests/libsvn_wc/op-depth-test.c Thu Jan  9 09:31:10 2014
@@ -41,9 +41,10 @@
 
 #include "utils.h"
 
-#include "private/svn_wc_private.h"
-#include "private/svn_sqlite.h"
 #include "private/svn_dep_compat.h"
+#include "private/svn_sorts_private.h"
+#include "private/svn_sqlite.h"
+#include "private/svn_wc_private.h"
 #include "../../libsvn_wc/wc.h"
 #include "../../libsvn_wc/wc_db.h"
 #include "../../libsvn_wc/workqueue.h"

Propchange: subversion/branches/fsfs-ucsnorm/tools/dev/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Thu Jan  9 09:31:10 2014
@@ -1,4 +1,3 @@
 .libs
 fsfs-access-map
-fsfs-reorg
 logdata.py