Modified: subversion/branches/remove-log-addressing/subversion/tests/cmdline/dav-mirror-autocheck.sh URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/cmdline/dav-mirror-autocheck.sh?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/cmdline/dav-mirror-autocheck.sh (original) +++ subversion/branches/remove-log-addressing/subversion/tests/cmdline/dav-mirror-autocheck.sh Sat Feb 14 11:15:05 2015 @@ -23,7 +23,7 @@ # to the slave. The test should be able to throw all kinds # of svn operations at one or the other, and master/slave # verified as identical in the end. -# +# # Master / slave setup is achieved in a single httpd process # using virtual hosts bound to different addresses on the # loopback network (127.0.0.1, 127.0.0.2) for slave and @@ -34,7 +34,7 @@ # http://subversion.tigris.org/issues/show_bug.cgi?id=2939 # But of course, any svn traffic liable to break over # mirroring would be a good addition. -# +# # Most of the httpd setup was lifted from davautocheck.sh. # The common boilerplate snippets to setup/start/stop httpd # between the two could be factored out and shared. @@ -95,7 +95,7 @@ function get_prog_name() { return 1 } -# splat out httpd config +# splat out httpd config function setup_config() { say "setting up config: " $1 @@ -152,7 +152,7 @@ CustomLog "${HTTPD_ROOT}/ops" ServerName ${SLAVE_HOST} CustomLog "${HTTPD_ROOT}/slave_access_log" common ErrorLog "${HTTPD_ROOT}/slave_error_log" -# slave 'normal' location +# slave 'normal' location <Location "/${SLAVE_LOCATION}"> DAV svn SVNPath "${SLAVE_REPOS}" @@ -196,7 +196,7 @@ function usage() { echo echo " " '<test-work-directory>' must not exist, \ I will not clobber it for you 1>&2 - exit 1 + exit 1 } ### Start execution here ### @@ -403,7 +403,7 @@ $SVNSYNC initialize --non-interactive "$ # # reproducible test case from: # http://subversion.tigris.org/issues/show_bug.cgi?id=2939 -# +# BASE_URL="$SLAVE_URL" say running svnmucc test to $BASE_URL svnmucc="$SVNMUCC --non-interactive --username jrandom --password rayjandom -mm" @@ -492,7 +492,7 @@ say "Some house-keeping..." say "Re-activating the post-commit hook on the master repo: $MASTER_REPOS." mv "$MASTER_REPOS/hooks/post-commit_" "$MASTER_REPOS/hooks/post-commit" say "Syncing slave with master." -$SVNSYNC --non-interactive sync "$SYNC_URL" --username=svnsync --password=svnsync +$SVNSYNC --non-interactive sync "$SYNC_URL" --username=svnsync --password=svnsync # shut it down echo -n "${SCRIPT}: stopping httpd: " $HTTPD -f $HTTPD_CONFIG -k stop
Modified: subversion/branches/remove-log-addressing/subversion/tests/cmdline/davautocheck.sh URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/cmdline/davautocheck.sh?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/cmdline/davautocheck.sh (original) +++ subversion/branches/remove-log-addressing/subversion/tests/cmdline/davautocheck.sh Sat Feb 14 11:15:05 2015 @@ -62,7 +62,7 @@ # one version's client against another version's server) specify both APXS # *and* MODULE_PATH for the other server: # -# APXS=/opt/svn/1.4.x/bin/apxs MODULE_PATH=/opt/svn/1.4.x/modules \ +# APXS=/opt/svn/1.4.x/bin/apxs MODULE_PATH=/opt/svn/1.4.x/modules \ # subversion/tests/cmdline/davautocheck.sh # # To prevent the server from advertising httpv2, pass USE_HTTPV1 in @@ -71,7 +71,7 @@ # To enable "SVNCacheRevProps on" set CACHE_REVPROPS in the environment. # # To test over https set USE_SSL in the environment. -# +# # To use value for "SVNPathAuthz" directive set SVN_PATH_AUTHZ with # appropriate value in the environment. # @@ -114,7 +114,7 @@ query() { if [ -n "$BASH_VERSION" ]; then read -n 1 -t 32 else - # + # prog=" import select as s import sys @@ -163,7 +163,7 @@ get_prog_name() { } # Don't assume sbin is in the PATH. -# ### Presumably this is used to locate /usr/sbin/apxs or /usr/sbin/apache2 +# ### Presumably this is used to locate /usr/sbin/apxs or /usr/sbin/apache2 PATH="$PATH:/usr/sbin:/usr/local/sbin" # Find the source and build directories. The build dir can be found if it is Modified: subversion/branches/remove-log-addressing/subversion/tests/cmdline/export_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/cmdline/export_tests.py?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/cmdline/export_tests.py (original) +++ subversion/branches/remove-log-addressing/subversion/tests/cmdline/export_tests.py Sat Feb 14 11:15:05 2015 @@ -1016,18 +1016,18 @@ def export_file_external(sbox): @Issue(4427) def export_file_externals2(sbox): "exporting file externals" - + sbox.build() sbox.simple_mkdir('DIR', 'DIR2') - + sbox.simple_propset('svn:externals', '^/iota file', 'DIR') sbox.simple_propset('svn:externals', '^/DIR TheDir', 'DIR2') sbox.simple_commit() sbox.simple_update() - + tmp = sbox.add_wc_path('tmp') os.mkdir(tmp) - + expected_output = svntest.wc.State(tmp, { 'file' : Item(status='A '), }) @@ -1040,7 +1040,7 @@ def export_file_externals2(sbox): tmp, expected_output, expected_disk) - + expected_output = svntest.wc.State(tmp, { 'DIR/file' : Item(status='A '), }) @@ -1052,7 +1052,7 @@ def export_file_externals2(sbox): os.path.join(tmp, 'DIR'), expected_output, expected_disk) - + expected_output = svntest.wc.State(tmp, { 'DIR2/TheDir/file' : Item(status='A '), }) Modified: subversion/branches/remove-log-addressing/subversion/tests/cmdline/externals_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/cmdline/externals_tests.py?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/cmdline/externals_tests.py (original) +++ subversion/branches/remove-log-addressing/subversion/tests/cmdline/externals_tests.py Sat Feb 14 11:15:05 2015 @@ -3437,7 +3437,7 @@ def update_deletes_file_external(sbox): # As of r1448345, this update fails: # E000002: Can't remove directory '.../A_copy/C': No such file or directory sbox.simple_update() - + @Issue(4519) def switch_relative_externals(sbox): @@ -3541,6 +3541,339 @@ def replace_tree_with_foreign_external(s None, None, None, None, None, 1, '-r', '2', wc_dir) + +def verify_pinned_externals(sbox, external_url_for, base_path_or_url, + external_youngest_rev, other_external_youngest_rev): + "helper for pin-externals tests" + + expected_output = [ + '%s@%d gamma\n' % (external_url_for["A/B/gamma"], + external_youngest_rev), + '\n', + ] + if svntest.sandbox.is_url(base_path_or_url): + target = base_path_or_url + '/A_copy/B' + else: + target = sbox.ospath('A_copy/B') + svntest.actions.run_and_verify_svn(expected_output, [], + 'propget', 'svn:externals', + target) + expected_output = [ + 'exdir_G -r%d %s\n' % (other_external_youngest_rev, + external_url_for["A/C/exdir_G"]), + '%s exdir_H\n' % external_url_for["A/C/exdir_H"], + '\n', + ] + if svntest.sandbox.is_url(base_path_or_url): + target = base_path_or_url + '/A_copy/C' + else: + target = sbox.ospath('A_copy/C') + svntest.actions.run_and_verify_svn(expected_output, [], + 'propget', 'svn:externals', + target) + expected_output = [ + '%s@%d exdir_A\n' % (external_url_for["A/D/exdir_A"], + other_external_youngest_rev), + '%s@%d exdir_A/G\n' % (external_url_for["A/D/exdir_A/G/"], + other_external_youngest_rev), + 'exdir_A/H -r1 %s\n' % external_url_for["A/D/exdir_A/H"], + '%s@%d x/y/z/blah\n' % (external_url_for["A/D/x/y/z/blah"], + other_external_youngest_rev), + '\n', + ] + if svntest.sandbox.is_url(base_path_or_url): + target = base_path_or_url + '/A_copy/D' + else: + target = sbox.ospath('A_copy/D') + svntest.actions.run_and_verify_svn(expected_output, [], + 'propget', 'svn:externals', + target) + + +def copy_pin_externals_repos_repos(sbox): + "svn copy --pin-externals repos->repos" + + external_url_for = externals_test_setup(sbox) + + repo_url = sbox.repo_url + repo_dir = sbox.repo_dir + other_repo_dir = repo_dir + ".other" + + external_youngest_rev = svntest.main.youngest(repo_dir) + other_external_youngest_rev = svntest.main.youngest(other_repo_dir) + + # Perform a repos->repos copy, pinning externals + svntest.actions.run_and_verify_svn(None, [], + 'copy', + repo_url + '/A', + repo_url + '/A_copy', + '-m', 'copy', + '--pin-externals') + verify_pinned_externals(sbox, external_url_for, repo_url, + external_youngest_rev, other_external_youngest_rev) + + +def copy_pin_externals_repos_wc(sbox): + "svn copy --pin-externals repos->wc" + + external_url_for = externals_test_setup(sbox) + + wc_dir = sbox.wc_dir + repo_url = sbox.repo_url + repo_dir = sbox.repo_dir + other_repo_dir = repo_dir + ".other" + + external_youngest_rev = svntest.main.youngest(repo_dir) + other_external_youngest_rev = svntest.main.youngest(other_repo_dir) + + # Create a working copy. + svntest.actions.run_and_verify_svn(None, [], + 'checkout', + repo_url, wc_dir) + + # Perform a repos->wc copy, pinning externals + external_youngest_rev = svntest.main.youngest(repo_dir) + svntest.actions.run_and_verify_svn(None, [], + 'copy', + repo_url + '/A', + os.path.join(wc_dir, 'A_copy'), + '--pin-externals') + verify_pinned_externals(sbox, external_url_for, wc_dir, + external_youngest_rev, other_external_youngest_rev) + + +def copy_pin_externals_wc_repos(sbox): + "svn copy --pin-externals wc->repos" + + external_url_for = externals_test_setup(sbox) + + wc_dir = sbox.wc_dir + repo_url = sbox.repo_url + repo_dir = sbox.repo_dir + other_repo_dir = repo_dir + ".other" + + external_youngest_rev = svntest.main.youngest(repo_dir) + other_external_youngest_rev = svntest.main.youngest(other_repo_dir) + + # Create a working copy. + svntest.actions.run_and_verify_svn(None, [], + 'checkout', + repo_url, wc_dir) + + # Perform a wc->repos copy, pinning externals + svntest.actions.run_and_verify_svn(None, [], + 'copy', + os.path.join(wc_dir, 'A'), + repo_url + '/A_copy', + '-m', 'copy', + '--pin-externals') + verify_pinned_externals(sbox, external_url_for, repo_url, + external_youngest_rev, other_external_youngest_rev) + + +def copy_pin_externals_wc_wc(sbox): + "svn copy --pin-externals wc->wc" + + external_url_for = externals_test_setup(sbox) + + wc_dir = sbox.wc_dir + repo_url = sbox.repo_url + repo_dir = sbox.repo_dir + other_repo_dir = repo_dir + ".other" + + external_youngest_rev = svntest.main.youngest(repo_dir) + other_external_youngest_rev = svntest.main.youngest(other_repo_dir) + + # Create a working copy. + svntest.actions.run_and_verify_svn(None, [], + 'checkout', + repo_url, wc_dir) + + # Perform a wc->wc copy, pinning externals + svntest.actions.run_and_verify_svn(None, [], + 'copy', + os.path.join(wc_dir, 'A'), + os.path.join(wc_dir, 'A_copy'), + '--pin-externals') + verify_pinned_externals(sbox, external_url_for, wc_dir, + external_youngest_rev, other_external_youngest_rev) + + +def copy_pin_externals_moved_external(sbox): + "pin externals which were moved since last changed" + + external_url_for = externals_test_setup(sbox) + + wc_dir = sbox.wc_dir + repo_url = sbox.repo_url + repo_dir = sbox.repo_dir + other_repo_dir = repo_dir + ".other" + + external_youngest_rev = svntest.main.youngest(repo_dir) + other_external_youngest_rev = svntest.main.youngest(other_repo_dir) + + # Create a working copy. + svntest.actions.run_and_verify_svn(None, [], + 'checkout', + repo_url, wc_dir) + + # Test behaviour for external URLs which were moved since + # their last-changed revision. + sbox.simple_move('A/D/gamma', 'A/D/gamma-moved') + sbox.simple_commit() + change_external(sbox.ospath('A/B'), '^/A/D/gamma-moved gamma', commit=True) + sbox.simple_update() + external_youngest_rev = svntest.main.youngest(repo_dir) + svntest.actions.run_and_verify_svn(None, [], + 'copy', + os.path.join(wc_dir, 'A'), + os.path.join(wc_dir, 'A_copy'), + '--pin-externals') + external_url_for["A/B/gamma"] = '^/A/D/gamma-moved' + verify_pinned_externals(sbox, external_url_for, wc_dir, + external_youngest_rev, other_external_youngest_rev) + + +def copy_pin_externals_removed_in_head(sbox): + "already pinned external which was removed in HEAD" + + external_url_for = externals_test_setup(sbox) + + wc_dir = sbox.wc_dir + repo_url = sbox.repo_url + repo_dir = sbox.repo_dir + other_repo_url = repo_url + ".other" + other_repo_dir = repo_dir + ".other" + + # Create a working copy. + svntest.actions.run_and_verify_svn(None, [], + 'checkout', + repo_url, wc_dir) + + # Test an already pinned external which was removed in HEAD. + svntest.actions.run_and_verify_svn(None, [], + 'rm', + other_repo_url + '/A/D/H', + '-m', 'remove A/D/H') + sbox.simple_update() + external_youngest_rev = svntest.main.youngest(repo_dir) + other_external_youngest_rev = svntest.main.youngest(other_repo_dir) + svntest.actions.run_and_verify_svn(None, [], + 'copy', + os.path.join(wc_dir, 'A'), + os.path.join(wc_dir, 'A_copy'), + '--pin-externals') + verify_pinned_externals(sbox, external_url_for, wc_dir, + external_youngest_rev, other_external_youngest_rev) + + +def copy_pin_externals_from_old_rev(sbox): + "copy from an old revision with pinning" + + external_url_for = externals_test_setup(sbox) + + wc_dir = sbox.wc_dir + repo_url = sbox.repo_url + repo_dir = sbox.repo_dir + other_repo_url = repo_url + ".other" + other_repo_dir = repo_dir + ".other" + + # Create a working copy. + svntest.actions.run_and_verify_svn(None, [], + 'checkout', + repo_url, wc_dir) + # Create a couple of revisions affecting 'A'. + for i in range(5): + svntest.main.file_append(sbox.ospath('A/mu'), 'a new line') + sbox.simple_commit() + sbox.simple_update() + + # Test a copy from an old revision with pinning. + external_youngest_rev = svntest.main.youngest(repo_dir) + other_external_youngest_rev = svntest.main.youngest(other_repo_dir) + svntest.actions.run_and_verify_svn(None, [], + 'copy', + os.path.join(wc_dir, 'A@6'), + os.path.join(wc_dir, 'A_copy'), + '--pin-externals') + external_url_for["A/B/gamma"] = '^/A/D/gamma' + verify_pinned_externals(sbox, external_url_for, wc_dir, + external_youngest_rev, other_external_youngest_rev) + + +def copy_pin_externals_wc_local_mods(sbox): + "cannot pin WC externals with local mods" + + external_url_for = externals_test_setup(sbox) + + wc_dir = sbox.wc_dir + repo_url = sbox.repo_url + + # Create a working copy. + svntest.actions.run_and_verify_svn(None, [], + 'checkout', + repo_url, wc_dir) + + svntest.main.file_append(sbox.ospath('A/C/exdir_G/pi'), 'this file changed') + expected_stderr = verify.RegexOutput(".*Cannot pin.*local modifications.*", + match_all=False) + svntest.actions.run_and_verify_svn(None, expected_stderr, + 'copy', + os.path.join(wc_dir, 'A'), + os.path.join(wc_dir, 'A_copy'), + '--pin-externals') + + +def copy_pin_externals_wc_switched_subtrees(sbox): + "cannot pin WC externals with switched subtrees" + + external_url_for = externals_test_setup(sbox) + + wc_dir = sbox.wc_dir + repo_url = sbox.repo_url + + # Create a working copy. + svntest.actions.run_and_verify_svn(None, [], + 'checkout', + repo_url, wc_dir) + + svntest.actions.run_and_verify_svn(None, [], + 'switch', '--ignore-ancestry', '^/A/B', + sbox.ospath('A/D/exdir_A/C')) + expected_stderr = verify.RegexOutput(".*Cannot pin.*switched subtree.*", + match_all=False) + svntest.actions.run_and_verify_svn(None, expected_stderr, + 'copy', + os.path.join(wc_dir, 'A'), + os.path.join(wc_dir, 'A_copy'), + '--pin-externals') + + +def copy_pin_externals_wc_mixed_revisions(sbox): + "cannot pin WC externals with mixed revisions" + + external_url_for = externals_test_setup(sbox) + + wc_dir = sbox.wc_dir + repo_url = sbox.repo_url + + # Create a working copy. + svntest.actions.run_and_verify_svn(None, [], + 'checkout', + repo_url, wc_dir) + + svntest.actions.run_and_verify_svn(None, [], + 'update', '-r1', + sbox.ospath('A/D/exdir_A/mu')) + expected_stderr = verify.RegexOutput(".*Cannot pin.*mixed-revision.*", + match_all=False) + svntest.actions.run_and_verify_svn(None, expected_stderr, + 'copy', + os.path.join(wc_dir, 'A'), + os.path.join(wc_dir, 'A_copy'), + '--pin-externals') + + def nested_notification(sbox): "notification for nested externals" @@ -3638,6 +3971,16 @@ test_list = [ None, switch_relative_externals, copy_file_external_to_repo, replace_tree_with_foreign_external, + copy_pin_externals_repos_repos, + copy_pin_externals_repos_wc, + copy_pin_externals_wc_repos, + copy_pin_externals_wc_wc, + copy_pin_externals_moved_external, + copy_pin_externals_removed_in_head, + copy_pin_externals_from_old_rev, + copy_pin_externals_wc_local_mods, + copy_pin_externals_wc_switched_subtrees, + copy_pin_externals_wc_mixed_revisions, nested_notification, ] Modified: subversion/branches/remove-log-addressing/subversion/tests/cmdline/lock_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/cmdline/lock_tests.py?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/cmdline/lock_tests.py (original) +++ subversion/branches/remove-log-addressing/subversion/tests/cmdline/lock_tests.py Sat Feb 14 11:15:05 2015 @@ -1841,8 +1841,8 @@ def commit_stolen_lock(sbox): err_re, wc_dir) -# When removing directories, the locks of contained files were not -# correctly removed from the working copy database, thus they later +# When removing directories, the locks of contained files were not +# correctly removed from the working copy database, thus they later # magically reappeared when new files or directories with the same # pathes were added. @Issue(4364) @@ -1857,10 +1857,10 @@ def drop_locks_on_parent_deletion(sbox): sbox.simple_lock('A/B/E/alpha') sbox.simple_lock('A/B/E/beta') sbox.simple_rm('A/B') - + expected_status = svntest.actions.get_virginal_state(wc_dir, 1) expected_status.remove_subtree('A/B') - + svntest.actions.run_and_verify_commit(wc_dir, [], expected_status, @@ -1874,7 +1874,7 @@ def drop_locks_on_parent_deletion(sbox): # The bug also resurrected locks on directories when their path # matched a former file. sbox.simple_mkdir('A/B/E', 'A/B/E/alpha') - + expected_status = svntest.actions.get_virginal_state(wc_dir, 1) expected_status.tweak('A/B', 'A/B/E', @@ -1883,7 +1883,7 @@ def drop_locks_on_parent_deletion(sbox): 'A/B/lambda', wc_rev='3') expected_status.remove('A/B/E/beta') - + svntest.actions.run_and_verify_commit(wc_dir, [], expected_status, @@ -2147,7 +2147,7 @@ def non_root_locks(sbox): 'cp', sbox.repo_url, sbox.repo_url + '/X', '-m', 'copy greek tree') - sbox.simple_switch(sbox.repo_url + '/X') + sbox.simple_switch(sbox.repo_url + '/X') expected_status = svntest.actions.get_virginal_state(wc_dir, 2) svntest.actions.run_and_verify_status(wc_dir, expected_status) @@ -2336,20 +2336,20 @@ def lock_commit_bump(sbox): }) expected_status = svntest.actions.get_virginal_state(wc_dir, 1) expected_status.tweak('A/mu', wc_rev=3) - + svntest.actions.run_and_verify_commit(wc_dir, expected_output, expected_status, None, wc_dir) # We explicitly check both the Revision and Last Changed Revision. - expected_infos = [ { + expected_infos = [ { 'Revision' : '1' , 'Last Changed Rev' : '1' , 'URL' : '.*', 'Lock Token' : None, } ] - svntest.actions.run_and_verify_info(expected_infos, + svntest.actions.run_and_verify_info(expected_infos, sbox.ospath('iota')) def copy_dir_with_locked_file(sbox): @@ -2372,6 +2372,44 @@ def copy_dir_with_locked_file(sbox): 'mv', A_url, AA2_url, '-m', '') +@Issue(4557) +@XFail(svntest.main.is_ra_type_dav) +def delete_dir_with_lots_of_locked_files(sbox): + "delete a directory containing lots of locked files" + + sbox.build() + wc_dir = sbox.wc_dir + + # A lot of paths. + nfiles = 75 # NOTE: test XPASSES with 50 files!!! + locked_paths = [] + for i in range(nfiles): + locked_paths.append("A/locked_files/file-%i" % i) + + # Create files at these paths + os.mkdir(sbox.ospath("A/locked_files")) + for file_path in locked_paths: + svntest.main.file_write(sbox.ospath(file_path), "This is a file\n") + sbox.simple_add("A/locked_files") + sbox.simple_commit() + sbox.simple_update() + + # lock all the files + for file_path in locked_paths: + svntest.actions.run_and_verify_svn(None, [], 'lock', + '--username', 'jrandom', + '-m', 'lock %s' % file_path, + sbox.ospath(file_path)) + # Locally delete A + sbox.simple_rm("A") + + # Commit the deletion + # XFAIL: As of 1.8.10, this commit fails with: + # svn: E175002: Unexpected HTTP status 400 'Bad Request' on '<path>' + # and the following error in the httpd error log: + # request failed: error reading the headers + # This problem was introduced on the 1.8.x branch in r1606976. + sbox.simple_commit() ######################################################################## # Run the tests @@ -2438,6 +2476,7 @@ test_list = [ None, delete_locked_file_with_percent, lock_commit_bump, copy_dir_with_locked_file, + delete_dir_with_lots_of_locked_files, ] if __name__ == '__main__': Modified: subversion/branches/remove-log-addressing/subversion/tests/cmdline/merge_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/cmdline/merge_tests.py?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/cmdline/merge_tests.py (original) +++ subversion/branches/remove-log-addressing/subversion/tests/cmdline/merge_tests.py Sat Feb 14 11:15:05 2015 @@ -18505,7 +18505,7 @@ def merge_to_empty_target_merge_to_infin C1_path = sbox.ospath('A/C/C1') test3_path = sbox.ospath('A/C/C1/test.txt') - + # r3 - Add some subtrees: # A /A/B/B1 # A /A/B/B1/B1a Modified: subversion/branches/remove-log-addressing/subversion/tests/cmdline/merge_tree_conflict_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/cmdline/merge_tree_conflict_tests.py?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/cmdline/merge_tree_conflict_tests.py (original) +++ subversion/branches/remove-log-addressing/subversion/tests/cmdline/merge_tree_conflict_tests.py Sat Feb 14 11:15:05 2015 @@ -1949,6 +1949,159 @@ def merge_replace_on_del_fails(sbox): actions.run_and_verify_svn2(expected_stdout, [], 0, 'merge', sbox.repo_url + '/A', branch_path) +def merge_conflict_details(sbox): + "merge conflict details" + + sbox.build() + wc_dir = sbox.wc_dir + + sbox.simple_append('A/B/E/new', 'new\n') + sbox.simple_add('A/B/E/new') + sbox.simple_append('A/B/E/alpha', '\nextra\nlines\n') + sbox.simple_rm('A/B/E/beta', 'A/B/F') + sbox.simple_propset('key', 'VAL', 'A/B/E', 'A/B') + sbox.simple_mkdir('A/B/E/new-dir1') + sbox.simple_mkdir('A/B/E/new-dir2') + sbox.simple_mkdir('A/B/E/new-dir3') + sbox.simple_rm('A/B/lambda') + sbox.simple_mkdir('A/B/lambda') + sbox.simple_commit() + + sbox.simple_update('', 1) + + sbox.simple_move('A/B', 'B') + + sbox.simple_propset('key', 'vAl', 'B') + sbox.simple_move('B/E/beta', 'beta') + sbox.simple_propset('a', 'b', 'B/F', 'B/lambda') + sbox.simple_append('B/E/alpha', 'other\nnew\nlines') + sbox.simple_mkdir('B/E/new') + sbox.simple_mkdir('B/E/new-dir1') + sbox.simple_append('B/E/new-dir2', 'something') + sbox.simple_append('B/E/new-dir3', 'something') + sbox.simple_add('B/E/new-dir3') + + expected_status = svntest.actions.get_virginal_state(wc_dir, 1) + expected_status.add({ + 'B' : Item(status=' C', copied='+', moved_from='A/B', + wc_rev='-', entry_status='AC'), + 'B/E' : Item(status=' M', copied='+', wc_rev='-'), + 'B/E/new' : Item(status='A ', treeconflict='C', wc_rev='-'), + 'B/E/beta' : Item(status='D ', copied='+', treeconflict='C', + wc_rev='-', moved_to='beta'), + 'B/E/alpha' : Item(status='C ', copied='+', wc_rev='-'), + 'B/E/new-dir3' : Item(status='A ', treeconflict='C', wc_rev='-'), + 'B/E/new-dir1' : Item(status='A ', treeconflict='C', wc_rev='-'), + 'B/F' : Item(status=' M', copied='+', treeconflict='C', + wc_rev='-'), + 'B/lambda' : Item(status=' M', copied='+', treeconflict='C', + wc_rev='-'), + 'beta' : Item(status='A ', copied='+', + moved_from='B/E/beta', wc_rev='-') + }) + expected_status.tweak('A/B', status='D ', wc_rev='1', moved_to='B') + expected_status.tweak('A/B/lambda', 'A/B/E', 'A/B/E/beta', 'A/B/E/alpha', + 'A/B/F', status='D ') + + expected_output = svntest.wc.State(wc_dir, { + 'B' : Item(status=' C'), + 'B/E' : Item(status=' U'), + 'B/E/new' : Item(status=' ', treeconflict='C'), + 'B/E/beta' : Item(status=' ', treeconflict='C'), + 'B/E/alpha' : Item(status='C '), + 'B/E/new-dir3' : Item(status=' ', treeconflict='C'), + 'B/E/new-dir1' : Item(status=' ', treeconflict='C'), + 'B/F' : Item(status=' ', treeconflict='C'), + 'B/lambda' : Item(status=' ', treeconflict='C'), + }) + expected_skip = wc.State(wc_dir, { + 'B/E/new-dir2' : Item(verb='Skipped'), + }) + svntest.actions.run_and_verify_merge(sbox.ospath('B'), + 1, 2, '^/A/B', '^/A/B', + expected_output, + None, None, + None, None, expected_skip) + svntest.actions.run_and_verify_status(wc_dir, expected_status) + + expected_info = [ + { + "Path" : re.escape(sbox.ospath('B')), + + "Conflict Properties File" : + re.escape(sbox.ospath('B/dir_conflicts.prej')) + '.*', + "Conflict Details": re.escape( + 'incoming dir edit upon merge' + + ' Source left: (dir) ^/A/B@1' + + ' Source right: (dir) ^/A/B@2') + }, + { + "Path" : re.escape(sbox.ospath('B/E')), + }, + { + "Path" : re.escape(sbox.ospath('B/E/alpha')), + "Conflict Previous Base File" : '.*alpha.*', + "Conflict Previous Working File" : '.*alpha.*', + "Conflict Current Base File": '.*alpha.*', + "Conflict Details": re.escape( + 'incoming file edit upon merge' + + ' Source left: (file) ^/A/B/E/alpha@1' + + ' Source right: (file) ^/A/B/E/alpha@2') + }, + { + "Path" : re.escape(sbox.ospath('B/E/beta')), + "Tree conflict": re.escape( + 'local file moved away, incoming file delete or move upon merge' + + ' Source left: (file) ^/A/B/E/beta@1' + + ' Source right: (none) ^/A/B/E/beta@2') + }, + { + "Path" : re.escape(sbox.ospath('B/E/new')), + "Tree conflict": re.escape( + 'local dir add, incoming file add upon merge' + + ' Source left: (none) ^/A/B/E/new@1' + + ' Source right: (file) ^/A/B/E/new@2') + }, + { + "Path" : re.escape(sbox.ospath('B/E/new-dir1')), + "Tree conflict": re.escape( + 'local dir add, incoming dir add upon merge' + + ' Source left: (none) ^/A/B/E/new-dir1@1' + + ' Source right: (dir) ^/A/B/E/new-dir1@2') + }, + #{ ### Skipped + # "Path" : re.escape(sbox.ospath('B/E/new-dir2')), + # "Tree conflict": re.escape( + # 'local file unversioned, incoming dir add upon merge' + + # ' Source left: (none) ^/A/B/E/new-dir2@1' + + # ' Source right: (dir) ^/A/B/E/new-dir2@2') + #}, + { + "Path" : re.escape(sbox.ospath('B/E/new-dir3')), + "Tree conflict": re.escape( + 'local file add, incoming dir add upon merge' + + ' Source left: (none) ^/A/B/E/new-dir3@1' + + ' Source right: (dir) ^/A/B/E/new-dir3@2') + }, + { + "Path" : re.escape(sbox.ospath('B/F')), + "Tree conflict": re.escape( + 'local dir edit, incoming dir delete or move upon merge' + + ' Source left: (dir) ^/A/B/F@1' + + ' Source right: (none) ^/A/B/F@2') + }, + { + "Path" : re.escape(sbox.ospath('B/lambda')), + "Tree conflict": re.escape( + 'local file edit, incoming replace with dir upon merge' + + ' Source left: (file) ^/A/B/lambda@1' + + ' Source right: (dir) ^/A/B/lambda@2') + }, + ] + + svntest.actions.run_and_verify_info(expected_info, sbox.ospath('B'), + '--depth', 'infinity') + ######################################################################## # Run the tests @@ -1979,6 +2132,7 @@ test_list = [ None, merge_replace_causes_tree_conflict, merge_replace_causes_tree_conflict2, merge_replace_on_del_fails, + merge_conflict_details, ] if __name__ == '__main__': Modified: subversion/branches/remove-log-addressing/subversion/tests/cmdline/move_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/cmdline/move_tests.py?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/cmdline/move_tests.py (original) +++ subversion/branches/remove-log-addressing/subversion/tests/cmdline/move_tests.py Sat Feb 14 11:15:05 2015 @@ -1373,7 +1373,7 @@ def move_many_update_delete(sbox): svntest.actions.run_and_verify_update(wc_dir, expected_output, None, expected_status) - # Would be nice if we could run the resolver as a separate step, + # Would be nice if we could run the resolver as a separate step, # but 'svn resolve' just fails for any value but working def move_many_update_add(sbox): @@ -1483,7 +1483,7 @@ def copy_move_commit(sbox): # create table bbb (Id int not null) # - Commit # Repro Issue 2 - # - Copy folder aaa under same parent folder (i.e. as a sibling). (using Ctrl drag/drop). + # - Copy folder aaa under same parent folder (i.e. as a sibling). (using Ctrl drag/drop). # Creates Copy of aaa # - Rename Copy of aaa to eee # - Commit @@ -1512,7 +1512,7 @@ def move_to_from_external(sbox): 'move', sbox.ospath('iota'), sbox.ospath('GG/tau')) - + svntest.actions.run_and_verify_svn(None, [], 'ci', '-m', 'Commit both', sbox.ospath(''), @@ -1633,10 +1633,9 @@ def move_conflict_details(sbox): expected_info = [ { "Path" : re.escape(sbox.ospath('B')), - + "Conflict Properties File" : - re.escape(os.path.abspath(sbox.ospath('B/dir_conflicts.prej'))) + - '.*', + re.escape(sbox.ospath('B/dir_conflicts.prej')) + '.*', "Conflict Details": re.escape( 'incoming dir edit upon update' + ' Source left: (dir) ^/A/B@1' + Modified: subversion/branches/remove-log-addressing/subversion/tests/cmdline/redirect_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/cmdline/redirect_tests.py?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/cmdline/redirect_tests.py (original) +++ subversion/branches/remove-log-addressing/subversion/tests/cmdline/redirect_tests.py Sat Feb 14 11:15:05 2015 @@ -154,7 +154,7 @@ def redirected_nonroot_update(sbox): checkout_url, wc_dir) if err: raise svntest.Failure - + # Relocate (by cheating) the working copy to the redirect URL. When # we then update, we'll expect to find ourselves automagically back # to the original URL. (This is because we can't easily introduce a @@ -241,6 +241,25 @@ def redirected_copy(sbox): sbox.redirected_root_url(temporary=True) + '/A', '^/copy-of-A') #---------------------------------------------------------------------- +@SkipUnless(svntest.main.is_ra_type_dav) +def redirected_commands(sbox): + "redirected commands" + + sbox.build(create_wc=False) + + svntest.actions.run_and_verify_svn(None, [], + 'log', + sbox.redirected_root_url() + '/A') + + svntest.actions.run_and_verify_svn(None, [], + 'ls', + sbox.redirected_root_url() + '/A') + + svntest.actions.run_and_verify_svn(None, [], + 'info', + sbox.redirected_root_url() + '/A') + +#---------------------------------------------------------------------- ######################################################################## # Run the tests @@ -253,6 +272,7 @@ test_list = [ None, redirected_nonroot_update, redirected_externals, redirected_copy, + redirected_commands, ] if __name__ == '__main__': Modified: subversion/branches/remove-log-addressing/subversion/tests/cmdline/stat_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/cmdline/stat_tests.py?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/cmdline/stat_tests.py (original) +++ subversion/branches/remove-log-addressing/subversion/tests/cmdline/stat_tests.py Sat Feb 14 11:15:05 2015 @@ -2093,12 +2093,12 @@ def status_path_handling(sbox): def status_move_missing_direct(sbox): "move information when status is called directly" - + sbox.build() sbox.simple_copy('A', 'Z') sbox.simple_commit('') sbox.simple_update('') - + sbox.simple_move('Z', 'ZZ') sbox.simple_move('A', 'Z') sbox.simple_move('Z/B', 'ZB') @@ -2108,14 +2108,14 @@ def status_move_missing_direct(sbox): # Somehow 'svn status' now shows different output for 'ZB/E' # when called directly and via an ancestor, as this handles # multi-layer in a different way - + # Note that the status output may change over different Subversion revisions, # but the status on a node should be identical anyway 'svn status' is called # on it. - + expected_output = [ 'A + %s\n' % sbox.ospath('ZB'), - ' > moved from %s\n' % os.path.join('..', 'Z', 'B'), + ' > moved from %s\n' % os.path.join('..', 'Z', 'B'), 'D + %s\n' % sbox.ospath('ZB/E'), ' > moved to %s\n' % os.path.join('..', 'Z', 'B', 'E'), ] @@ -2133,7 +2133,7 @@ def status_move_missing_direct(sbox): def status_move_missing_direct_base(sbox): "move when status is called directly with base" - + sbox.build() sbox.simple_copy('A', 'Z') sbox.simple_mkdir('Q') @@ -2141,10 +2141,10 @@ def status_move_missing_direct_base(sbox sbox.simple_mkdir('Q/ZB/E') sbox.simple_commit('') sbox.simple_update('') - + sbox.simple_rm('Q') sbox.simple_mkdir('Q') - + sbox.simple_move('Z', 'ZZ') sbox.simple_move('A', 'Z') sbox.simple_move('Z/B', 'Q/ZB') @@ -2154,14 +2154,14 @@ def status_move_missing_direct_base(sbox # Somehow 'svn status' now shows different output for 'Q/ZB/E' # when called directly and via an ancestor, as this handles # multi-layer in a different way - + # Note that the status output may change over different Subversion revisions, # but the status on a node should be identical anyway 'svn status' is called # on it. - + # This test had a different result as status_move_missing_direct at the time of # writing this test. - + expected_output = [ 'A + %s\n' % sbox.ospath('Q/ZB'), ' > moved from %s\n' % os.path.join('..', '..', 'Z', 'B'), Modified: subversion/branches/remove-log-addressing/subversion/tests/cmdline/svnadmin_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/cmdline/svnadmin_tests.py?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/cmdline/svnadmin_tests.py (original) +++ subversion/branches/remove-log-addressing/subversion/tests/cmdline/svnadmin_tests.py Sat Feb 14 11:15:05 2015 @@ -82,6 +82,10 @@ def check_hotcopy_fsfs_fsx(src, dst): if dst_dirent == 'write-lock': continue + # Ignore auto-created rep-cache.db-journal file + if dst_dirent == 'rep-cache.db-journal': + continue + src_dirent = os.path.join(src_dirpath, dst_dirent) if not os.path.exists(src_dirent): raise svntest.Failure("%s does not exist in hotcopy " @@ -96,6 +100,10 @@ def check_hotcopy_fsfs_fsx(src, dst): if src_file == 'write-lock': continue + # Ignore auto-created rep-cache.db-journal file + if src_file == 'rep-cache.db-journal': + continue + src_path = os.path.join(src_dirpath, src_file) dst_path = os.path.join(dst_dirpath, src_file) if not os.path.isfile(dst_path): @@ -179,7 +187,7 @@ def check_hotcopy_fsfs(src, dst): def check_hotcopy_fsx(src, dst): "Verify that the SRC FSX repository has been correctly copied to DST." check_hotcopy_fsfs_fsx(src, dst) - + #---------------------------------------------------------------------- # How we currently test 'svnadmin' -- @@ -1952,7 +1960,7 @@ def verify_keep_going(sbox): svntest.actions.run_and_verify_svn(None, [], 'mkdir', '-m', 'log_msg', C_url) - + r2 = fsfs_file(sbox.repo_dir, 'revs', '2') fp = open(r2, 'r+b') fp.write("""inserting junk to corrupt the rev""") Modified: subversion/branches/remove-log-addressing/subversion/tests/cmdline/svntest/actions.py URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/cmdline/svntest/actions.py?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/cmdline/svntest/actions.py (original) +++ subversion/branches/remove-log-addressing/subversion/tests/cmdline/svntest/actions.py Sat Feb 14 11:15:05 2015 @@ -1019,19 +1019,20 @@ def run_and_verify_info(expected_infos, for actual, expected in zip(actual_infos, expected_infos): # compare dicts + path = actual['Path'] for key, value in expected.items(): assert ':' not in key # caller passed impossible expectations? if value is None and key in actual: - raise main.SVNLineUnequal("Found unexpected key '%s' with value '%s'" - % (key, actual[key])) + raise main.SVNLineUnequal("On '%s': Found unexpected key '%s'\n Value '%s'" + % (path, key, actual[key])) if value is not None and key not in actual: - raise main.SVNLineUnequal("Expected key '%s' (with value '%s') " - "not found" % (key, value)) + raise main.SVNLineUnequal("On '%s': Expected key '%s' not found\n Expected value '%s'" + % (path, key, value)) if value is not None and not re.match(value, actual[key]): - raise verify.SVNUnexpectedStdout("Values of key '%s' don't match:\n" + raise verify.SVNUnexpectedStdout("On '%s': Values of key '%s' don't match:\n" " Expected: '%s' (regex)\n" " Found: '%s' (string)\n" - % (key, value, actual[key])) + % (path, key, value, actual[key])) except: sys.stderr.write("Bad 'svn info' output:\n" Modified: subversion/branches/remove-log-addressing/subversion/tests/cmdline/switch_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/cmdline/switch_tests.py?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/cmdline/switch_tests.py (original) +++ subversion/branches/remove-log-addressing/subversion/tests/cmdline/switch_tests.py Sat Feb 14 11:15:05 2015 @@ -2121,7 +2121,7 @@ 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 = svntest.wc.State('', { 'F' : Item(), 'D' : Item(), Modified: subversion/branches/remove-log-addressing/subversion/tests/cmdline/update_tests.py URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/cmdline/update_tests.py?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/cmdline/update_tests.py (original) +++ subversion/branches/remove-log-addressing/subversion/tests/cmdline/update_tests.py Sat Feb 14 11:15:05 2015 @@ -6697,6 +6697,146 @@ def update_child_below_add(sbox): None, None, None, sbox.ospath('A/B/E')) +def update_conflict_details(sbox): + "update conflict details" + + sbox.build() + wc_dir = sbox.wc_dir + + sbox.simple_append('A/B/E/new', 'new\n') + sbox.simple_add('A/B/E/new') + sbox.simple_append('A/B/E/alpha', '\nextra\nlines\n') + sbox.simple_rm('A/B/E/beta', 'A/B/F') + sbox.simple_propset('key', 'VAL', 'A/B/E', 'A/B') + sbox.simple_mkdir('A/B/E/new-dir1') + sbox.simple_mkdir('A/B/E/new-dir2') + sbox.simple_mkdir('A/B/E/new-dir3') + sbox.simple_rm('A/B/lambda') + sbox.simple_mkdir('A/B/lambda') + sbox.simple_commit() + + sbox.simple_update('', 1) + + sbox.simple_propset('key', 'vAl', 'A/B') + sbox.simple_move('A/B/E/beta', 'beta') + sbox.simple_propset('a', 'b', 'A/B/F', 'A/B/lambda') + sbox.simple_append('A/B/E/alpha', 'other\nnew\nlines') + sbox.simple_mkdir('A/B/E/new') + sbox.simple_mkdir('A/B/E/new-dir1') + sbox.simple_append('A/B/E/new-dir2', 'something') + sbox.simple_append('A/B/E/new-dir3', 'something') + sbox.simple_add('A/B/E/new-dir3') + + expected_status = svntest.actions.get_virginal_state(wc_dir, 2) + expected_status.add({ + 'A/B/E/new' : Item(status='R ', treeconflict='C', wc_rev='2'), + 'A/B/E/new-dir2' : Item(status='D ', treeconflict='C', wc_rev='2'), + 'A/B/E/new-dir3' : Item(status='R ', treeconflict='C', wc_rev='2'), + 'A/B/E/new-dir1' : Item(status=' ', wc_rev='2'), + 'A/C' : Item(status=' ', wc_rev='2'), + 'iota' : Item(status=' ', wc_rev='2'), + 'beta' : Item(status='A ', copied='+', wc_rev='-') + }) + expected_status.tweak('A/B', status=' C', wc_rev='2') + expected_status.tweak('A/B/E/alpha', status='C ', wc_rev='2') + expected_status.tweak('A/B/E/beta', status='! ', treeconflict='C', wc_rev=None) + expected_status.tweak('A/B/F', status='A ', copied='+', treeconflict='C', wc_rev='-') + expected_status.tweak('A/B/lambda', status='RM', copied='+', treeconflict='C', wc_rev='-') + expected_status.tweak('A/mu', status=' ', wc_rev='2') + expected_output = svntest.wc.State(wc_dir, { + 'A/B' : Item(status=' C'), + 'A/B/E' : Item(status=' U'), + 'A/B/E/new' : Item(status=' ', treeconflict='C'), + 'A/B/E/beta' : Item(status=' ', treeconflict='C'), + 'A/B/E/alpha' : Item(status='C '), + 'A/B/E/new-dir2' : Item(status=' ', treeconflict='C'), + 'A/B/E/new-dir3' : Item(status=' ', treeconflict='C'), + 'A/B/E/new-dir1' : Item(status='E '), + 'A/B/F' : Item(status=' ', treeconflict='C'), + # ### 2 tree conflict reports; one for delete; one for add... + 'A/B/lambda' : Item(status=' ', treeconflict='A', + prev_status=' ', prev_treeconflict='C'), + }) + svntest.actions.run_and_verify_update(wc_dir, expected_output, + None, expected_status) + + # Update can't pass source as none at a specific URL@revision, + # because it doesn't know... the working copy could be mixed + # revision or may have excluded parts... + expected_info = [ + { + "Path" : re.escape(sbox.ospath('A/B')), + + "Conflict Properties File" : + re.escape(sbox.ospath('A/B/dir_conflicts.prej')) + '.*', + "Conflict Details": re.escape( + 'incoming dir edit upon update' + + ' Source left: (dir) ^/A/B@1' + + ' Source right: (dir) ^/A/B@2') + }, + { + "Path" : re.escape(sbox.ospath('A/B/E')), + }, + { + "Path" : re.escape(sbox.ospath('A/B/E/alpha')), + "Conflict Previous Base File" : '.*alpha.*', + "Conflict Previous Working File" : '.*alpha.*', + "Conflict Current Base File": '.*alpha.*', + "Conflict Details": re.escape( + 'incoming file edit upon update' + + ' Source left: (file) ^/A/B/E/alpha@1' + + ' Source right: (file) ^/A/B/E/alpha@2') + }, + { + "Path" : re.escape(sbox.ospath('A/B/E/beta')), + "Tree conflict": re.escape( + 'local file moved away, incoming file delete or move upon update' + + ' Source left: (file) ^/A/B/E/beta@1' + + ' Source right: (none) ^/A/B/E/beta@2') + }, + { + "Path" : re.escape(sbox.ospath('A/B/E/new')), + "Tree conflict": re.escape( + 'local dir add, incoming file add upon update' + + ' Source left: (none)' + + ' Source right: (file) ^/A/B/E/new@2') + }, + { + "Path" : re.escape(sbox.ospath('A/B/E/new-dir1')), + # No tree conflict. Existing directory taken over + }, + { + "Path" : re.escape(sbox.ospath('A/B/E/new-dir2')), + "Tree conflict": re.escape( + 'local file unversioned, incoming dir add upon update' + + ' Source left: (none)' + + ' Source right: (dir) ^/A/B/E/new-dir2@2') + }, + { + "Path" : re.escape(sbox.ospath('A/B/E/new-dir3')), + "Tree conflict": re.escape( + 'local file add, incoming dir add upon update' + + ' Source left: (none)' + + ' Source right: (dir) ^/A/B/E/new-dir3@2') + }, + { + "Path" : re.escape(sbox.ospath('A/B/F')), + "Tree conflict": re.escape( + 'local dir edit, incoming dir delete or move upon update' + + ' Source left: (dir) ^/A/B/F@1' + + ' Source right: (none) ^/A/B/F@2') + }, + { + "Path" : re.escape(sbox.ospath('A/B/lambda')), + "Tree conflict": re.escape( + 'local file edit, incoming replace with dir upon update' + + ' Source left: (file) ^/A/B/lambda@1' + + ' Source right: (dir) ^/A/B/lambda@2') + }, + ] + + svntest.actions.run_and_verify_info(expected_info, sbox.ospath('A/B'), + '--depth', 'infinity') ####################################################################### # Run the tests @@ -6783,6 +6923,7 @@ test_list = [ None, update_moved_away, bump_below_tree_conflict, update_child_below_add, + update_conflict_details, ] if __name__ == '__main__': Modified: subversion/branches/remove-log-addressing/subversion/tests/libsvn_client/client-test.c URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/libsvn_client/client-test.c?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/libsvn_client/client-test.c (original) +++ subversion/branches/remove-log-addressing/subversion/tests/libsvn_client/client-test.c Sat Feb 14 11:15:05 2015 @@ -35,6 +35,8 @@ #include "svn_repos.h" #include "svn_subst.h" #include "private/svn_wc_private.h" +#include "svn_props.h" +#include "svn_hash.h" #include "../svn_test.h" #include "../svn_test_fs.h" @@ -1055,6 +1057,236 @@ test_remote_only_status(const svn_test_o return SVN_NO_ERROR; } +static svn_error_t * +test_copy_pin_externals(const svn_test_opts_t *opts, + apr_pool_t *pool) +{ + svn_opt_revision_t rev; + svn_opt_revision_t peg_rev; + const char *repos_url; + const char *A_url; + const char *A_copy_url; + const char *wc_path; + svn_client_ctx_t *ctx; + const svn_string_t *propval; + apr_hash_t *externals_to_pin; + apr_array_header_t *external_items; + apr_array_header_t *copy_sources; + svn_wc_external_item2_t items[6]; + svn_client_copy_source_t copy_source; + apr_hash_t *props; + apr_array_header_t *pinned_externals_descs; + apr_array_header_t *pinned_externals; + int i; + int num_tested_externals; + svn_stringbuf_t *externals_test_prop; + struct pin_externals_test_data { + const char *src_external_desc; + const char *expected_dst_external_desc; + } pin_externals_test_data[] = { + { "^/A/D/gamma B/gamma", "^/A/D/gamma@2 B/gamma" }, + { "-r1 ^/A/D/G C/exdir_G", "-r1 ^/A/D/G C/exdir_G" }, + { "^/A/D/H@1 C/exdir_H", "^/A/D/H@1 C/exdir_H" }, + { "^/A/D/H C/exdir_H2", "^/A/D/H@2 C/exdir_H2" }, + { "-r1 ^/A/B D/z/y/z/blah", "-r1 ^/A/B@2 D/z/y/z/blah" } , + { "-r1 ^/A/D@2 exdir_D", "-r1 ^/A/D@2 exdir_D" }, + /* Dated revision should retain their date string exactly. */ + { "-r{1970-01-01T00:00} ^/A/C 70s", "-r{1970-01-01T00:00} ^/A/C@2 70s"}, + { "-r{2004-02-23} ^/svn 1.0", "-r{2004-02-23} ^/svn 1.0"}, + { NULL }, + }; + + /* Create a filesytem and repository containing the Greek tree. */ + SVN_ERR(create_greek_repos(&repos_url, "pin-externals", opts, pool)); + + wc_path = svn_test_data_path("pin-externals-working-copy", pool); + + /* Remove old test data from the previous run */ + SVN_ERR(svn_io_remove_dir2(wc_path, TRUE, NULL, NULL, pool)); + + SVN_ERR(svn_io_make_dir_recursively(wc_path, pool)); + svn_test_add_dir_cleanup(wc_path); + + rev.kind = svn_opt_revision_head; + peg_rev.kind = svn_opt_revision_unspecified; + SVN_ERR(svn_client_create_context(&ctx, pool)); + + /* Configure some externals on ^/A */ + i = 0; + externals_test_prop = svn_stringbuf_create_empty(pool); + while (pin_externals_test_data[i].src_external_desc) + { + svn_stringbuf_appendcstr(externals_test_prop, + pin_externals_test_data[i].src_external_desc); + svn_stringbuf_appendbyte(externals_test_prop, '\n'); + i++; + } + propval = svn_string_create_from_buf(externals_test_prop, pool); + A_url = apr_pstrcat(pool, repos_url, "/A", SVN_VA_NULL); + SVN_ERR(svn_client_propset_remote(SVN_PROP_EXTERNALS, propval, + A_url, TRUE, 1, NULL, + NULL, NULL, ctx, pool)); + + /* Set up parameters for pinning some externals. */ + externals_to_pin = apr_hash_make(pool); + + items[0].url = "^/A/D/gamma"; + items[0].target_dir = "B/gamma"; + items[1].url = "^/A/B"; + items[1].target_dir = "D/z/y/z/blah"; + items[2].url = "^/A/D/H"; + items[2].target_dir = "C/exdir_H2"; + items[3].url= "^/A/D"; + items[3].target_dir= "exdir_D"; + items[4].url = "^/A/C"; + items[4].target_dir = "70s"; + /* Also add an entry which doesn't match any actual definition. */ + items[5].url = "^/this/does/not/exist"; + items[5].target_dir = "in/test/data"; + + external_items = apr_array_make(pool, 2, sizeof(svn_wc_external_item2_t *)); + for (i = 0; i < sizeof(items) / sizeof(items[0]); i++) + APR_ARRAY_PUSH(external_items, svn_wc_external_item2_t *) = &items[i]; + svn_hash_sets(externals_to_pin, A_url, external_items); + + /* Copy ^/A to ^/A_copy, pinning two non-pinned externals. */ + copy_source.path = A_url; + copy_source.revision = &rev; + copy_source.peg_revision = &peg_rev; + copy_sources = apr_array_make(pool, 1, sizeof(svn_client_copy_source_t *)); + APR_ARRAY_PUSH(copy_sources, svn_client_copy_source_t *) = ©_source; + A_copy_url = apr_pstrcat(pool, repos_url, "/A_copy", SVN_VA_NULL); + SVN_ERR(svn_client_copy7(copy_sources, A_copy_url, FALSE, FALSE, + FALSE, TRUE, externals_to_pin, + NULL, NULL, NULL, ctx, pool)); + + /* Verify that externals were pinned as expected. */ + SVN_ERR(svn_client_propget5(&props, NULL, SVN_PROP_EXTERNALS, + A_copy_url, &peg_rev, &rev, NULL, + svn_depth_empty, NULL, ctx, pool, pool)); + propval = svn_hash_gets(props, A_copy_url); + SVN_TEST_ASSERT(propval); + + /* Test the unparsed representation of copied externals descriptions. */ + pinned_externals_descs = svn_cstring_split(propval->data, "\n", FALSE, pool); + for (i = 0; i < pinned_externals_descs->nelts; i++) + { + const char *externals_desc; + const char *expected_desc; + + externals_desc = APR_ARRAY_IDX(pinned_externals_descs, i, const char *); + expected_desc = pin_externals_test_data[i].expected_dst_external_desc; + SVN_TEST_STRING_ASSERT(externals_desc, expected_desc); + } + /* Ensure all test cases were tested. */ + SVN_TEST_ASSERT(i == (sizeof(pin_externals_test_data) / + sizeof(pin_externals_test_data[0]) - 1)); + + SVN_ERR(svn_wc_parse_externals_description3(&pinned_externals, A_copy_url, + propval->data, TRUE, pool)); + + /* For completeness, test the parsed representation, too */ + num_tested_externals = 0; + for (i = 0; i < pinned_externals->nelts; i++) + { + svn_wc_external_item2_t *item; + + item = APR_ARRAY_IDX(pinned_externals, i, svn_wc_external_item2_t *); + if (strcmp(item->url, "^/A/D/gamma") == 0) + { + SVN_TEST_STRING_ASSERT(item->target_dir, "B/gamma"); + /* Pinned to r2. */ + SVN_TEST_ASSERT(item->revision.kind == svn_opt_revision_number); + SVN_TEST_ASSERT(item->revision.value.number == 2); + SVN_TEST_ASSERT(item->peg_revision.kind == svn_opt_revision_number); + SVN_TEST_ASSERT(item->peg_revision.value.number == 2); + num_tested_externals++; + } + else if (strcmp(item->url, "^/A/D/G") == 0) + { + SVN_TEST_STRING_ASSERT(item->target_dir, "C/exdir_G"); + /* Not pinned. */ + SVN_TEST_ASSERT(item->revision.kind == svn_opt_revision_number); + SVN_TEST_ASSERT(item->revision.value.number == 1); + SVN_TEST_ASSERT(item->peg_revision.kind == svn_opt_revision_head); + num_tested_externals++; + } + else if (strcmp(item->url, "^/A/D/H") == 0) + { + if (strcmp(item->target_dir, "C/exdir_H") == 0) + { + /* Was already pinned to r1. */ + SVN_TEST_ASSERT(item->revision.kind == svn_opt_revision_number); + SVN_TEST_ASSERT(item->revision.value.number == 1); + SVN_TEST_ASSERT(item->peg_revision.kind == + svn_opt_revision_number); + SVN_TEST_ASSERT(item->peg_revision.value.number == 1); + num_tested_externals++; + } + else if (strcmp(item->target_dir, "C/exdir_H2") == 0) + { + /* Pinned to r2. */ + SVN_TEST_ASSERT(item->revision.kind == svn_opt_revision_number); + SVN_TEST_ASSERT(item->revision.value.number == 2); + SVN_TEST_ASSERT(item->peg_revision.kind == + svn_opt_revision_number); + SVN_TEST_ASSERT(item->peg_revision.value.number == 2); + num_tested_externals++; + } + else + SVN_TEST_ASSERT(FALSE); /* unknown external */ + } + else if (strcmp(item->url, "^/A/B") == 0) + { + SVN_TEST_STRING_ASSERT(item->target_dir, "D/z/y/z/blah"); + /* Pinned to r2. */ + SVN_TEST_ASSERT(item->revision.kind == svn_opt_revision_number); + SVN_TEST_ASSERT(item->revision.value.number == 1); + SVN_TEST_ASSERT(item->peg_revision.kind == svn_opt_revision_number); + SVN_TEST_ASSERT(item->peg_revision.value.number == 2); + num_tested_externals++; + } + else if (strcmp(item->url, "^/A/D") == 0) + { + SVN_TEST_STRING_ASSERT(item->target_dir, "exdir_D"); + /* Pinned to r2. */ + SVN_TEST_ASSERT(item->revision.kind == svn_opt_revision_number); + SVN_TEST_ASSERT(item->revision.value.number == 1); + SVN_TEST_ASSERT(item->peg_revision.kind == svn_opt_revision_number); + SVN_TEST_ASSERT(item->peg_revision.value.number == 2); + num_tested_externals++; + } + else if (strcmp(item->url, "^/A/C") == 0) + { + SVN_TEST_STRING_ASSERT(item->target_dir, "70s"); + /* Pinned to r2. */ + SVN_TEST_ASSERT(item->revision.kind == svn_opt_revision_date); + /* Don't bother testing the exact date value here. */ + SVN_TEST_ASSERT(item->peg_revision.kind == svn_opt_revision_number); + SVN_TEST_ASSERT(item->peg_revision.value.number == 2); + num_tested_externals++; + } + else if (strcmp(item->url, "^/svn") == 0) + { + SVN_TEST_STRING_ASSERT(item->target_dir, "1.0"); + /* Was and not in externals_to_pin, operative revision was a date. */ + SVN_TEST_ASSERT(item->revision.kind == svn_opt_revision_date); + /* Don't bother testing the exact date value here. */ + SVN_TEST_ASSERT(item->peg_revision.kind == svn_opt_revision_head); + num_tested_externals++; + } + else + SVN_TEST_ASSERT(FALSE); /* unknown URL */ + } + + /* Ensure all test cases were tested. */ + SVN_TEST_ASSERT(num_tested_externals == (sizeof(pin_externals_test_data) / + sizeof(pin_externals_test_data[0]) + - 1)); + + return SVN_NO_ERROR; +} + /* ========================================================================== */ @@ -1079,6 +1311,8 @@ static struct svn_test_descriptor_t test "test svn_client_suggest_merge_sources"), SVN_TEST_OPTS_PASS(test_remote_only_status, "test svn_client_status6 with ignore_local_mods"), + SVN_TEST_OPTS_PASS(test_copy_pin_externals, + "test svn_client_copy7 with externals_to_pin"), SVN_TEST_NULL }; Modified: subversion/branches/remove-log-addressing/subversion/tests/libsvn_client/mtcc-test.c URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/libsvn_client/mtcc-test.c?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/libsvn_client/mtcc-test.c (original) +++ subversion/branches/remove-log-addressing/subversion/tests/libsvn_client/mtcc-test.c Sat Feb 14 11:15:05 2015 @@ -614,7 +614,7 @@ test_file_revs_both_ways(const svn_test_ handle_rev, &hrb, subpool)); SVN_TEST_ASSERT(hrb.last == 6); - + return SVN_NO_ERROR; } Modified: subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs/fs-test.c URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs/fs-test.c?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs/fs-test.c (original) +++ subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs/fs-test.c Sat Feb 14 11:15:05 2015 @@ -5136,7 +5136,7 @@ filename_trailing_newline(const svn_test SVN_TEST_ASSERT(err == SVN_NO_ERROR); else SVN_TEST_ASSERT_ERROR(err, SVN_ERR_FS_PATH_SYNTAX); - + /* Create another file, with contents. */ if (!legacy_backend) @@ -5314,7 +5314,7 @@ test_compat_version(const svn_test_opts_ { svn_version_t *compatible_version; apr_hash_t *config = apr_hash_make(pool); - + svn_version_t vcurrent = {SVN_VER_MAJOR, SVN_VER_MINOR, 0, ""}; svn_version_t v1_2_0 = {1, 2, 0, ""}; svn_version_t v1_3_0 = {1, 3, 0, ""}; @@ -5493,7 +5493,7 @@ reopen_modify(const svn_test_opts_t *opt /* Create txn with changes. */ SVN_ERR(svn_fs_begin_txn(&txn, fs, head_rev, pool)); - SVN_ERR(svn_fs_txn_name(&txn_name, txn, pool)); + SVN_ERR(svn_fs_txn_name(&txn_name, txn, pool)); SVN_ERR(svn_fs_txn_root(&root, txn, pool)); SVN_ERR(svn_fs_make_dir(root, "X", pool)); @@ -5903,7 +5903,7 @@ compare_contents(const svn_test_opts_t * svn_checksum_t *checksum1, *checksum2; /* (path, rev) pairs to compare plus the expected API return values */ - struct + struct { svn_revnum_t rev1; const char *path1; @@ -5931,12 +5931,12 @@ compare_contents(const svn_test_opts_t * { 3, "bar", 4, "bar", TRUE, svn_tristate_true }, /* variations on the same theme: same content, possibly different rep */ - { 4, "foo", 4, "bar", FALSE, svn_tristate_unknown }, - { 1, "foo", 4, "bar", FALSE, svn_tristate_unknown }, - { 2, "foo", 4, "bar", FALSE, svn_tristate_unknown }, - { 1, "foo", 4, "foo", FALSE, svn_tristate_unknown }, - { 2, "foo", 4, "foo", FALSE, svn_tristate_unknown }, - { 2, "bar", 4, "bar", FALSE, svn_tristate_unknown }, + { 4, "foo", 4, "bar", FALSE, svn_tristate_unknown }, + { 1, "foo", 4, "bar", FALSE, svn_tristate_unknown }, + { 2, "foo", 4, "bar", FALSE, svn_tristate_unknown }, + { 1, "foo", 4, "foo", FALSE, svn_tristate_unknown }, + { 2, "foo", 4, "foo", FALSE, svn_tristate_unknown }, + { 2, "bar", 4, "bar", FALSE, svn_tristate_unknown }, /* EOL */ { 0 }, @@ -6739,7 +6739,7 @@ test_prop_and_text_rep_sharing_collision SVN_ERR(svn_fs_file_length(&length, rev_root, "/foo", pool)); SVN_TEST_ASSERT(length == 23); - return SVN_NO_ERROR; + return SVN_NO_ERROR; } /* ------------------------------------------------------------------------ */ Modified: subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs/locks-test.c URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs/locks-test.c?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs/locks-test.c (original) +++ subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs/locks-test.c Sat Feb 14 11:15:05 2015 @@ -58,7 +58,7 @@ get_locks_callback(void *baton, { apr_hash_set(b->locks, lock_path->data, lock_path->len, svn_lock_dup(lock, hash_pool)); - return SVN_NO_ERROR; + return SVN_NO_ERROR; } else { Modified: subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs_fs/fs-fs-fuzzy-test.c URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs_fs/fs-fs-fuzzy-test.c?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs_fs/fs-fs-fuzzy-test.c (original) +++ subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs_fs/fs-fs-fuzzy-test.c Sat Feb 14 11:15:05 2015 @@ -59,7 +59,7 @@ static svn_error_t * fuzzing_1_byte_test(const svn_test_opts_t *opts, const char *repo_name, unsigned char (* modifier)(unsigned char c), - apr_pool_t *pool) + apr_pool_t *pool) { svn_repos_t *repos; svn_fs_t *fs; @@ -157,7 +157,7 @@ fuzzing_1_byte_test(const svn_test_opts_ return SVN_NO_ERROR; } - + /*** Tests ***/ /* ------------------------------------------------------------------------ */ Modified: subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c (original) +++ subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c Sat Feb 14 11:15:05 2015 @@ -144,7 +144,7 @@ create_packed_filesystem(const char *dir SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool)); SVN_ERR(svn_test__create_greek_tree(txn_root, subpool)); SVN_ERR(svn_fs_change_txn_prop(txn, SVN_PROP_REVISION_LOG, - svn_string_create(R1_LOG_MSG, pool), + svn_string_create(R1_LOG_MSG, pool), pool)); SVN_ERR(svn_fs_commit_txn(&conflict, &after_rev, txn, subpool)); SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(after_rev)); @@ -1105,7 +1105,7 @@ id_parser_test(const svn_test_opts_t *op apr_pool_t *pool) { #define LONG_MAX_STR #LONG_MAX - + /* Verify the revision number parser (e.g. first element of a txn ID) */ svn_fs_fs__id_part_t id_part; SVN_ERR(svn_fs_fs__id_txn_parse(&id_part, "0-0")); Propchange: subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs_x/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Sat Feb 14 11:15:05 2015 @@ -56,6 +56,7 @@ /subversion/branches/nfc-nfd-aware-client/subversion/tests/libsvn_fs_x:870276,870376 /subversion/branches/node_pool/subversion/tests/libsvn_fs_x:1304828-1305388 /subversion/branches/performance/subversion/tests/libsvn_fs_x:979193,980118,981087,981090,981189,981194,981287,981684,981827,982043,982355,983398,983406,983430,983474,983488,983490,983760,983764,983766,983770,984927,984973,984984,985014,985037,985046,985472,985477,985482,985487-985488,985493,985497,985500,985514,985601,985603,985606,985669,985673,985695,985697,986453,986465,986485,986491-986492,986517,986521,986605,986608,986817,986832,987865,987868-987869,987872,987886-987888,987893,988319,988898,990330,990533,990535-990537,990541,990568,990572,990574-990575,990600,990759,992899,992904,992911,993127,993141,994956,995478,995507,995603,998012,998858,999098,1001413,1001417,1004291,1022668,1022670,1022676,1022715,1022719,1025660,1025672,1027193,1027203,1027206,1027214,1027227,1028077,1028092,1028094,1028104,1028107,1028111,1028354,1029038,1029042-1029043,1029054-1029055,1029062-1029063,1029078,1029080,1029090,1029092-1029093,1029111,1029151,1029158,1029229-1029230,1029232,1029335-10293 36,1029339-1029340,1029342,1029344,1030763,1030827,1031203,1031235,1032285,1032333,1033040,1033057,1033294,1035869,1035882,1039511,1043705,1053735,1056015,1066452,1067683,1067697-1078365 +/subversion/branches/pin-externals/subversion/tests/libsvn_fs_x:1643757-1659392 /subversion/branches/py-tests-as-modules/subversion/tests/libsvn_fs_x:956579-1033052 /subversion/branches/ra_serf-digest-authn/subversion/tests/libsvn_fs_x:875693-876404 /subversion/branches/reintegrate-improvements/subversion/tests/libsvn_fs_x:873853-874164 @@ -82,4 +83,4 @@ /subversion/branches/verify-at-commit/subversion/tests/libsvn_fs_x:1462039-1462408 /subversion/branches/verify-keep-going/subversion/tests/libsvn_fs_x:1439280-1492639,1546002-1546110 /subversion/branches/wc-collate-path/subversion/tests/libsvn_fs_x:1402685-1480384 -/subversion/trunk/subversion/tests/libsvn_fs_x:1414756-1509914,1603891-1658357 +/subversion/trunk/subversion/tests/libsvn_fs_x:1414756-1509914,1603891-1659776 Modified: subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs_x/fs-x-pack-test.c URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs_x/fs-x-pack-test.c?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs_x/fs-x-pack-test.c (original) +++ subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs_x/fs-x-pack-test.c Sat Feb 14 11:15:05 2015 @@ -166,7 +166,7 @@ create_packed_filesystem(const char *dir SVN_ERR(svn_fs_txn_root(&txn_root, txn, subpool)); SVN_ERR(svn_test__create_greek_tree(txn_root, subpool)); SVN_ERR(svn_fs_change_txn_prop(txn, SVN_PROP_REVISION_LOG, - svn_string_create(R1_LOG_MSG, pool), + svn_string_create(R1_LOG_MSG, pool), pool)); SVN_ERR(svn_fs_commit_txn(&conflict, &after_rev, txn, subpool)); SVN_TEST_ASSERT(SVN_IS_VALID_REVNUM(after_rev)); Modified: subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs_x/string-table-test.c URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs_x/string-table-test.c?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs_x/string-table-test.c (original) +++ subversion/branches/remove-log-addressing/subversion/tests/libsvn_fs_x/string-table-test.c Sat Feb 14 11:15:05 2015 @@ -124,19 +124,19 @@ short_string_table_body(svn_boolean_t do apr_pool_t *pool) { apr_size_t indexes[STRING_COUNT] = { 0 }; - + string_table_builder_t *builder; string_table_t *table; int i; - + builder = svn_fs_x__string_table_builder_create(pool); for (i = 0; i < STRING_COUNT; ++i) indexes[i] = svn_fs_x__string_table_builder_add(builder, basic_strings[i], 0); - + table = svn_fs_x__string_table_create(builder, pool); if (do_load_store) SVN_ERR(store_and_load_table(&table, pool)); - + SVN_TEST_ASSERT(indexes[2] == indexes[6]); for (i = 0; i < STRING_COUNT; ++i) { Modified: subversion/branches/remove-log-addressing/subversion/tests/libsvn_ra/ra-test.c URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/libsvn_ra/ra-test.c?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/libsvn_ra/ra-test.c (original) +++ subversion/branches/remove-log-addressing/subversion/tests/libsvn_ra/ra-test.c Sat Feb 14 11:15:05 2015 @@ -441,7 +441,7 @@ lock_cb(void *baton, result->err = ra_err; svn_hash_sets(b->results, apr_pstrdup(b->pool, path), result); - + return SVN_NO_ERROR; } Modified: subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/cache-test.c URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/cache-test.c?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/cache-test.c (original) +++ subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/cache-test.c Sat Feb 14 11:15:05 2015 @@ -290,7 +290,7 @@ test_membuffer_serializer_error_handling /* Test setting data in cache using partial setter that always raises an error. */ SVN_TEST_ASSERT_ERROR( - svn_cache__set_partial(cache, "twenty", + svn_cache__set_partial(cache, "twenty", raise_error_partial_setter_func, NULL, pool), APR_EGENERAL); Modified: subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/checksum-test.c URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/checksum-test.c?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/checksum-test.c (original) +++ subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/checksum-test.c Sat Feb 14 11:15:05 2015 @@ -170,7 +170,7 @@ zero_cross_match(apr_pool_t *pool) { svn_checksum_t *i_zero; svn_checksum_t *i_A; - + i_zero = svn_checksum_create(i_kind, pool); SVN_ERR(svn_checksum_clear(i_zero)); SVN_ERR(svn_checksum(&i_A, i_kind, "A", 1, pool)); Modified: subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/config-test.c URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/config-test.c?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/config-test.c (original) +++ subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/config-test.c Sat Feb 14 11:15:05 2015 @@ -363,7 +363,7 @@ test_expand(const svn_test_opts_t *opts, /* Get expanded "c". */ svn_config_get(cfg, &val, "section1", "c", NULL); - /* With pool debugging enabled this ensures that the expanded value + /* With pool debugging enabled this ensures that the expanded value of "c" was not created in a temporary pool when expanding "g". */ SVN_TEST_STRING_ASSERT(val, "bar"); Modified: subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/io-test.c URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/io-test.c?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/io-test.c (original) +++ subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/io-test.c Sat Feb 14 11:15:05 2015 @@ -703,7 +703,7 @@ ignore_enoent(apr_pool_t *pool) SVN_ERR(svn_io_set_file_executable(path, FALSE, TRUE, pool)); SVN_ERR(svn_io_stat_dirent2(&dirent_p, path, TRUE, TRUE, pool, pool)); SVN_ERR(svn_io_stat_dirent2(&dirent_p, path, FALSE, TRUE, pool, pool)); - + /* Neither path nor parent exists. */ path = svn_dirent_join(path, "not-present", pool); SVN_ERR(svn_io_remove_dir2(path, TRUE, NULL, NULL, pool)); Modified: subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/packed-data-test.c URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/packed-data-test.c?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/packed-data-test.c (original) +++ subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/packed-data-test.c Sat Feb 14 11:15:05 2015 @@ -99,7 +99,7 @@ verify_uint_stream(const apr_uint64_t *v SVN_TEST_ASSERT(stream); SVN_TEST_ASSERT(!svn_packed__next_int_stream(stream)); SVN_TEST_ASSERT(!svn_packed__first_byte_stream(root)); - + /* the stream shall contain exactly the items we put into it */ SVN_TEST_ASSERT(svn_packed__int_count(stream) == count); for (i = 0; i < count; ++i) @@ -356,7 +356,7 @@ pack(const base_record_t *data, svn_packed__create_int_substream(base_stream, TRUE, TRUE); /* large_signed1 */ svn_packed__create_int_substream(base_stream, FALSE, TRUE); /* large_signed2 */ svn_packed__create_int_substream(base_stream, TRUE, FALSE); /* prime */ - + for (i = 0; i < count; ++i) { svn_packed__add_int(base_stream, data[i].counter); @@ -434,7 +434,7 @@ unpack(apr_size_t *count, base_record_t *data; *count = svn_packed__int_count(sub_count_stream) / 2; data = apr_pcalloc(pool, *count * sizeof(*data)); - + for (i = 0; i < *count; ++i) { data[i].counter = (int) svn_packed__get_int(base_stream); Modified: subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/priority-queue-test.c URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/priority-queue-test.c?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/priority-queue-test.c (original) +++ subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/priority-queue-test.c Sat Feb 14 11:15:05 2015 @@ -70,7 +70,7 @@ verify_empty_queue(svn_priority_queue__t /* these should be no-ops */ svn_priority_queue__update(queue); svn_priority_queue__pop(queue); - + return SVN_NO_ERROR; } Modified: subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/sqlite-test.c URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/sqlite-test.c?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/sqlite-test.c (original) +++ subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/sqlite-test.c Sat Feb 14 11:15:05 2015 @@ -57,7 +57,7 @@ error_second(svn_sqlite__context_t *sctx svn_sqlite__result_error(sctx, "fake error", 0); else svn_sqlite__result_int64(sctx, 1); - + return SVN_NO_ERROR; } @@ -102,7 +102,7 @@ test_sqlite_reset(apr_pool_t *pool) /* The svn_sqlite__step wrapper calls svn_sqlite__reset when step fails so the reset call here is a no-op. The first step can be - repeated. */ + repeated. */ SVN_ERR(svn_sqlite__reset(stmt)); SVN_ERR(svn_sqlite__step(&have_row, stmt)); SVN_TEST_ASSERT(have_row); Modified: subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/string-test.c URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/string-test.c?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/string-test.c (original) +++ subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/string-test.c Sat Feb 14 11:15:05 2015 @@ -849,7 +849,7 @@ test_string_matching(apr_pool_t *pool) SVN_TEST_ASSERT(match_len == test->match_len); SVN_TEST_ASSERT(rmatch_len == test->rmatch_len); } - + return SVN_NO_ERROR; } Modified: subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/subst_translate-test.c URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/subst_translate-test.c?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/subst_translate-test.c (original) +++ subversion/branches/remove-log-addressing/subversion/tests/libsvn_subr/subst_translate-test.c Sat Feb 14 11:15:05 2015 @@ -397,7 +397,7 @@ test_svn_subst_long_keywords(apr_pool_t "01234567890123456789012345678901234567890123456789" "012345678901234567890123456789012345678901234567"; - /* The longest keyword that can be expanded: the value is empty. */ + /* The longest keyword that can be expanded: the value is empty. */ const char keyword_z[] = "Q" "01234567890123456789012345678901234567890123456789" Modified: subversion/branches/remove-log-addressing/subversion/tests/libsvn_wc/conflict-data-test.c URL: http://svn.apache.org/viewvc/subversion/branches/remove-log-addressing/subversion/tests/libsvn_wc/conflict-data-test.c?rev=1659777&r1=1659776&r2=1659777&view=diff ============================================================================== --- subversion/branches/remove-log-addressing/subversion/tests/libsvn_wc/conflict-data-test.c (original) +++ subversion/branches/remove-log-addressing/subversion/tests/libsvn_wc/conflict-data-test.c Sat Feb 14 11:15:05 2015 @@ -294,6 +294,7 @@ test_read_write_tree_conflicts(const svn SVN_ERR(sbox_wc_mkdir(&sbox, "A")); SVN_ERR(sbox_wc_mkdir(&sbox, "A/bar")); SVN_ERR(sbox_file_write(&sbox, "A/foo", "")); + SVN_ERR(sbox_wc_add(&sbox, "A/foo")); conflict1 = tree_conflict_create(child1_abspath, svn_node_file, svn_wc_operation_merge,
