You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by hw...@apache.org on 2011/02/07 20:18:33 UTC
svn commit: r1068059 [7/7] - in /subversion/branches/ignore-mergeinfo-log:
./ build/ notes/ notes/commit-access-templates/ subversion/include/
subversion/include/private/ subversion/libsvn_client/
subversion/libsvn_delta/ subversion/libsvn_diff/ subver...
Modified: subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/special_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/special_tests.py?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/special_tests.py (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/special_tests.py Mon Feb 7 19:18:29 2011
@@ -33,9 +33,12 @@ import svntest
from svntest.main import server_has_mergeinfo
# (abbreviation)
-Skip = svntest.testcase.Skip
-SkipUnless = svntest.testcase.SkipUnless
-XFail = svntest.testcase.XFail
+Skip = svntest.testcase.Skip_deco
+SkipUnless = svntest.testcase.SkipUnless_deco
+XFail = svntest.testcase.XFail_deco
+Issues = svntest.testcase.Issues_deco
+Issue = svntest.testcase.Issue_deco
+Wimp = svntest.testcase.Wimp_deco
Item = svntest.wc.StateItem
@@ -46,7 +49,7 @@ Item = svntest.wc.StateItem
#----------------------------------------------------------------------
-
+@SkipUnless(svntest.main.is_posix_os)
def general_symlink(sbox):
"general symlink handling"
@@ -130,6 +133,7 @@ def general_symlink(sbox):
expected_status, None, wc_dir)
+@SkipUnless(svntest.main.is_posix_os)
def replace_file_with_symlink(sbox):
"replace a normal file with a special file"
@@ -161,6 +165,7 @@ def replace_file_with_symlink(sbox):
raise svntest.Failure
+@SkipUnless(svntest.main.is_posix_os)
def import_export_symlink(sbox):
"import and export a symlink"
@@ -217,7 +222,8 @@ def import_export_symlink(sbox):
#----------------------------------------------------------------------
# Regression test for issue 1986
-
+@Issue(1986)
+@SkipUnless(svntest.main.is_posix_os)
def copy_tree_with_symlink(sbox):
"'svn cp dir1 dir2' which contains a symlink"
@@ -261,6 +267,7 @@ def copy_tree_with_symlink(sbox):
svntest.actions.run_and_verify_status(wc_dir, expected_status)
+@SkipUnless(svntest.main.is_posix_os)
def replace_symlink_with_file(sbox):
"replace a special file with a non-special file"
@@ -313,6 +320,7 @@ def replace_symlink_with_file(sbox):
raise svntest.Failure
+@SkipUnless(svntest.main.is_posix_os)
def remove_symlink(sbox):
"remove a symlink"
@@ -356,6 +364,8 @@ def remove_symlink(sbox):
svntest.actions.run_and_verify_commit(wc_dir, expected_output,
expected_status, None, wc_dir)
+@SkipUnless(svntest.main.is_posix_os)
+@SkipUnless(server_has_mergeinfo)
def merge_symlink_into_file(sbox):
"merge symlink into file"
@@ -421,6 +431,7 @@ def merge_symlink_into_file(sbox):
+@SkipUnless(svntest.main.is_posix_os)
def merge_file_into_symlink(sbox):
"merge file into symlink"
@@ -478,6 +489,7 @@ def merge_file_into_symlink(sbox):
# Issue 2701: Tests to see repository with symlinks can be checked out on all
# platforms.
+@Issue(2701)
def checkout_repo_with_symlinks(sbox):
"checkout a repository containing symlinks"
@@ -505,6 +517,8 @@ def checkout_repo_with_symlinks(sbox):
expected_wc)
# Issue 2716: 'svn diff' against a symlink to a directory within the wc
+@Issue(2716)
+@SkipUnless(svntest.main.is_posix_os)
def diff_symlink_to_dir(sbox):
"diff a symlink to a directory"
@@ -542,6 +556,7 @@ def diff_symlink_to_dir(sbox):
# Issue 2692 (part of): Check that the client can check out a repository
# that contains an unknown special file type.
+@Issue(2692)
def checkout_repo_with_unknown_special_type(sbox):
"checkout repository with unknown special file type"
@@ -592,6 +607,8 @@ def replace_symlink_with_dir(sbox):
# test for issue #1808: svn up deletes local symlink that obstructs
# versioned file
+@Issue(1808)
+@SkipUnless(svntest.main.is_posix_os)
def update_obstructing_symlink(sbox):
"symlink obstructs incoming delete"
@@ -628,6 +645,7 @@ def warn_on_reserved_name(sbox):
'lock', reserved_path)
+@Skip(svntest.main.is_posix_os)
def propvalue_normalized(sbox):
"'ps svn:special' should normalize to '*'"
@@ -665,6 +683,7 @@ def propvalue_normalized(sbox):
# on users@: http://mid.gmane.org/1292856447.8650.24.camel@nimble.325Bayport
+@SkipUnless(svntest.main.is_posix_os)
def unrelated_changed_special_status(sbox):
"commit foo while bar changed special status"
@@ -688,25 +707,22 @@ def unrelated_changed_special_status(sbo
# list all tests here, starting with None:
test_list = [ None,
- SkipUnless(general_symlink, svntest.main.is_posix_os),
- SkipUnless(replace_file_with_symlink, svntest.main.is_posix_os),
- SkipUnless(import_export_symlink, svntest.main.is_posix_os),
- SkipUnless(copy_tree_with_symlink, svntest.main.is_posix_os),
- SkipUnless(replace_symlink_with_file, svntest.main.is_posix_os),
- SkipUnless(remove_symlink, svntest.main.is_posix_os),
- SkipUnless(SkipUnless(merge_symlink_into_file,
- svntest.main.is_posix_os),
- server_has_mergeinfo),
- SkipUnless(merge_file_into_symlink, svntest.main.is_posix_os),
+ general_symlink,
+ replace_file_with_symlink,
+ import_export_symlink,
+ copy_tree_with_symlink,
+ replace_symlink_with_file,
+ remove_symlink,
+ merge_symlink_into_file,
+ merge_file_into_symlink,
checkout_repo_with_symlinks,
- SkipUnless(diff_symlink_to_dir, svntest.main.is_posix_os),
+ diff_symlink_to_dir,
checkout_repo_with_unknown_special_type,
replace_symlink_with_dir,
- SkipUnless(update_obstructing_symlink, svntest.main.is_posix_os),
+ update_obstructing_symlink,
warn_on_reserved_name,
- Skip(propvalue_normalized, svntest.main.is_posix_os),
- SkipUnless(unrelated_changed_special_status,
- svntest.main.is_posix_os),
+ propvalue_normalized,
+ unrelated_changed_special_status,
]
if __name__ == '__main__':
Modified: subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/stat_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/stat_tests.py?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/stat_tests.py (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/stat_tests.py Mon Feb 7 19:18:29 2011
@@ -35,9 +35,12 @@ import svntest
from svntest import wc
# (abbreviation)
-Skip = svntest.testcase.Skip
-SkipUnless = svntest.testcase.SkipUnless
-XFail = svntest.testcase.XFail
+Skip = svntest.testcase.Skip_deco
+SkipUnless = svntest.testcase.SkipUnless_deco
+XFail = svntest.testcase.XFail_deco
+Issues = svntest.testcase.Issues_deco
+Issue = svntest.testcase.Issue_deco
+Wimp = svntest.testcase.Wimp_deco
Item = svntest.wc.StateItem
UnorderedOutput = svntest.verify.UnorderedOutput
@@ -65,7 +68,7 @@ def status_unversioned_file_in_current_d
#----------------------------------------------------------------------
# Regression for issue #590
-
+@Issue(590)
def status_update_with_nested_adds(sbox):
"run 'status -u' when nested additions are pending"
@@ -132,7 +135,7 @@ def status_shows_all_in_current_dir(sbox
#----------------------------------------------------------------------
-
+@Issue(2127)
def status_missing_file(sbox):
"status with a versioned file missing"
@@ -269,7 +272,7 @@ def status_type_change(sbox):
[], 'status')
#----------------------------------------------------------------------
-
+@SkipUnless(svntest.main.is_posix_os)
def status_type_change_to_symlink(sbox):
"status on versioned items replaced by symlinks"
@@ -583,6 +586,7 @@ def status_uninvited_parent_directory(sb
if re.match("\\s+\\*.*\.other/?$", line):
raise svntest.Failure
+@Issue(1289)
def status_on_forward_deletion(sbox):
"status -u on working copy deleted in HEAD"
# See issue #1289.
@@ -776,6 +780,7 @@ use-commit-times = yes
#----------------------------------------------------------------------
+@Issues([1617,2030])
def status_on_unversioned_dotdot(sbox):
"status on '..' where '..' is not versioned"
# See issue #1617 (and #2030).
@@ -798,6 +803,7 @@ def status_on_unversioned_dotdot(sbox):
#----------------------------------------------------------------------
+@Issue(2122)
def status_on_partially_nonrecursive_wc(sbox):
"status -u in partially non-recursive wc"
# Based on issue #2122.
@@ -960,8 +966,9 @@ def status_ignored_dir(sbox):
#----------------------------------------------------------------------
+@Issue(2030)
def status_unversioned_dir(sbox):
- "status on unversioned dir (issue 2030)"
+ "status on unversioned dir"
sbox.build(read_only = True)
dir = sbox.repo_dir
expected_err = "svn: warning: W155007: '.*(/|\\\\)" + os.path.basename(dir) + \
@@ -1128,6 +1135,7 @@ def inconsistent_eol(sbox):
#----------------------------------------------------------------------
# Test for issue #2533
+@Issue(2533)
def status_update_with_incoming_props(sbox):
"run 'status -u' variations w/ incoming propchanges"
@@ -1341,6 +1349,7 @@ def status_update_verbose_with_incoming_
#----------------------------------------------------------------------
# Test for issue #2468
+@Issue(2468)
def status_nonrecursive_update(sbox):
"run 'status -uN' with incoming changes"
@@ -1559,6 +1568,7 @@ def status_depth_update(sbox):
#----------------------------------------------------------------------
# Test for issue #2420
+@Issue(2420)
def status_dash_u_deleted_directories(sbox):
"run 'status -u' with locally deleted directories"
@@ -1626,6 +1636,7 @@ def status_dash_u_deleted_directories(sb
# Test for issue #2737: show obstructed status for versioned directories
# replaced by local directories.
+@Issue(2737)
def status_dash_u_type_change(sbox):
"status -u on versioned items whose type changed"
@@ -1782,6 +1793,8 @@ def status_with_tree_conflicts(sbox):
#----------------------------------------------------------------------
# Regression for issue #3742
+@XFail()
+@Issue(3742)
def status_nested_wc_old_format(sbox):
"status on wc with nested old-format wc"
@@ -1805,8 +1818,7 @@ test_list = [ None,
status_shows_all_in_current_dir,
status_missing_file,
status_type_change,
- SkipUnless(status_type_change_to_symlink,
- svntest.main.is_posix_os),
+ status_type_change_to_symlink,
status_with_new_files_pending,
status_for_unignored_file,
status_for_nonexistent_file,
@@ -1832,7 +1844,7 @@ test_list = [ None,
status_depth_update,
status_dash_u_type_change,
status_with_tree_conflicts,
- XFail(status_nested_wc_old_format),
+ status_nested_wc_old_format,
]
if __name__ == '__main__':
Modified: subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svnadmin_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svnadmin_tests.py?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svnadmin_tests.py (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svnadmin_tests.py Mon Feb 7 19:18:29 2011
@@ -36,9 +36,12 @@ from svntest.verify import SVNUnexpected
from svntest.main import SVN_PROP_MERGEINFO
# (abbreviation)
-Skip = svntest.testcase.Skip
-SkipUnless = svntest.testcase.SkipUnless
-XFail = svntest.testcase.XFail
+Skip = svntest.testcase.Skip_deco
+SkipUnless = svntest.testcase.SkipUnless_deco
+XFail = svntest.testcase.XFail_deco
+Issues = svntest.testcase.Issues_deco
+Issue = svntest.testcase.Issue_deco
+Wimp = svntest.testcase.Wimp_deco
Item = svntest.wc.StateItem
@@ -248,8 +251,9 @@ def inconsistent_headers(sbox):
#----------------------------------------------------------------------
# Test for issue #2729: Datestamp-less revisions in dump streams do
# not remain so after load
+@Issue(2729)
def empty_date(sbox):
- "preserve date-less revisions in load (issue #2729)"
+ "preserve date-less revisions in load"
test_create(sbox)
@@ -477,6 +481,7 @@ def fsfs_file(repo_dir, kind, rev):
return os.path.join(repo_dir, 'db', kind, rev)
+@SkipUnless(svntest.main.is_fs_type_fsfs)
def verify_incremental_fsfs(sbox):
"""svnadmin verify detects corruption dump can't"""
@@ -612,6 +617,7 @@ _0.0.t1-1 add false false /A/B/E/bravo
#----------------------------------------------------------------------
+@SkipUnless(svntest.main.is_fs_type_fsfs)
def recover_fsfs(sbox):
"recover a repository (FSFS only)"
sbox.build()
@@ -690,7 +696,7 @@ def recover_fsfs(sbox):
'db/current', expected_current_contents, actual_current_contents)
#----------------------------------------------------------------------
-
+@Issue(2983)
def load_with_parent_dir(sbox):
"'svnadmin load --parent-dir' reparents mergeinfo"
@@ -787,7 +793,7 @@ def set_uuid(sbox):
raise svntest.Failure
#----------------------------------------------------------------------
-
+@Issue(3020)
def reflect_dropped_renumbered_revs(sbox):
"reflect dropped renumbered revs in svn:mergeinfo"
@@ -824,6 +830,8 @@ def reflect_dropped_renumbered_revs(sbox
#----------------------------------------------------------------------
+@SkipUnless(svntest.main.is_fs_type_fsfs)
+@Issue(2992)
def fsfs_recover_handle_missing_revs_or_revprops_file(sbox):
"""fsfs recovery checks missing revs / revprops files"""
# Set up a repository containing the greek tree.
@@ -916,6 +924,7 @@ def create_in_repo_subdir(sbox):
# No SVNRepositoryCreateFailure raised?
raise svntest.Failure
+@SkipUnless(svntest.main.is_fs_type_fsfs)
def verify_with_invalid_revprops(sbox):
"svnadmin verify detects invalid revprops file"
@@ -968,6 +977,7 @@ def verify_with_invalid_revprops(sbox):
# each of them to 'TARGET-REPOS'.
#
# See http://subversion.tigris.org/issues/show_bug.cgi?id=3020#desc13
+@Issue(3020)
def dont_drop_valid_mergeinfo_during_incremental_loads(sbox):
"don't filter mergeinfo revs from incremental dump"
@@ -1168,6 +1178,8 @@ def dont_drop_valid_mergeinfo_during_inc
sbox.repo_url)
+@SkipUnless(svntest.main.is_posix_os)
+@Issue(2591)
def hotcopy_symlink(sbox):
"'svnadmin hotcopy' replicates symlink"
@@ -1306,18 +1318,16 @@ test_list = [ None,
hotcopy_format,
setrevprop,
verify_windows_paths_in_repos,
- SkipUnless(verify_incremental_fsfs, svntest.main.is_fs_type_fsfs),
- SkipUnless(recover_fsfs, svntest.main.is_fs_type_fsfs),
+ verify_incremental_fsfs,
+ recover_fsfs,
load_with_parent_dir,
set_uuid,
reflect_dropped_renumbered_revs,
- SkipUnless(fsfs_recover_handle_missing_revs_or_revprops_file,
- svntest.main.is_fs_type_fsfs),
+ fsfs_recover_handle_missing_revs_or_revprops_file,
create_in_repo_subdir,
- SkipUnless(verify_with_invalid_revprops,
- svntest.main.is_fs_type_fsfs),
+ verify_with_invalid_revprops,
dont_drop_valid_mergeinfo_during_incremental_loads,
- SkipUnless(hotcopy_symlink, svntest.main.is_posix_os),
+ hotcopy_symlink,
load_bad_props,
]
Modified: subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svndumpfilter_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svndumpfilter_tests.py?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svndumpfilter_tests.py (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svndumpfilter_tests.py Mon Feb 7 19:18:29 2011
@@ -37,9 +37,12 @@ from svntest.verify import SVNExpectedSt
from svnadmin_tests import load_and_verify_dumpstream, test_create
# (abbreviation)
-Skip = svntest.testcase.Skip
-SkipUnless = svntest.testcase.SkipUnless
-XFail = svntest.testcase.XFail
+Skip = svntest.testcase.Skip_deco
+SkipUnless = svntest.testcase.SkipUnless_deco
+XFail = svntest.testcase.XFail_deco
+Issues = svntest.testcase.Issues_deco
+Issue = svntest.testcase.Issue_deco
+Wimp = svntest.testcase.Wimp_deco
Item = svntest.wc.StateItem
@@ -80,7 +83,7 @@ def filter_and_return_output(dump, bufsi
######################################################################
# Tests
-
+@Issue(2982)
def reflect_dropped_renumbered_revs(sbox):
"reflect dropped renumbered revs in svn:mergeinfo"
@@ -132,6 +135,7 @@ def reflect_dropped_renumbered_revs(sbox
'propget', 'svn:mergeinfo', '-R',
sbox.repo_url)
+@Issue(3181)
def svndumpfilter_loses_mergeinfo(sbox):
"svndumpfilter loses mergeinfo"
#svndumpfilter loses mergeinfo if invoked without --renumber-revs
@@ -214,6 +218,7 @@ def _simple_dumpfilter_test(sbox, dumpfi
expected_status)
+@Issue(2697)
def dumpfilter_with_targets(sbox):
"svndumpfilter --targets blah"
## See http://subversion.tigris.org/issues/show_bug.cgi?id=2697. ##
@@ -257,6 +262,7 @@ def dumpfilter_with_patterns(sbox):
# Specifically, test that svndumpfilter, when used with the
# --skip-missing-merge-sources option, removes mergeinfo that refers to
# revisions that are older than the oldest revision in the dump stream.
+@Issue(3020)
def filter_mergeinfo_revs_outside_of_dump_stream(sbox):
"filter mergeinfo revs outside of dump stream"
@@ -491,6 +497,7 @@ def filter_mergeinfo_revs_outside_of_dum
# --renumber-revs option, can create a dump with non-contiguous revisions.
# Such dumps should not interfere with the correct remapping of mergeinfo
# source revisions.
+@Issue(3020)
def dropped_but_not_renumbered_empty_revs(sbox):
"mergeinfo maps correctly when dropping revs"
Modified: subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svnlook_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svnlook_tests.py?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svnlook_tests.py (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svnlook_tests.py Mon Feb 7 19:18:29 2011
@@ -32,8 +32,12 @@ import svntest
# (abbreviation)
-Skip = svntest.testcase.Skip
-XFail = svntest.testcase.XFail
+Skip = svntest.testcase.Skip_deco
+SkipUnless = svntest.testcase.SkipUnless_deco
+XFail = svntest.testcase.XFail_deco
+Issues = svntest.testcase.Issues_deco
+Issue = svntest.testcase.Issue_deco
+Wimp = svntest.testcase.Wimp_deco
Item = svntest.wc.StateItem
@@ -185,6 +189,7 @@ def test_misc(sbox):
#----------------------------------------------------------------------
# Issue 1089
+@Issue(1089)
def delete_file_in_moved_dir(sbox):
"delete file in moved dir"
@@ -239,6 +244,7 @@ def delete_file_in_moved_dir(sbox):
#----------------------------------------------------------------------
# Issue 1241
+@Issue(1241)
def test_print_property_diffs(sbox):
"test the printing of property diffs"
@@ -390,6 +396,7 @@ def changed_copy_info(sbox):
#----------------------------------------------------------------------
# Issue 2663
+@Issue(2663)
def tree_non_recursive(sbox):
"test 'svnlook tree --non-recursive'"
Modified: subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svnrdump_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svnrdump_tests.py?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svnrdump_tests.py (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svnrdump_tests.py Mon Feb 7 19:18:29 2011
@@ -36,11 +36,13 @@ from svntest.main import write_restricti
from svntest.main import server_has_partial_replay
# (abbreviation)
-Skip = svntest.testcase.Skip
-SkipUnless = svntest.testcase.SkipUnless
-XFail = svntest.testcase.XFail
+Skip = svntest.testcase.Skip_deco
+SkipUnless = svntest.testcase.SkipUnless_deco
+XFail = svntest.testcase.XFail_deco
+Issues = svntest.testcase.Issues_deco
+Issue = svntest.testcase.Issue_deco
+Wimp = svntest.testcase.Wimp_deco
Item = svntest.wc.StateItem
-Wimp = svntest.testcase.Wimp
## Mismatched headers during dumping operation
# Text-copy-source-* and *-sha1 headers are not provided by the RA
Modified: subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svnsync_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svnsync_tests.py?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svnsync_tests.py (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svnsync_tests.py Mon Feb 7 19:18:29 2011
@@ -35,11 +35,13 @@ from svntest.main import write_restricti
from svntest.main import server_has_partial_replay
# (abbreviation)
-Skip = svntest.testcase.Skip
-SkipUnless = svntest.testcase.SkipUnless
-XFail = svntest.testcase.XFail
+Skip = svntest.testcase.Skip_deco
+SkipUnless = svntest.testcase.SkipUnless_deco
+XFail = svntest.testcase.XFail_deco
+Issues = svntest.testcase.Issues_deco
+Issue = svntest.testcase.Issue_deco
+Wimp = svntest.testcase.Wimp_deco
Item = svntest.wc.StateItem
-Wimp = svntest.testcase.Wimp
######################################################################
# Helper routines
@@ -338,7 +340,7 @@ def detect_meddling(sbox):
".*Destination HEAD \\(2\\) is not the last merged revision \\(1\\).*")
#----------------------------------------------------------------------
-
+@Skip(svntest.main.is_ra_type_file)
def basic_authz(sbox):
"verify that unreadable content is not synced"
@@ -374,7 +376,7 @@ def basic_authz(sbox):
lambda_url)
#----------------------------------------------------------------------
-
+@Skip(svntest.main.is_ra_type_file)
def copy_from_unreadable_dir(sbox):
"verify that copies from unreadable dirs work"
@@ -493,6 +495,8 @@ def copy_from_unreadable_dir(sbox):
dest_sbox.repo_url + '/A/P')
# Issue 2705.
+@Issue(2705)
+@Skip(svntest.main.is_ra_type_file)
def copy_with_mod_from_unreadable_dir(sbox):
"verify copies with mods from unreadable dirs"
@@ -611,6 +615,8 @@ def copy_with_mod_from_unreadable_dir(sb
dest_sbox.repo_url + '/A/P/lambda')
# Issue 2705.
+@Issue(2705)
+@Skip(svntest.main.is_ra_type_file)
def copy_with_mod_from_unreadable_dir_and_copy(sbox):
"verify copies with mods from unreadable dirs +copy"
@@ -721,17 +727,20 @@ def copy_revprops(sbox):
"test copying revprops other than svn:*"
run_test(sbox, "revprops.dump")
+@SkipUnless(server_has_partial_replay)
def only_trunk(sbox):
"test syncing subdirectories"
run_test(sbox, "svnsync-trunk-only.dump", "/trunk",
"svnsync-trunk-only.expected.dump")
+@SkipUnless(server_has_partial_replay)
def only_trunk_A_with_changes(sbox):
"test syncing subdirectories with changes on root"
run_test(sbox, "svnsync-trunk-A-changes.dump", "/trunk/A",
"svnsync-trunk-A-changes.expected.dump")
# test for issue #2904
+@Issue(2904)
def move_and_modify_in_the_same_revision(sbox):
"test move parent and modify child file in same rev"
run_test(sbox, "svnsync-move-and-modify.dump")
@@ -791,6 +800,7 @@ def delete_svn_props(sbox):
"copy with svn:prop deletions"
run_test(sbox, "delete-svn-props.dump")
+@Issue(3438)
def commit_a_copy_of_root(sbox):
"commit a copy of root causes sync to fail"
#Testcase for issue 3438.
@@ -832,12 +842,14 @@ def commit_a_copy_of_root(sbox):
# svnmucc.exe -mm cp head %ROOT_URL%/trunk/A %ROOT_URL%/trunk/H/Z
# rm %ROOT_URL%/trunk/H/Z/B
# mkdir %ROOT_URL%/trunk/H/Z/B
+@Issue(3641)
def descend_into_replace(sbox):
"descending into replaced dir looks in src"
run_test(sbox, "descend-into-replace.dump", subdir='/trunk/H',
exp_dump_file_name = "descend-into-replace.expected.dump")
# issue #3728
+@Issue(3728)
def delete_revprops(sbox):
"copy-revprops with removals"
svnsync_tests_dir = os.path.join(os.path.dirname(sys.argv[0]),
@@ -887,19 +899,15 @@ test_list = [ None,
file_dir_file,
copy_parent_modify_prop,
detect_meddling,
- Skip(basic_authz, svntest.main.is_ra_type_file),
- Skip(copy_from_unreadable_dir, svntest.main.is_ra_type_file),
- Skip(copy_with_mod_from_unreadable_dir,
- svntest.main.is_ra_type_file),
- Skip(copy_with_mod_from_unreadable_dir_and_copy,
- svntest.main.is_ra_type_file),
+ basic_authz,
+ copy_from_unreadable_dir,
+ copy_with_mod_from_unreadable_dir,
+ copy_with_mod_from_unreadable_dir_and_copy,
url_encoding,
no_author,
copy_revprops,
- SkipUnless(only_trunk,
- server_has_partial_replay),
- SkipUnless(only_trunk_A_with_changes,
- server_has_partial_replay),
+ only_trunk,
+ only_trunk_A_with_changes,
move_and_modify_in_the_same_revision,
info_synchronized,
info_not_synchronized,
Modified: subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svntest/main.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svntest/main.py?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svntest/main.py (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svntest/main.py Mon Feb 7 19:18:29 2011
@@ -1157,15 +1157,16 @@ class TestRunner:
or options.mode_filter.upper() == self.pred.list_mode().upper() \
or (options.mode_filter.upper() == 'PASS' \
and self.pred.list_mode() == ''):
+ tail = ''
+ if self.pred.issues:
+ tail += " [%s]" % ','.join(['#%d' % i for i in self.pred.issues])
if options.verbose and self.pred.inprogress:
- print(" %3d %-5s %s [[%s]]" % (self.index,
- self.pred.list_mode(),
- self.pred.description,
- self.pred.inprogress))
+ tail += " [[%s]]" % self.pred.inprogress
else:
- print(" %3d %-5s %s" % (self.index,
- self.pred.list_mode(),
- self.pred.description))
+ print(" %3d %-5s %s%s" % (self.index,
+ self.pred.list_mode(),
+ self.pred.description,
+ tail))
sys.stdout.flush()
def get_mode(self):
@@ -1475,7 +1476,7 @@ def run_tests(test_list, serial_only = F
#
# This routine parses sys.argv to decide what to do.
def execute_tests(test_list, serial_only = False, test_name = None,
- progress_func = None):
+ progress_func = None, test_selection = []):
"""Similar to run_tests(), but just returns the exit code, rather than
exiting the process. This function can be used when a caller doesn't
want the process to die."""
@@ -1496,13 +1497,14 @@ def execute_tests(test_list, serial_only
testnums = []
if not options:
+ # Override which tests to run from the commandline
(parser, args) = _parse_options()
+ test_selection = args
else:
- args = []
parser = _create_parser()
# parse the positional arguments (test nums, names)
- for arg in args:
+ for arg in test_selection:
appended = False
try:
testnums.append(int(arg))
Modified: subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svntest/testcase.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svntest/testcase.py?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svntest/testcase.py (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svntest/testcase.py Mon Feb 7 19:18:29 2011
@@ -28,7 +28,7 @@ import os, types, sys
import svntest
# if somebody does a "from testcase import *", they only get these names
-__all__ = ['XFail', 'Wimp', 'Skip', 'SkipUnless']
+__all__ = ['_XFail', '_Wimp', '_Skip', '_SkipUnless']
RESULT_OK = 'ok'
RESULT_FAIL = 'fail'
@@ -70,7 +70,8 @@ class TestCase:
RESULT_SKIP: (2, TextColors.success('SKIP: '), True),
}
- def __init__(self, delegate=None, cond_func=lambda: True, doc=None, wip=None):
+ def __init__(self, delegate=None, cond_func=lambda: True, doc=None, wip=None,
+ issues=None):
"""Create a test case instance based on DELEGATE.
COND_FUNC is a callable that is evaluated at test run time and should
@@ -91,6 +92,10 @@ class TestCase:
self._cond_func = cond_func
self.description = doc or delegate.description
self.inprogress = wip
+ if type(issues) == type(0):
+ self.issues = [issues]
+ else:
+ self.issues = issues
def get_function_name(self):
"""Return the name of the python function implementing the test."""
@@ -103,6 +108,13 @@ class TestCase:
"""
return self._delegate.get_sandbox_name()
+ def set_issues(self, issues):
+ """Set the issues associated with this test."""
+ if type(issues) == type(0):
+ self.issues = [issues]
+ else:
+ self.issues = issues
+
def run(self, sandbox):
"""Run the test within the given sandbox."""
return self._delegate.run(sandbox)
@@ -129,7 +141,7 @@ class FunctionTestCase(TestCase):
is derived from the file name in which FUNC was defined)
"""
- def __init__(self, func):
+ def __init__(self, func, issues=None):
# it better be a function that accepts an sbox parameter and has a
# docstring on it.
assert isinstance(func, types.FunctionType)
@@ -153,7 +165,7 @@ class FunctionTestCase(TestCase):
assert doc[0].lower() == doc[0], \
"%s's docstring should not be capitalized" % name
- TestCase.__init__(self, doc=doc)
+ TestCase.__init__(self, doc=doc, issues=issues)
self.func = func
def get_function_name(self):
@@ -170,7 +182,7 @@ class FunctionTestCase(TestCase):
return self.func(sandbox)
-class XFail(TestCase):
+class _XFail(TestCase):
"""A test that is expected to fail, if its condition is true."""
_result_map = {
@@ -179,7 +191,8 @@ class XFail(TestCase):
RESULT_SKIP: (2, TextColors.success('SKIP: '), True),
}
- def __init__(self, test_case, cond_func=lambda: True, wip=None):
+ def __init__(self, test_case, cond_func=lambda: True, wip=None,
+ issues=None):
"""Create an XFail instance based on TEST_CASE. COND_FUNC is a
callable that is evaluated at test run time and should return a
boolean value. If COND_FUNC returns true, then TEST_CASE is
@@ -189,16 +202,19 @@ class XFail(TestCase):
information that are not available at __init__ time (like the fact
that we're running over a particular RA layer).
- WIP is ..."""
+ WIP is ...
+
+ ISSUES is an issue number (or a list of issue numbers) tracking this."""
- TestCase.__init__(self, create_test_case(test_case), cond_func, wip=wip)
+ TestCase.__init__(self, create_test_case(test_case), cond_func, wip=wip,
+ issues=issues)
def list_mode(self):
# basically, the only possible delegate is a Skip test. favor that mode.
return self._delegate.list_mode() or 'XFAIL'
-class Wimp(XFail):
+class _Wimp(_XFail):
"""Like XFail, but indicates a work-in-progress: an unexpected pass
is not considered a test failure."""
@@ -209,13 +225,13 @@ class Wimp(XFail):
}
def __init__(self, wip, test_case, cond_func=lambda: True):
- XFail.__init__(self, test_case, cond_func, wip)
+ _XFail.__init__(self, test_case, cond_func, wip)
-class Skip(TestCase):
+class _Skip(TestCase):
"""A test that will be skipped if its conditional is true."""
- def __init__(self, test_case, cond_func=lambda: True):
+ def __init__(self, test_case, cond_func=lambda: True, issues=None):
"""Create a Skip instance based on TEST_CASE. COND_FUNC is a
callable that is evaluated at test run time and should return a
boolean value. If COND_FUNC returns true, then TEST_CASE is
@@ -225,7 +241,8 @@ class Skip(TestCase):
__init__ time (like the fact that we're running over a
particular RA layer)."""
- TestCase.__init__(self, create_test_case(test_case), cond_func)
+ TestCase.__init__(self, create_test_case(test_case), cond_func,
+ issues=issues)
def list_mode(self):
if self._cond_func():
@@ -243,15 +260,70 @@ class Skip(TestCase):
return self._delegate.run(sandbox)
-class SkipUnless(Skip):
+class _SkipUnless(_Skip):
"""A test that will be skipped if its conditional is false."""
def __init__(self, test_case, cond_func):
- Skip.__init__(self, test_case, lambda c=cond_func: not c())
+ _Skip.__init__(self, test_case, lambda c=cond_func: not c())
-def create_test_case(func):
+def create_test_case(func, issues=None):
if isinstance(func, TestCase):
return func
else:
- return FunctionTestCase(func)
+ return FunctionTestCase(func, issues=issues)
+
+
+# Various decorators to make declaring tests as such simpler
+def XFail_deco(cond_func = lambda: True):
+ def _second(func):
+ if isinstance(func, TestCase):
+ return _XFail(func, cond_func, issues=func.issues)
+ else:
+ return _XFail(func, cond_func)
+
+ return _second
+
+
+def Wimp_deco(func):
+ if isinstance(func, TestCase):
+ return _Wimp(func, issues=func.issues)
+ else:
+ return _Wimp(func)
+
+
+def Skip_deco(cond_func = lambda: True):
+ def _second(func):
+ if isinstance(func, TestCase):
+ return _Skip(func, cond_func, issues=func.issues)
+ else:
+ return _Skip(func, cond_func)
+
+ return _second
+
+
+def SkipUnless_deco(cond_func):
+ def _second(func):
+ if isinstance(func, TestCase):
+ return _Skip(func, lambda c=cond_func: not c(), issues=func.issues)
+ else:
+ return _Skip(func, lambda c=cond_func: not c())
+
+ return _second
+
+
+def Issues_deco(issues):
+ def _second(func):
+ if isinstance(func, TestCase):
+ # if the wrapped thing is already a test case, just set the issues
+ func.set_issues(issues)
+ return func
+
+ else:
+ # we need to wrap the function
+ return create_test_case(func, issues=issues)
+
+ return _second
+
+# Create a singular alias, for linguistic correctness
+Issue_deco = Issues_deco
Modified: subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svnversion_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svnversion_tests.py?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svnversion_tests.py (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/svnversion_tests.py Mon Feb 7 19:18:29 2011
@@ -33,8 +33,12 @@ import svntest
from svntest import wc
# (abbreviation)
-Skip = svntest.testcase.Skip
-XFail = svntest.testcase.XFail
+Skip = svntest.testcase.Skip_deco
+SkipUnless = svntest.testcase.SkipUnless_deco
+XFail = svntest.testcase.XFail_deco
+Issues = svntest.testcase.Issues_deco
+Issue = svntest.testcase.Issue_deco
+Wimp = svntest.testcase.Wimp_deco
Item = svntest.wc.StateItem
#----------------------------------------------------------------------
@@ -207,6 +211,7 @@ def ignore_externals(sbox):
#----------------------------------------------------------------------
# Test for issue #3461 'excluded subtrees are not detected by svnversion'
+@Issue(3461)
def svnversion_with_excluded_subtrees(sbox):
"test 'svnversion' with excluded subtrees"
sbox.build()
Modified: subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/switch_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/switch_tests.py?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/switch_tests.py (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/switch_tests.py Mon Feb 7 19:18:29 2011
@@ -32,10 +32,12 @@ import svntest
from svntest import verify, actions, main
# (abbreviation)
-Skip = svntest.testcase.Skip
-SkipUnless = svntest.testcase.SkipUnless
-XFail = svntest.testcase.XFail
-Wimp = svntest.testcase.Wimp
+Skip = svntest.testcase.Skip_deco
+SkipUnless = svntest.testcase.SkipUnless_deco
+XFail = svntest.testcase.XFail_deco
+Issues = svntest.testcase.Issues_deco
+Issue = svntest.testcase.Issue_deco
+Wimp = svntest.testcase.Wimp_deco
Item = svntest.wc.StateItem
from svntest.main import SVN_PROP_MERGEINFO, server_has_mergeinfo
@@ -673,7 +675,8 @@ def delete_subdir(sbox):
#----------------------------------------------------------------------
# Issue 1532: Switch a file to a dir: can't switch it back to the file
-
+@XFail()
+@Issue(1532)
def file_dir_file(sbox):
"switch a file to a dir and back to the file"
sbox.build(read_only = True)
@@ -908,7 +911,7 @@ def bad_intermediate_urls(sbox):
#----------------------------------------------------------------------
# Regression test for issue #1825: failed switch may corrupt
# working copy
-
+@Issue(1825)
def obstructed_switch(sbox):
"obstructed switch"
#svntest.factory.make(sbox, """svn cp -m msgcopy url/A/B/E url/A/B/Esave
@@ -1048,6 +1051,7 @@ def commit_mods_below_switch(sbox):
expected_output, expected_status,
None, C_path, D_path)
+@Issue(2380)
def relocate_beyond_repos_root(sbox):
"relocate with prefixes longer than repo root"
sbox.build(read_only=True, create_wc=False)
@@ -1350,8 +1354,6 @@ def forced_switch(sbox):
'--force')
#----------------------------------------------------------------------
-# This test currently XFails for serf as the different order of
-# operations is not handled here.
def forced_switch_failures(sbox):
"forced switch detects tree conflicts"
# svntest.factory.make(sbox,
@@ -1559,6 +1561,12 @@ def forced_switch_failures(sbox):
'A/B/F/pi' : Item(status='A '),
})
+ # When running the tests over ra_serf, 'A/D/G/omega' and 'A/D/G/psi' do
+ # manage to get added before the forced switch above errors out. So don't
+ # expect those two paths to appear in the output of the final update.
+ if svntest.main.is_ra_type_dav_serf():
+ expected_output.remove('A/D/G/omega', 'A/D/G/psi')
+
expected_disk.remove('A/D/G/tau', 'A/D/G/rho', 'A/D/G/pi')
expected_disk.add({
'A/D/H/I' : Item(),
@@ -1697,7 +1705,7 @@ def switch_scheduled_add(sbox):
'switch', switch_url, file_path)
#----------------------------------------------------------------------
-
+@SkipUnless(server_has_mergeinfo)
def mergeinfo_switch_elision(sbox):
"mergeinfo does not elide post switch"
@@ -2566,6 +2574,7 @@ def tree_conflicts_on_switch_1_1(sbox):
expected_info = expected_info) ] )
+@Issue(3334)
def tree_conflicts_on_switch_1_2(sbox):
"tree conflicts 1.2: tree del, leaf del on switch"
@@ -2664,6 +2673,7 @@ def tree_conflicts_on_switch_1_2(sbox):
expected_info = expected_info) ] )
+@Issue(3334)
def tree_conflicts_on_switch_2_1(sbox):
"tree conflicts 2.1: leaf edit, tree del on switch"
@@ -3020,6 +3030,7 @@ def relocate_with_switched_children(sbox
expected_info = { 'URL' : pattern }
svntest.actions.run_and_verify_info([expected_info], path)
+@XFail()
def copy_with_switched_subdir(sbox):
"copy directory with switched subdir"
sbox.build()
@@ -3098,6 +3109,7 @@ def copy_with_switched_subdir(sbox):
svntest.actions.run_and_verify_status(wc_dir, state)
### regression test for issue #3597
+@Issue(3597)
def relocate_with_relative_externals(sbox):
"relocate a directory containing relative externals"
@@ -3142,7 +3154,7 @@ test_list = [ None,
log_switched_file,
relocate_deleted_missing_copied,
delete_subdir,
- XFail(file_dir_file),
+ file_dir_file,
nonrecursive_switching,
failed_anchor_is_target,
bad_intermediate_urls,
@@ -3153,10 +3165,9 @@ test_list = [ None,
switch_change_repos_root,
relocate_and_propset,
forced_switch,
- XFail(forced_switch_failures,
- svntest.main.is_ra_type_dav_serf),
+ forced_switch_failures,
switch_scheduled_add,
- SkipUnless(mergeinfo_switch_elision, server_has_mergeinfo),
+ mergeinfo_switch_elision,
switch_with_obstructing_local_adds,
switch_with_depth,
switch_to_dir_with_peg_rev,
@@ -3171,7 +3182,7 @@ test_list = [ None,
tree_conflicts_on_switch_3,
single_file_relocate,
relocate_with_switched_children,
- XFail(copy_with_switched_subdir),
+ copy_with_switched_subdir,
relocate_with_relative_externals,
]
Modified: subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/trans_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/trans_tests.py?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/trans_tests.py (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/trans_tests.py Mon Feb 7 19:18:29 2011
@@ -32,8 +32,12 @@ import svntest
from svntest import wc
# (abbreviation)
-Skip = svntest.testcase.Skip
-XFail = svntest.testcase.XFail
+Skip = svntest.testcase.Skip_deco
+SkipUnless = svntest.testcase.SkipUnless_deco
+XFail = svntest.testcase.XFail_deco
+Issues = svntest.testcase.Issues_deco
+Issue = svntest.testcase.Issue_deco
+Wimp = svntest.testcase.Wimp_deco
Item = svntest.wc.StateItem
@@ -446,6 +450,7 @@ def keywords_from_birth(sbox):
def do_nothing(x, y):
return 0
+@Issue(631)
def update_modified_with_translation(sbox):
"update modified file with eol-style 'native'"
@@ -534,7 +539,7 @@ def update_modified_with_translation(sbo
# contents are transmitted to the server during commit, and b) that
# after the commit, the file and its text-base have been changed to
# have the new line-ending style.
-
+@Issue(1085)
def eol_change_is_text_mod(sbox):
"committing eol-style change forces text send"
@@ -588,7 +593,7 @@ def eol_change_is_text_mod(sbox):
#----------------------------------------------------------------------
# Regression test for issue #1151. A single file in a directory
# didn't get keywords expanded on checkout.
-
+@Issue(1151)
def keyword_expanded_on_checkout(sbox):
"keyword expansion for lone file in directory"
Modified: subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/tree_conflict_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/tree_conflict_tests.py?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/tree_conflict_tests.py (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/tree_conflict_tests.py Mon Feb 7 19:18:29 2011
@@ -38,9 +38,12 @@ from svntest.actions import run_and_veri
from svntest.actions import get_virginal_state
# (abbreviation)
-Skip = svntest.testcase.Skip
-SkipUnless = svntest.testcase.SkipUnless
-XFail = svntest.testcase.XFail
+Skip = svntest.testcase.Skip_deco
+SkipUnless = svntest.testcase.SkipUnless_deco
+XFail = svntest.testcase.XFail_deco
+Issues = svntest.testcase.Issues_deco
+Issue = svntest.testcase.Issue_deco
+Wimp = svntest.testcase.Wimp_deco
Item = svntest.wc.StateItem
AnyOutput = svntest.verify.AnyOutput
@@ -637,6 +640,8 @@ 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"
# WC state: as scheduled (no obstruction)
@@ -685,6 +690,9 @@ def merge_dir_mod_onto_not_dir(sbox):
test_tc_merge(sbox, d_mods, br_scen = d_dels + d_rpl_f)
test_tc_merge(sbox2, d_mods, wc_scen = d_dels)
+# Test for issue #3150 'tree conflicts with directories as victims'.
+@XFail()
+@Issue(3150)
def merge_dir_del_onto_not_same(sbox):
"merge dir: del/rpl/mv onto not-same"
sbox2 = sbox.clone_dependent()
@@ -705,6 +713,7 @@ def merge_dir_add_onto_not_none(sbox):
#----------------------------------------------------------------------
+@XFail()
def force_del_tc_inside(sbox):
"--force del on dir with TCs inside"
### This test is currently marked XFail because we don't remove tree
@@ -797,6 +806,7 @@ def force_del_tc_inside(sbox):
#----------------------------------------------------------------------
+@XFail()
def force_del_tc_is_target(sbox):
"--force del on tree-conflicted targets"
# A/C
@@ -965,6 +975,8 @@ def query_absent_tree_conflicted_dir(sbo
#----------------------------------------------------------------------
+@XFail()
+@Issue(3608)
def up_add_onto_add_revert(sbox):
"issue #3608: reverting an add onto add conflict"
@@ -996,8 +1008,8 @@ def up_add_onto_add_revert(sbox):
expected_status = get_virginal_state(wc2_dir, 2)
expected_status.add({
- 'newfile' : Item(status='A ', copied='+', treeconflict='C', wc_rev='-'),
- 'NewDir' : Item(status='A ', copied='+', treeconflict='C', wc_rev='-'),
+ 'newfile' : Item(status='R ', copied='+', treeconflict='C', wc_rev='-'),
+ 'NewDir' : Item(status='R ', copied='+', treeconflict='C', wc_rev='-'),
})
run_and_verify_update(wc2_dir,
@@ -1027,6 +1039,8 @@ def up_add_onto_add_revert(sbox):
#----------------------------------------------------------------------
# Regression test for issue #3525 and #3533
#
+@XFail()
+@Issues([3525,3533])
def lock_update_only(sbox):
"lock status update shouldn't flag tree conflict"
@@ -1074,21 +1088,20 @@ test_list = [ None,
up_sw_dir_mod_onto_del,
up_sw_dir_del_onto_mod,
up_sw_dir_del_onto_del,
- XFail(up_sw_dir_add_onto_add,
- svntest.main.is_ra_type_dav),
+ up_sw_dir_add_onto_add,
merge_file_mod_onto_not_file,
merge_file_del_onto_not_same,
merge_file_del_onto_not_file,
merge_file_add_onto_not_none,
merge_dir_mod_onto_not_dir,
- XFail(merge_dir_del_onto_not_same),
+ merge_dir_del_onto_not_same,
merge_dir_del_onto_not_dir,
merge_dir_add_onto_not_none,
- XFail(force_del_tc_inside),
- XFail(force_del_tc_is_target),
+ force_del_tc_inside,
+ force_del_tc_is_target,
query_absent_tree_conflicted_dir,
- XFail(up_add_onto_add_revert),
- XFail(lock_update_only),
+ up_add_onto_add_revert,
+ lock_update_only,
]
if __name__ == '__main__':
Modified: subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/update_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/update_tests.py?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/update_tests.py (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/update_tests.py Mon Feb 7 19:18:29 2011
@@ -35,10 +35,12 @@ from merge_tests import expected_merge_o
from merge_tests import set_up_branch
# (abbreviation)
-Skip = svntest.testcase.Skip
-SkipUnless = svntest.testcase.SkipUnless
-XFail = svntest.testcase.XFail
-Wimp = svntest.testcase.Wimp
+Skip = svntest.testcase.Skip_deco
+SkipUnless = svntest.testcase.SkipUnless_deco
+XFail = svntest.testcase.XFail_deco
+Issues = svntest.testcase.Issues_deco
+Issue = svntest.testcase.Issue_deco
+Wimp = svntest.testcase.Wimp_deco
Item = svntest.wc.StateItem
exp_noop_up_out = svntest.actions.expected_noop_update_output
@@ -3115,6 +3117,7 @@ def update_conflicted(sbox):
None, None, 1)
#----------------------------------------------------------------------
+@SkipUnless(server_has_mergeinfo)
def mergeinfo_update_elision(sbox):
"mergeinfo does not elide after update"
@@ -3936,7 +3939,7 @@ def update_accept_conflicts(sbox):
extra_files)
# Test for a wc corruption race condition (possibly introduced in
-# r23342) which is easy to trigger if interactive conflict resolution
+# r863416) which is easy to trigger if interactive conflict resolution
# dies in the middle of prompting. Specifically, we run an update
# with interactive-conflicts on but close stdin immediately, so the
# prompt errors out; then the dir_baton pool cleanup handlers in the
@@ -4564,6 +4567,8 @@ def tree_conflicts_on_update_2_2(sbox):
# conflicts'
#
# Marked as XFail until issue #3329 is resolved.
+@Issue(3329)
+@XFail()
def tree_conflicts_on_update_2_3(sbox):
"tree conflicts 2.3: skip on 2nd update"
@@ -4846,6 +4851,8 @@ def tree_conflict_uc1_update_deleted_tre
# Issue #3334: a delete-onto-modified tree conflict should leave the node
# scheduled for re-addition.
+@Issue(3334)
+@XFail()
def tree_conflict_uc2_schedule_re_add(sbox):
"tree conflicts on update UC2, schedule re-add"
sbox.build()
@@ -5100,6 +5107,8 @@ def update_wc_of_dir_to_rev_not_containi
# tree conflict'
#
# Marked as XFail until that issue is fixed.
+@Issue(3525)
+@XFail()
def update_deleted_locked_files(sbox):
"verify update of deleted locked files"
@@ -5139,12 +5148,14 @@ def update_deleted_locked_files(sbox):
expected_status)
#----------------------------------------------------------------------
-# Test for issue #3659 svn update --depth <DEPTH> allows making a working
+# Test for issue #3569 svn update --depth <DEPTH> allows making a working
# copy incomplete.
#
-# XFail until issue #3659 is fixed. This test needs extension to map some
+# XFail until issue #3569 is fixed. This test needs extension to map some
# real use cases (all add operations are missing if a directory is updated
# without its children.)
+@XFail()
+@Issue(3569)
def update_empty_hides_entries(sbox):
"svn up --depth empty hides entries for next update"
sbox.build()
@@ -5306,6 +5317,8 @@ def update_with_excluded_subdir(sbox):
# Test for issue #3471 'svn up touches file w/ lock & svn:keywords property'
#
# Marked as XFail until the issue is fixed.
+@XFail()
+@Issue(3471)
def update_with_file_lock_and_keywords_property_set(sbox):
"""update with file lock & keywords property set"""
sbox.build()
@@ -5333,6 +5346,7 @@ def update_with_file_lock_and_keywords_p
# Updating a nonexistent or deleted path should be a successful no-op,
# when there is no incoming change. In trunk@1035343, such an update
# within a copied directory triggered an assertion failure.
+@XFail()
def update_nonexistent_child_of_copy(sbox):
"""update a nonexistent child of a copied dir"""
sbox.build()
@@ -5388,8 +5402,7 @@ test_list = [ None,
update_wc_with_replaced_file,
update_with_obstructing_additions,
update_conflicted,
- SkipUnless(mergeinfo_update_elision,
- server_has_mergeinfo),
+ mergeinfo_update_elision,
update_copied_from_replaced_and_changed,
update_copied_and_deleted_prop,
update_accept_conflicts,
@@ -5400,18 +5413,18 @@ test_list = [ None,
tree_conflicts_on_update_1_2,
tree_conflicts_on_update_2_1,
tree_conflicts_on_update_2_2,
- XFail(tree_conflicts_on_update_2_3),
+ tree_conflicts_on_update_2_3,
tree_conflicts_on_update_3,
tree_conflict_uc1_update_deleted_tree,
- XFail(tree_conflict_uc2_schedule_re_add),
+ tree_conflict_uc2_schedule_re_add,
set_deep_depth_on_target_with_shallow_children,
update_wc_of_dir_to_rev_not_containing_this_dir,
- XFail(update_deleted_locked_files),
- XFail(update_empty_hides_entries),
+ update_deleted_locked_files,
+ update_empty_hides_entries,
mergeinfo_updates_merge_with_local_mods,
update_with_excluded_subdir,
- XFail(update_with_file_lock_and_keywords_property_set),
- XFail(update_nonexistent_child_of_copy),
+ update_with_file_lock_and_keywords_property_set,
+ update_nonexistent_child_of_copy,
]
if __name__ == '__main__':
Modified: subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/upgrade_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/upgrade_tests.py?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/upgrade_tests.py (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/upgrade_tests.py Mon Feb 7 19:18:29 2011
@@ -40,8 +40,12 @@ import svntest
from svntest import wc
Item = svntest.wc.StateItem
-XFail = svntest.testcase.XFail
-SkipUnless = svntest.testcase.SkipUnless
+Skip = svntest.testcase.Skip_deco
+SkipUnless = svntest.testcase.SkipUnless_deco
+XFail = svntest.testcase.XFail_deco
+Issues = svntest.testcase.Issues_deco
+Issue = svntest.testcase.Issue_deco
+Wimp = svntest.testcase.Wimp_deco
wc_is_too_old_regex = (".*Working copy '.*' is too old \(format \d+.*\).*")
@@ -550,6 +554,7 @@ def do_x3_upgrade(sbox):
'A/B/E/alpha' : {'svn:eol-style': 'native'}
})
+@XFail()
def x3_1_4_0(sbox):
"3x same wc upgrade 1.4.0 test"
@@ -640,6 +645,7 @@ def missing_dirs2(sbox):
expected_status.tweak('A/D', 'A/B_new/F', status='! ')
run_and_verify_status_no_server(sbox.wc_dir, expected_status)
+@XFail()
def delete_and_keep_local(sbox):
"check status delete and delete --keep-local"
@@ -855,12 +861,12 @@ test_list = [ None,
basic_upgrade_1_0,
# Upgrading from 1.4.0-1.4.5 with specific states fails
# See issue #2530
- XFail(x3_1_4_0),
+ x3_1_4_0,
x3_1_4_6,
x3_1_6_12,
missing_dirs,
missing_dirs2,
- XFail(delete_and_keep_local),
+ delete_and_keep_local,
dirs_only_upgrade,
upgrade_tree_conflict_data,
delete_in_copy_upgrade,
Modified: subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/utf8_tests.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/utf8_tests.py?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/utf8_tests.py (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/tests/cmdline/utf8_tests.py Mon Feb 7 19:18:29 2011
@@ -34,7 +34,12 @@ from svntest import wc
# (abbreviation)
Item = wc.StateItem
-Skip = svntest.testcase.Skip
+Skip = svntest.testcase.Skip_deco
+SkipUnless = svntest.testcase.SkipUnless_deco
+XFail = svntest.testcase.XFail_deco
+Issues = svntest.testcase.Issues_deco
+Issue = svntest.testcase.Issue_deco
+Wimp = svntest.testcase.Wimp_deco
#--------------------------------------------------------------------
# Data
@@ -55,7 +60,7 @@ i18n_logmsg = 'drie\xc3\xabntwintig keer
#
# Each test must return on success or raise on failure.
-
+@Skip()
def basic_utf8_conversion(sbox):
"conversion of paths and logs to/from utf8"
@@ -154,7 +159,7 @@ if localematch:
# list all tests here, starting with None:
test_list = [ None,
- Skip(basic_utf8_conversion),
+ basic_utf8_conversion,
]
if __name__ == '__main__':
Modified: subversion/branches/ignore-mergeinfo-log/subversion/tests/libsvn_repos/repos-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/tests/libsvn_repos/repos-test.c?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/tests/libsvn_repos/repos-test.c (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/tests/libsvn_repos/repos-test.c Mon Feb 7 19:18:29 2011
@@ -2106,7 +2106,7 @@ reporter_depth_exclude(const svn_test_op
FALSE, NULL, subpool));
/* This is the illegal call, since A/D was excluded above; the call
- itself will not error, but finish_report() will. As of r28098,
+ itself will not error, but finish_report() will. As of r868172,
this delayed error behavior is not actually promised by the
reporter API, which merely warns callers not to touch a path
underneath a previously excluded path without defining what will
Modified: subversion/branches/ignore-mergeinfo-log/subversion/tests/libsvn_subr/stream-test.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/subversion/tests/libsvn_subr/stream-test.c?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/subversion/tests/libsvn_subr/stream-test.c (original)
+++ subversion/branches/ignore-mergeinfo-log/subversion/tests/libsvn_subr/stream-test.c Mon Feb 7 19:18:29 2011
@@ -342,71 +342,72 @@ test_stream_seek_translated(apr_pool_t *
{
svn_stream_t *stream, *translated_stream;
svn_stringbuf_t *stringbuf;
- char buf[23];
+ char buf[44]; /* strlen("One$MyKeyword: my keyword was expanded $Two") + \0 */
apr_size_t len;
- svn_stream_mark_t *mark, *mark2;
+ svn_stream_mark_t *mark;
apr_hash_t *keywords;
svn_string_t *keyword_val;
keywords = apr_hash_make(pool);
- keyword_val = svn_string_create("my key word was expanded", pool);
+ keyword_val = svn_string_create("my keyword was expanded", pool);
apr_hash_set(keywords, "MyKeyword", APR_HASH_KEY_STRING, keyword_val);
stringbuf = svn_stringbuf_create("One$MyKeyword$Two", pool);
stream = svn_stream_from_stringbuf(stringbuf, pool);
translated_stream = svn_subst_stream_translated(stream, APR_EOL_STR,
FALSE, keywords, TRUE, pool);
- len = 3;
- SVN_ERR(svn_stream_read(translated_stream, buf, &len));
- SVN_TEST_ASSERT(len == 3);
- buf[3] = '\0';
- SVN_TEST_STRING_ASSERT(buf, "One");
-
/* Seek from outside of keyword to inside of keyword. */
+ len = 25;
+ SVN_ERR(svn_stream_read(translated_stream, buf, &len));
+ SVN_TEST_ASSERT(len == 25);
+ buf[25] = '\0';
+ SVN_TEST_STRING_ASSERT(buf, "One$MyKeyword: my keyword");
SVN_ERR(svn_stream_mark(translated_stream, &mark, pool));
- len = 3;
+ SVN_ERR(svn_stream_reset(translated_stream));
+ SVN_ERR(svn_stream_seek(translated_stream, mark));
+ len = 4;
SVN_ERR(svn_stream_read(translated_stream, buf, &len));
- SVN_TEST_ASSERT(len == 3);
- buf[3] = '\0';
- /* ### The test currently fails here because the keyword isn't
- * ### expanded correctly. buf contains "$My\0" */
- SVN_TEST_STRING_ASSERT(buf, "my ");
- SVN_ERR(svn_stream_seek(stream, mark));
- len = 3;
- SVN_ERR(svn_stream_read(stream, buf, &len));
- SVN_TEST_ASSERT(len == 3);
- buf[3] = '\0';
- SVN_TEST_STRING_ASSERT(buf, "my ");
+ SVN_TEST_ASSERT(len == 4);
+ buf[4] = '\0';
+ SVN_TEST_STRING_ASSERT(buf, " was");
/* Seek from inside of keyword to inside of keyword. */
SVN_ERR(svn_stream_mark(translated_stream, &mark, pool));
- len = 3;
+ len = 9;
+ SVN_ERR(svn_stream_read(translated_stream, buf, &len));
+ SVN_TEST_ASSERT(len == 9);
+ buf[9] = '\0';
+ SVN_TEST_STRING_ASSERT(buf, " expanded");
+ SVN_ERR(svn_stream_seek(translated_stream, mark));
+ len = 9;
SVN_ERR(svn_stream_read(translated_stream, buf, &len));
- SVN_TEST_ASSERT(len == 3);
- buf[3] = '\0';
- SVN_TEST_STRING_ASSERT(buf, "key");
- SVN_ERR(svn_stream_seek(stream, mark));
- len = 3;
- SVN_ERR(svn_stream_read(stream, buf, &len));
- SVN_TEST_ASSERT(len == 3);
- buf[3] = '\0';
- SVN_TEST_STRING_ASSERT(buf, "my ");
+ SVN_TEST_ASSERT(len == 9);
+ buf[9] = '\0';
+ SVN_TEST_STRING_ASSERT(buf, " expanded");
/* Seek from inside of keyword to outside of keyword. */
- len = 22;
+ SVN_ERR(svn_stream_mark(translated_stream, &mark, pool));
+ len = 4;
+ SVN_ERR(svn_stream_read(translated_stream, buf, &len));
+ SVN_TEST_ASSERT(len == 4);
+ buf[4] = '\0';
+ SVN_TEST_STRING_ASSERT(buf, " $Tw");
+ SVN_ERR(svn_stream_seek(translated_stream, mark));
+ len = 4;
+ SVN_ERR(svn_stream_read(translated_stream, buf, &len));
+ SVN_TEST_ASSERT(len == 4);
+ buf[4] = '\0';
+ SVN_TEST_STRING_ASSERT(buf, " $Tw");
+
+ /* Seek from outside of keyword to outside of keyword. */
+ SVN_ERR(svn_stream_mark(translated_stream, &mark, pool));
+ len = 1;
SVN_ERR(svn_stream_read(translated_stream, buf, &len));
- SVN_TEST_ASSERT(len == 22);
- buf[22] = '\0';
- SVN_TEST_STRING_ASSERT(buf, "keyword was expandedTw");
- SVN_ERR(svn_stream_mark(translated_stream, &mark2, pool));
- SVN_ERR(svn_stream_seek(stream, mark));
- len = 3;
- SVN_ERR(svn_stream_read(stream, buf, &len));
- SVN_TEST_ASSERT(len == 3);
- buf[3] = '\0';
- SVN_TEST_STRING_ASSERT(buf, "my ");
- SVN_ERR(svn_stream_seek(stream, mark2));
+ SVN_TEST_ASSERT(len == 1);
+ buf[1] = '\0';
+ SVN_TEST_STRING_ASSERT(buf, "o");
+ SVN_ERR(svn_stream_seek(translated_stream, mark));
len = 1;
- SVN_ERR(svn_stream_read(stream, buf, &len));
+ SVN_ERR(svn_stream_read(translated_stream, buf, &len));
SVN_TEST_ASSERT(len == 1);
buf[1] = '\0';
SVN_TEST_STRING_ASSERT(buf, "o");
@@ -433,7 +434,7 @@ struct svn_test_descriptor_t test_funcs[
"test stream seeking for files"),
SVN_TEST_PASS2(test_stream_seek_stringbuf,
"test stream seeking for stringbufs"),
- SVN_TEST_XFAIL2(test_stream_seek_translated,
- "test stream seeking for translated streams"),
+ SVN_TEST_PASS2(test_stream_seek_translated,
+ "test stream seeking for translated streams"),
SVN_TEST_NULL
};
Modified: subversion/branches/ignore-mergeinfo-log/tools/buildbot/master/Feeder.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/tools/buildbot/master/Feeder.py?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/tools/buildbot/master/Feeder.py (original)
+++ subversion/branches/ignore-mergeinfo-log/tools/buildbot/master/Feeder.py Mon Feb 7 19:18:29 2011
@@ -167,7 +167,7 @@ class FeedResource(XmlResource):
projectName = self.status.getProjectName()
link = re.sub(r'index.html', "", self.status.getURLForThing(build))
- # title: trunk r22191 (plus patch) failed on 'i686-debian-sarge1 shared gcc-3.3.5'
+ # title: trunk r862265 (plus patch) failed on 'i686-debian-sarge1 shared gcc-3.3.5'
ss = build.getSourceStamp()
source = ""
if ss.branch:
Modified: subversion/branches/ignore-mergeinfo-log/tools/client-side/svnmucc/svnmucc-test.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/tools/client-side/svnmucc/svnmucc-test.py?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/tools/client-side/svnmucc/svnmucc-test.py (original)
+++ subversion/branches/ignore-mergeinfo-log/tools/client-side/svnmucc/svnmucc-test.py Mon Feb 7 19:18:29 2011
@@ -294,29 +294,29 @@ def main():
'propsetf', 'testprop', sys.argv[0], 'foo/foo')
# Expected missing revision error
- xrun_svnmucc(['svnmucc: \'a\' is not a revision'
+ xrun_svnmucc(["svnmucc: E200004: 'a' is not a revision"
], #---------
'cp', 'a', 'b')
# Expected cannot be younger error
- xrun_svnmucc(['svnmucc: Copy source revision cannot be younger ' +
+ xrun_svnmucc(['svnmucc: E205000: Copy source revision cannot be younger ' +
'than base revision',
], #---------
'cp', '42', 'a', 'b')
# Expected already exists error
- xrun_svnmucc(["svnmucc: 'foo' already exists",
+ xrun_svnmucc(["svnmucc: E125002: 'foo' already exists",
], #---------
'cp', '17', 'a', 'foo')
# Expected copy_src already exists error
- xrun_svnmucc(["svnmucc: 'a/bar' (from 'foo/bar:17') already exists",
+ xrun_svnmucc(["svnmucc: E125002: 'a/bar' (from 'foo/bar:17') already exists",
], #---------
'cp', '17', 'foo', 'a',
'cp', '17', 'foo/foo', 'a/bar')
# Expected not found error
- xrun_svnmucc(['svnmucc: \'a\' not found',
+ xrun_svnmucc(["svnmucc: E125002: 'a' not found",
], #---------
'cp', '17', 'a', 'b')
Modified: subversion/branches/ignore-mergeinfo-log/tools/client-side/svnmucc/svnmucc.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/tools/client-side/svnmucc/svnmucc.c?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/tools/client-side/svnmucc/svnmucc.c (original)
+++ subversion/branches/ignore-mergeinfo-log/tools/client-side/svnmucc/svnmucc.c Mon Feb 7 19:18:29 2011
@@ -298,10 +298,9 @@ drive(struct operation *operation,
if (apr_err)
return svn_error_wrap_apr(apr_err, "Can't open stdin");
}
- contents = svn_stream_from_aprfile(f, pool);
+ contents = svn_stream_from_aprfile2(f, FALSE, pool);
SVN_ERR(svn_txdelta_send_stream(contents, handler,
handler_baton, NULL, pool));
- SVN_ERR(svn_io_file_close(f, pool));
}
/* If we opened a file, we need to apply outstanding propmods,
then close it. */
@@ -358,7 +357,7 @@ get_operation(const char *path,
return child;
}
-/* Return the portion of URL that is relative to ANCHOR. */
+/* Return the portion of URL that is relative to ANCHOR (URI-decoded). */
static const char *
subtract_anchor(const char *anchor, const char *url, apr_pool_t *pool)
{
@@ -412,7 +411,7 @@ build(action_code_t action,
for (i = 0; i < path_bits->nelts; ++i)
{
const char *path_bit = APR_ARRAY_IDX(path_bits, i, const char *);
- path_so_far = svn_path_join(path_so_far, path_bit, pool);
+ path_so_far = svn_relpath_join(path_so_far, path_bit, pool);
operation = get_operation(path_so_far, operation, pool);
/* If we cross a replace- or add-with-history, remember the
@@ -431,7 +430,7 @@ build(action_code_t action,
}
else if (copy_src)
{
- copy_src = svn_path_join(copy_src, path_bit, pool);
+ copy_src = svn_relpath_join(copy_src, path_bit, pool);
}
}
@@ -631,7 +630,7 @@ execute(const apr_array_header_t *action
SVN_ERR(svn_config_get_config(&config, config_dir, pool));
SVN_ERR(create_ra_callbacks(&ra_callbacks, username, password,
non_interactive, pool));
- SVN_ERR(svn_ra_open3(&session, anchor, NULL, ra_callbacks,
+ SVN_ERR(svn_ra_open4(&session, NULL, anchor, NULL, ra_callbacks,
NULL, config, pool));
SVN_ERR(svn_ra_get_latest_revnum(session, &head, pool));
@@ -733,6 +732,18 @@ read_propvalue_file(const svn_string_t *
return SVN_NO_ERROR;
}
+/* Perform the typical suite of manipulations for user-provided URLs
+ on URL, returning the result (allocated from POOL): IRI-to-URI
+ conversion, auto-escaping, and canonicalization. */
+static const char *
+sanitize_url(const char *url,
+ apr_pool_t *pool)
+{
+ url = svn_path_uri_from_iri(url, pool);
+ url = svn_path_uri_autoescape(url, pool);
+ return svn_uri_canonicalize(url, pool);
+}
+
static void
usage(apr_pool_t *pool, int exit_val)
{
@@ -838,7 +849,7 @@ main(int argc, const char **argv)
svn_stringbuf_t *contents;
err = svn_utf_cstring_to_utf8(&arg_utf8, arg, pool);
if (! err)
- err = svn_stringbuf_from_file(&contents, arg, pool);
+ err = svn_stringbuf_from_file2(&contents, arg, pool);
if (! err)
err = svn_utf_cstring_to_utf8(&message, contents->data, pool);
if (err)
@@ -855,11 +866,11 @@ main(int argc, const char **argv)
err = svn_utf_cstring_to_utf8(&root_url, arg, pool);
if (err)
handle_error(err, pool);
- root_url = svn_path_canonicalize(root_url, pool);
if (! svn_path_is_url(root_url))
handle_error(svn_error_createf(SVN_ERR_INCORRECT_PARAMS, NULL,
"'%s' is not a URL\n", root_url),
pool);
+ root_url = sanitize_url(root_url, pool);
break;
case 'r':
{
@@ -984,10 +995,9 @@ main(int argc, const char **argv)
/* For puts, there should be a local file next. */
if (action->action == ACTION_PUT)
{
- action->path[1] = svn_path_canonicalize(APR_ARRAY_IDX(action_args,
- i,
- const char *),
- pool);
+ action->path[1] =
+ svn_dirent_canonicalize(APR_ARRAY_IDX(action_args, i,
+ const char *), pool);
if (++i == action_args->nelts)
insufficient(pool);
}
@@ -1017,13 +1027,14 @@ main(int argc, const char **argv)
else
{
const char *propval_file =
- svn_path_canonicalize(APR_ARRAY_IDX(action_args, i,
- const char *), pool);
+ svn_dirent_canonicalize(APR_ARRAY_IDX(action_args, i,
+ const char *), pool);
if (++i == action_args->nelts)
insufficient(pool);
- err = read_propvalue_file(&(action->prop_value), propval_file, pool);
+ err = read_propvalue_file(&(action->prop_value),
+ propval_file, pool);
if (err)
handle_error(err, pool);
@@ -1047,26 +1058,32 @@ main(int argc, const char **argv)
{
const char *url = APR_ARRAY_IDX(action_args, i, const char *);
- /* If there's a root URL, we expect this to be a path
- relative to that URL. Otherwise, it should be a full URL. */
- if (root_url)
- url = svn_path_join(root_url, url, pool);
- else if (! svn_path_is_url(url))
- handle_error(svn_error_createf(SVN_ERR_INCORRECT_PARAMS, NULL,
- "'%s' is not a URL\n", url), pool);
- url = svn_path_uri_from_iri(url, pool);
- url = svn_path_uri_autoescape(url, pool);
- url = svn_path_canonicalize(url, pool);
+ /* If there's a ROOT_URL, we expect URL to be a path
+ relative to ROOT_URL (and we build a full url from the
+ combination of the two). Otherwise, it should be a full
+ url. */
+ if (! svn_path_is_url(url))
+ {
+ if (! root_url)
+ handle_error(svn_error_createf(SVN_ERR_INCORRECT_PARAMS, NULL,
+ "'%s' is not a URL, and "
+ "--root-url (-U) not provided\n",
+ url), pool);
+ /* ### These relpaths are already URI-encoded. */
+ url = apr_pstrcat(pool, root_url, "/",
+ svn_relpath_canonicalize(url, pool), NULL);
+ }
+ url = sanitize_url(url, pool);
action->path[j] = url;
/* The cp source could be the anchor, but the other URLs should be
children of the anchor. */
if (! (action->action == ACTION_CP && j == 0))
- url = svn_path_dirname(url, pool);
+ url = svn_uri_dirname(url, pool);
if (! anchor)
anchor = url;
else
- anchor = svn_path_get_longest_ancestor(anchor, url, pool);
+ anchor = svn_uri_get_longest_ancestor(anchor, url, pool);
if ((++i == action_args->nelts) && (j >= num_url_args))
insufficient(pool);
Modified: subversion/branches/ignore-mergeinfo-log/tools/dev/check-license.py
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/tools/dev/check-license.py?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/tools/dev/check-license.py (original)
+++ subversion/branches/ignore-mergeinfo-log/tools/dev/check-license.py Mon Feb 7 19:18:29 2011
@@ -19,7 +19,7 @@
import sys, os, re
# Note: Right now, OLD_LICENSE and NEW_LICENSE are the same, because
-# r38370 updated all the license blocks. In the future, if we update
+# r878444 updated all the license blocks. In the future, if we update
# the license block again, change just NEW_LICENSE and use this script.
OLD_LICENSE = '''\
Modified: subversion/branches/ignore-mergeinfo-log/tools/dev/svnraisetreeconflict/main.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/tools/dev/svnraisetreeconflict/main.c?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/tools/dev/svnraisetreeconflict/main.c (original)
+++ subversion/branches/ignore-mergeinfo-log/tools/dev/svnraisetreeconflict/main.c Mon Feb 7 19:18:29 2011
@@ -200,7 +200,7 @@ raise_tree_conflict(int argc, const char
"Wrong number of arguments");
/* Read the parameters */
- wc_path = svn_path_internal_style(argv[i++], pool);
+ wc_path = svn_dirent_internal_style(argv[i++], pool);
SVN_ERR(read_enum_field(&kind, node_kind_map, argv[i++], pool));
SVN_ERR(read_enum_field(&operation, operation_map, argv[i++], pool));
SVN_ERR(read_enum_field(&action, action_map, argv[i++], pool));
Modified: subversion/branches/ignore-mergeinfo-log/tools/server-side/svn-populate-node-origins-index.c
URL: http://svn.apache.org/viewvc/subversion/branches/ignore-mergeinfo-log/tools/server-side/svn-populate-node-origins-index.c?rev=1068059&r1=1068058&r2=1068059&view=diff
==============================================================================
--- subversion/branches/ignore-mergeinfo-log/tools/server-side/svn-populate-node-origins-index.c (original)
+++ subversion/branches/ignore-mergeinfo-log/tools/server-side/svn-populate-node-origins-index.c Mon Feb 7 19:18:29 2011
@@ -178,8 +178,8 @@ main(int argc, const char **argv)
/* Convert argv[1] into a UTF8, internal-format, canonicalized path. */
if ((err = svn_utf_cstring_to_utf8(&repos_path, argv[1], pool)))
goto cleanup;
- repos_path = svn_path_internal_style(repos_path, pool);
- repos_path = svn_path_canonicalize(repos_path, pool);
+ repos_path = svn_dirent_internal_style(repos_path, pool);
+ repos_path = svn_dirent_canonicalize(repos_path, pool);
if ((err = build_index(repos_path, pool)))
goto cleanup;