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/05 03:17:33 UTC

svn commit: r1067380 [1/3] - in /subversion/trunk/subversion/tests/cmdline: ./ svntest/

Author: hwright
Date: Sat Feb  5 02:17:32 2011
New Revision: 1067380

URL: http://svn.apache.org/viewvc?rev=1067380&view=rev
Log:
Use Python decorators to denote XFail, Skip, SkipUnless and Wimp tests.  Also,
add Issue decorators where appropriate.

* subversion/tests/cmdline/*.py:
  As above.

* subversion/tests/cmdline/svntest/testcase.py
  (XFail): Renamed to _XFail.
  (Wimp): Renamed to _Wimp.
  (Skip): Renamed to _Skip, and propagate the issue list.
  (SkipUnless): Renamed to _SkipUnless.
  (XFail_deco): Add a conditional function argument.
  (Skip_deco): Make the conditional function optional.
  (SkipUnless_deco): Propagate the issue list.

Modified:
    subversion/trunk/subversion/tests/cmdline/authz_tests.py
    subversion/trunk/subversion/tests/cmdline/autoprop_tests.py
    subversion/trunk/subversion/tests/cmdline/basic_tests.py
    subversion/trunk/subversion/tests/cmdline/blame_tests.py
    subversion/trunk/subversion/tests/cmdline/cat_tests.py
    subversion/trunk/subversion/tests/cmdline/changelist_tests.py
    subversion/trunk/subversion/tests/cmdline/checkout_tests.py
    subversion/trunk/subversion/tests/cmdline/commit_tests.py
    subversion/trunk/subversion/tests/cmdline/copy_tests.py
    subversion/trunk/subversion/tests/cmdline/depth_tests.py
    subversion/trunk/subversion/tests/cmdline/diff_tests.py
    subversion/trunk/subversion/tests/cmdline/export_tests.py
    subversion/trunk/subversion/tests/cmdline/externals_tests.py
    subversion/trunk/subversion/tests/cmdline/history_tests.py
    subversion/trunk/subversion/tests/cmdline/import_tests.py
    subversion/trunk/subversion/tests/cmdline/info_tests.py
    subversion/trunk/subversion/tests/cmdline/input_validation_tests.py
    subversion/trunk/subversion/tests/cmdline/lock_tests.py
    subversion/trunk/subversion/tests/cmdline/log_tests.py
    subversion/trunk/subversion/tests/cmdline/merge_authz_tests.py
    subversion/trunk/subversion/tests/cmdline/merge_reintegrate_tests.py
    subversion/trunk/subversion/tests/cmdline/merge_tests.py
    subversion/trunk/subversion/tests/cmdline/merge_tree_conflict_tests.py
    subversion/trunk/subversion/tests/cmdline/mergeinfo_tests.py
    subversion/trunk/subversion/tests/cmdline/obliterate_tests.py
    subversion/trunk/subversion/tests/cmdline/patch_tests.py
    subversion/trunk/subversion/tests/cmdline/prop_tests.py
    subversion/trunk/subversion/tests/cmdline/redirect_tests.py
    subversion/trunk/subversion/tests/cmdline/resolve_tests.py
    subversion/trunk/subversion/tests/cmdline/resolved_tests.py
    subversion/trunk/subversion/tests/cmdline/revert_tests.py
    subversion/trunk/subversion/tests/cmdline/schedule_tests.py
    subversion/trunk/subversion/tests/cmdline/special_tests.py
    subversion/trunk/subversion/tests/cmdline/stat_tests.py
    subversion/trunk/subversion/tests/cmdline/svnadmin_tests.py
    subversion/trunk/subversion/tests/cmdline/svndumpfilter_tests.py
    subversion/trunk/subversion/tests/cmdline/svnlook_tests.py
    subversion/trunk/subversion/tests/cmdline/svnrdump_tests.py
    subversion/trunk/subversion/tests/cmdline/svnsync_tests.py
    subversion/trunk/subversion/tests/cmdline/svntest/testcase.py
    subversion/trunk/subversion/tests/cmdline/svnversion_tests.py
    subversion/trunk/subversion/tests/cmdline/switch_tests.py
    subversion/trunk/subversion/tests/cmdline/trans_tests.py
    subversion/trunk/subversion/tests/cmdline/tree_conflict_tests.py
    subversion/trunk/subversion/tests/cmdline/update_tests.py
    subversion/trunk/subversion/tests/cmdline/upgrade_tests.py
    subversion/trunk/subversion/tests/cmdline/utf8_tests.py

Modified: subversion/trunk/subversion/tests/cmdline/authz_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/authz_tests.py?rev=1067380&r1=1067379&r2=1067380&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/authz_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/authz_tests.py Sat Feb  5 02:17:32 2011
@@ -36,10 +36,12 @@ from svntest.main import server_authz_ha
 
 # (abbreviation)
 Item = svntest.wc.StateItem
-XFail = svntest.testcase.XFail
-Wimp = svntest.testcase.Wimp
-Skip = svntest.testcase.Skip
-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
 
 ######################################################################
 # Tests
@@ -50,7 +52,8 @@ SkipUnless = svntest.testcase.SkipUnless
 #----------------------------------------------------------------------
 
 # regression test for issue #2486 - part 1: open_root
-
+@Issue(2486)
+@Skip(svntest.main.is_ra_type_file)
 def authz_open_root(sbox):
   "authz issue #2486 - open root"
 
@@ -82,7 +85,8 @@ def authz_open_root(sbox):
 #----------------------------------------------------------------------
 
 # regression test for issue #2486 - part 2: open_directory
-
+@Issue(2486)
+@Skip(svntest.main.is_ra_type_file)
 def authz_open_directory(sbox):
   "authz issue #2486 - open directory"
 
@@ -115,6 +119,7 @@ def authz_open_directory(sbox):
                                         None,
                                         wc_dir)
 
+@Skip(svntest.main.is_ra_type_file)
 def broken_authz_file(sbox):
   "broken authz files cause errors"
 
@@ -136,6 +141,7 @@ def broken_authz_file(sbox):
     raise svntest.verify.SVNUnexpectedStderr("Missing stderr")
 
 # test whether read access is correctly granted and denied
+@Skip(svntest.main.is_ra_type_file)
 def authz_read_access(sbox):
   "test authz for read operations"
 
@@ -273,6 +279,7 @@ def authz_read_access(sbox):
 
 
 # test whether write access is correctly granted and denied
+@Skip(svntest.main.is_ra_type_file)
 def authz_write_access(sbox):
   "test authz for write operations"
 
@@ -364,6 +371,7 @@ def authz_write_access(sbox):
 
 #----------------------------------------------------------------------
 
+@Skip(svntest.main.is_ra_type_file)
 def authz_checkout_test(sbox):
   "test authz for checkout"
 
@@ -402,6 +410,7 @@ def authz_checkout_test(sbox):
                           expected_output,
                           expected_wc)
 
+@Skip(svntest.main.is_ra_type_file)
 def authz_checkout_and_update_test(sbox):
   "test authz for checkout and update"
 
@@ -465,6 +474,7 @@ def authz_checkout_and_update_test(sbox)
                                         None, None,
                                         None, None, 1)
 
+@Skip(svntest.main.is_ra_type_file)
 def authz_partial_export_test(sbox):
   "test authz for export with unreadable subfolder"
 
@@ -500,6 +510,7 @@ def authz_partial_export_test(sbox):
 
 #----------------------------------------------------------------------
 
+@Skip(svntest.main.is_ra_type_file)
 def authz_log_and_tracing_test(sbox):
   "test authz for log and tracing path changes"
 
@@ -619,6 +630,8 @@ def authz_log_and_tracing_test(sbox):
                                      'diff', '-r', '2:4', D_url+'/rho')
 
 # test whether read access is correctly granted and denied
+@SkipUnless(server_authz_has_aliases)
+@Skip(svntest.main.is_ra_type_file)
 def authz_aliases(sbox):
   "test authz for aliases"
 
@@ -655,6 +668,8 @@ def authz_aliases(sbox):
                                      '-m', 'logmsg',
                                      iota_url, B_url)
 
+@Skip(svntest.main.is_ra_type_file)
+@Issue(2486)
 def authz_validate(sbox):
   "test the authz validation rules"
 
@@ -721,6 +736,8 @@ users = @devs1, @devs2, user1, user2""" 
                                      A_url)
 
 # test locking/unlocking with authz
+@Skip(svntest.main.is_ra_type_file)
+@Issue(2700)
 def authz_locking(sbox):
   "test authz for locking"
 
@@ -780,6 +797,9 @@ def authz_locking(sbox):
 # test for issue #2712: if anon-access == read, svnserve should also check
 # authz to determine whether a checkout/update is actually allowed for
 # anonymous users, and, if not, attempt authentication.
+@XFail()
+@Issue(2712)
+@SkipUnless(svntest.main.is_ra_type_svn)
 def authz_svnserve_anon_access_read(sbox):
   "authz issue #2712"
 
@@ -842,6 +862,8 @@ def authz_svnserve_anon_access_read(sbox
                                      'merge', '-c', '2',
                                      B_url, B_path)
 
+@XFail()
+@Skip(svntest.main.is_ra_type_file)
 def authz_switch_to_directory(sbox):
   "switched to directory, no read access on parents"
 
@@ -862,6 +884,8 @@ def authz_switch_to_directory(sbox):
 # Test to reproduce the problem identified by Issue 3242 in which
 # Subversion's authz, as of Subversion 1.5, requires access to the
 # repository root for copy and move operations.
+@Skip(svntest.main.is_ra_type_file)
+@Issue(3242)
 def authz_access_required_at_repo_root(sbox):
   "authz issue #3242 - access required at repo root"
 
@@ -903,6 +927,8 @@ def authz_access_required_at_repo_root(s
                        root_url + '/A-copy/B/E/beta',
                        root_url + '/A-copy/C')
 
+@Skip(svntest.main.is_ra_type_file)
+@Issue(3242)
 def authz_access_required_at_repo_root2(sbox):
   "more authz issue #3242 - update to renamed file"
 
@@ -940,6 +966,7 @@ def authz_access_required_at_repo_root2(
   svntest.main.run_svn(None, 'co', '-r', '1', root_url + '/A/D', wc_dir)
   svntest.main.run_svn(None, 'up', wc_dir)
 
+@Skip(svntest.main.is_ra_type_file)
 def multiple_matches(sbox):
   "multiple lines matching a user"
 
@@ -973,6 +1000,7 @@ def multiple_matches(sbox):
                        '-m', 'second copy',
                        root_url, root_url + '/second')
 
+@Skip(svntest.main.is_ra_type_file)
 def wc_wc_copy(sbox):
   "wc-to-wc copy with absent nodes"
 
@@ -1014,6 +1042,7 @@ def wc_wc_copy(sbox):
   svntest.actions.run_and_verify_svn(None, expected_output, [],
                                      'st', '--verbose', sbox.ospath('A2'))
 
+@Skip(svntest.main.is_ra_type_file)
 def wc_wc_copy_revert(sbox):
   "wc-to-wc-copy with absent nodes and then revert"
 
@@ -1026,6 +1055,7 @@ def wc_wc_copy_revert(sbox):
   expected_status.remove('A/B/E', 'A/B/E/alpha', 'A/B/E/beta')
   svntest.actions.run_and_verify_status(sbox.wc_dir, expected_status)
 
+@Skip(svntest.main.is_ra_type_file)
 def authz_recursive_ls(sbox):
   "recursive ls with private subtrees"
 
@@ -1065,33 +1095,26 @@ def authz_recursive_ls(sbox):
 
 # list all tests here, starting with None:
 test_list = [ None,
-              Skip(authz_open_root, svntest.main.is_ra_type_file),
-              Skip(authz_open_directory, svntest.main.is_ra_type_file),
-              Skip(broken_authz_file, svntest.main.is_ra_type_file),
-              Skip(authz_read_access, svntest.main.is_ra_type_file),
-              Skip(authz_write_access, svntest.main.is_ra_type_file),
-              Skip(authz_checkout_test, svntest.main.is_ra_type_file),
-              Skip(authz_log_and_tracing_test, svntest.main.is_ra_type_file),
-              Skip(authz_checkout_and_update_test,
-                   svntest.main.is_ra_type_file),
-              Skip(authz_partial_export_test, svntest.main.is_ra_type_file),
-              SkipUnless(Skip(authz_aliases, svntest.main.is_ra_type_file),
-                         server_authz_has_aliases),
-              Skip(authz_validate, svntest.main.is_ra_type_file),
-              Skip(authz_locking, svntest.main.is_ra_type_file),
-              XFail(SkipUnless(authz_svnserve_anon_access_read,
-                               svntest.main.is_ra_type_svn), issues=2712),
-              XFail(Skip(authz_switch_to_directory,
-                         svntest.main.is_ra_type_file)),
-              Skip(authz_access_required_at_repo_root,
-                   svntest.main.is_ra_type_file),
-              Skip(authz_access_required_at_repo_root2,
-                   svntest.main.is_ra_type_file),
-              Skip(multiple_matches, svntest.main.is_ra_type_file),
-              Skip(wc_wc_copy, svntest.main.is_ra_type_file),
-              Skip(wc_wc_copy_revert, svntest.main.is_ra_type_file),
-              Skip(authz_recursive_ls,
-                   svntest.main.is_ra_type_file),
+              authz_open_root,
+              authz_open_directory,
+              broken_authz_file,
+              authz_read_access,
+              authz_write_access,
+              authz_checkout_test,
+              authz_log_and_tracing_test,
+              authz_checkout_and_update_test,
+              authz_partial_export_test,
+              authz_aliases,
+              authz_validate,
+              authz_locking,
+              authz_svnserve_anon_access_read,
+              authz_switch_to_directory,
+              authz_access_required_at_repo_root,
+              authz_access_required_at_repo_root2,
+              multiple_matches,
+              wc_wc_copy,
+              wc_wc_copy_revert,
+              authz_recursive_ls,
              ]
 serial_only = True
 

Modified: subversion/trunk/subversion/tests/cmdline/autoprop_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/autoprop_tests.py?rev=1067380&r1=1067379&r2=1067380&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/autoprop_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/autoprop_tests.py Sat Feb  5 02:17:32 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
 
 
@@ -291,6 +295,7 @@ def autoprops_imp_dir(sbox):
 # Issue #2713: adding a file with an svn:eol-style property, svn should abort
 # if the file has mixed EOL style. Previously, svn aborted but had added the
 # file anyway.
+@Issue(2713)
 def fail_add_mixed_eol_style(sbox):
   "fail to add a file with mixed EOL style"
 

Modified: subversion/trunk/subversion/tests/cmdline/basic_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/basic_tests.py?rev=1067380&r1=1067379&r2=1067380&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/basic_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/basic_tests.py Sat Feb  5 02:17:32 2011
@@ -1968,7 +1968,7 @@ def basic_rm_urls_one_repo(sbox):
                                         expected_status)
 
 # Test for issue #1199
-@XFail
+@XFail()
 @Issue(1199)
 def basic_rm_urls_multi_repos(sbox):
   "remotely remove directories from two repositories"

Modified: subversion/trunk/subversion/tests/cmdline/blame_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/blame_tests.py?rev=1067380&r1=1067379&r2=1067380&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/blame_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/blame_tests.py Sat Feb  5 02:17:32 2011
@@ -32,9 +32,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
 
 # Helper function to validate the output of a particular run of blame.
@@ -147,6 +150,7 @@ def blame_binary(sbox):
 # (change needed if the desired behavior is to
 #  run blame recursively on all the files in it)
 #
+@Issue(2154)
 def blame_directory(sbox):
   "annotating a directory not allowed"
 
@@ -454,6 +458,7 @@ def blame_ignore_eolstyle(sbox):
     'blame', '-x', '--ignore-eol-style', file_path)
 
 
+@SkipUnless(server_has_mergeinfo)
 def blame_merge_info(sbox):
   "test 'svn blame -g'"
 
@@ -521,6 +526,7 @@ def blame_merge_info(sbox):
   parse_and_verify_blame(output, expected_blame, 1)
 
 
+@SkipUnless(server_has_mergeinfo)
 def blame_merge_out_of_range(sbox):
   "don't look for merged files out of range"
 
@@ -549,6 +555,7 @@ def blame_merge_out_of_range(sbox):
   parse_and_verify_blame(output, expected_blame, 1)
 
 # test for issue #2888: 'svn blame' aborts over ra_serf
+@Issue(2888)
 def blame_peg_rev_file_not_in_head(sbox):
   "blame target not in HEAD with peg-revisions"
 
@@ -719,8 +726,8 @@ test_list = [ None,
               blame_eol_styles,
               blame_ignore_whitespace,
               blame_ignore_eolstyle,
-              SkipUnless(blame_merge_info, server_has_mergeinfo),
-              SkipUnless(blame_merge_out_of_range, server_has_mergeinfo),
+              blame_merge_info,
+              blame_merge_out_of_range,
               blame_peg_rev_file_not_in_head,
               blame_file_not_in_head,
               blame_output_after_merge,

Modified: subversion/trunk/subversion/tests/cmdline/cat_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/cat_tests.py?rev=1067380&r1=1067379&r2=1067380&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/cat_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/cat_tests.py Sat Feb  5 02:17:32 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
 
 
@@ -148,6 +152,7 @@ def cat_skip_uncattable(sbox):
 
 # Test for issue #3560 'svn_wc_status3() returns incorrect status for
 # unversioned files'.
+@Issue(3560)
 def cat_unversioned_file(sbox):
   "cat an unversioned file parent dir thinks exists"
   sbox.build()

Modified: subversion/trunk/subversion/tests/cmdline/changelist_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/changelist_tests.py?rev=1067380&r1=1067379&r2=1067380&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/changelist_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/changelist_tests.py Sat Feb  5 02:17:32 2011
@@ -31,9 +31,12 @@ import string, sys, os, re
 import svntest
 
 # (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
 
 

Modified: subversion/trunk/subversion/tests/cmdline/checkout_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/checkout_tests.py?rev=1067380&r1=1067379&r2=1067380&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/checkout_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/checkout_tests.py Sat Feb  5 02:17:32 2011
@@ -33,8 +33,12 @@ import svntest
 from svntest import wc, actions
 
 # (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 = wc.StateItem
 
 #----------------------------------------------------------------------
@@ -557,6 +561,7 @@ def import_and_checkout(sbox):
 
 #----------------------------------------------------------------------
 # Issue #2529.
+@Issue(2529)
 def checkout_broken_eol(sbox):
   "checkout file with broken eol style"
 
@@ -630,6 +635,7 @@ def checkout_peg_rev(sbox):
 
 #----------------------------------------------------------------------
 # Issue 2602: Test that peg revision dates are correctly supported.
+@Issue(2602)
 def checkout_peg_rev_date(sbox):
   "checkout with peg revision date"
 

Modified: subversion/trunk/subversion/tests/cmdline/commit_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/commit_tests.py?rev=1067380&r1=1067379&r2=1067380&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/commit_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/commit_tests.py Sat Feb  5 02:17:32 2011
@@ -32,9 +32,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
 
 from svntest.main import server_has_revprop_commit, \
@@ -1174,6 +1177,7 @@ def commit_rmd_and_deleted_file(sbox):
 #----------------------------------------------------------------------
 
 # Issue #644 which failed over ra_neon.
+@Issue(644)
 def commit_add_file_twice(sbox):
   "issue 644 attempt to add a file twice"
 
@@ -1373,7 +1377,8 @@ def failed_commit(sbox):
 # Also related to issue #959, this test here doesn't use svn:externals
 # but the behaviour needs to be considered.
 # In this test two WCs are nested, one WC is child of the other.
-
+@XFail()
+@Issue(2381)
 def commit_multiple_wc_nested(sbox):
   "commit from two nested working copies"
 
@@ -1415,6 +1420,8 @@ def commit_multiple_wc_nested(sbox):
   svntest.actions.run_and_verify_status(wc2_dir, expected_status2)
 
 # Same as commit_multiple_wc_nested except that the two WCs are not nested.
+@XFail()
+@Issue(2381)
 def commit_multiple_wc(sbox):
   "commit from two working copies"
 
@@ -1466,6 +1473,7 @@ def commit_multiple_wc(sbox):
 # Same as commit_multiple_wc except that the two WCs come
 # from different repositories. Commits to multiple repositories
 # are outside the scope of issue #2381.
+@Issue(2381)
 def commit_multiple_wc_multiple_repos(sbox):
   "committing two WCs from different repos fails"
 
@@ -1521,9 +1529,9 @@ def commit_multiple_wc_multiple_repos(sb
   svntest.actions.run_and_verify_status(wc2_dir, expected_status2)
 
 #----------------------------------------------------------------------
-
+@Issues([1195,1239])
 def commit_nonrecursive(sbox):
-  "commit named targets with -N (issues #1195, #1239)"
+  "commit named targets with -N"
 
   sbox.build()
   wc_dir = sbox.wc_dir
@@ -1982,7 +1990,8 @@ def mods_in_schedule_delete(sbox):
 
 
 #----------------------------------------------------------------------
-
+@Skip(is_non_posix_os_or_cygwin_platform)
+@Issue(1954)
 def tab_test(sbox):
   "tabs in paths"
   # For issue #1954.
@@ -2033,7 +2042,7 @@ def tab_test(sbox):
   match_bad_tab_path(tab_dir, errlines)
 
 #----------------------------------------------------------------------
-
+@Issue(2285)
 def local_mods_are_not_commits(sbox):
   "local ops should not be treated like commits"
 
@@ -2084,7 +2093,7 @@ def local_mods_are_not_commits(sbox):
 #----------------------------------------------------------------------
 # Test if the post-commit error message is returned back to the svn
 # client and is displayed as a warning.
-#
+@Issue(3553)
 def post_commit_hook_test(sbox):
   "post commit hook failure case testing"
 
@@ -2153,6 +2162,7 @@ def commit_same_folder_in_targets(sbox):
 # test for issue 2459: verify that commit fails when a file with mixed
 # eol-styles is included, and show an error message which includes the
 # filename.
+@Issue(2459)
 def commit_inconsistent_eol(sbox):
   "commit files with inconsistent eol should fail"
 
@@ -2176,6 +2186,7 @@ def commit_inconsistent_eol(sbox):
                                      wc_dir)
 
 
+@SkipUnless(server_has_revprop_commit)
 def mkdir_with_revprop(sbox):
   "set revision props during remote mkdir"
 
@@ -2195,6 +2206,7 @@ def mkdir_with_revprop(sbox):
                                      '--revprop', '-r', 2, sbox.repo_url)
 
 
+@SkipUnless(server_has_revprop_commit)
 def delete_with_revprop(sbox):
   "set revision props during remote delete"
 
@@ -2216,6 +2228,7 @@ def delete_with_revprop(sbox):
                                      '--revprop', '-r', 3, sbox.repo_url)
 
 
+@SkipUnless(server_has_revprop_commit)
 def commit_with_revprop(sbox):
   "set revision props during commit"
 
@@ -2251,6 +2264,7 @@ def commit_with_revprop(sbox):
                                      '--revprop', '-r', 2, sbox.repo_url)
 
 
+@SkipUnless(server_has_revprop_commit)
 def import_with_revprop(sbox):
   "set revision props during import"
 
@@ -2274,6 +2288,7 @@ def import_with_revprop(sbox):
                                      '--revprop', '-r', 2, sbox.repo_url)
 
 
+@SkipUnless(server_has_revprop_commit)
 def copy_R2R_with_revprop(sbox):
   "set revision props during repos-to-repos copy"
 
@@ -2297,6 +2312,7 @@ def copy_R2R_with_revprop(sbox):
                                      '--revprop', '-r', 3, sbox.repo_url)
 
 
+@SkipUnless(server_has_revprop_commit)
 def copy_WC2R_with_revprop(sbox):
   "set revision props during wc-to-repos copy"
 
@@ -2320,6 +2336,7 @@ def copy_WC2R_with_revprop(sbox):
                                      '--revprop', '-r', 2, sbox.repo_url)
 
 
+@SkipUnless(server_has_revprop_commit)
 def move_R2R_with_revprop(sbox):
   "set revision props during repos-to-repos move"
 
@@ -2343,6 +2360,7 @@ def move_R2R_with_revprop(sbox):
                                      '--revprop', '-r', 3, sbox.repo_url)
 
 
+@SkipUnless(server_has_revprop_commit)
 def propedit_with_revprop(sbox):
   "set revision props during remote property edit"
 
@@ -2363,6 +2381,7 @@ def propedit_with_revprop(sbox):
                                      '--revprop', '-r', 2, sbox.repo_url)
 
 
+@SkipUnless(server_has_revprop_commit)
 def set_multiple_props_with_revprop(sbox):
   "set multiple revision props during remote mkdir"
 
@@ -2385,6 +2404,7 @@ def set_multiple_props_with_revprop(sbox
                                      '--revprop', '-r', 2, sbox.repo_url)
 
 
+@SkipUnless(server_has_revprop_commit)
 def use_empty_value_in_revprop_pair(sbox):
   "set revprop without value ('') during remote mkdir"
 
@@ -2407,6 +2427,7 @@ def use_empty_value_in_revprop_pair(sbox
                                      '--revprop', '-r', 2, sbox.repo_url)
 
 
+@SkipUnless(server_has_revprop_commit)
 def no_equals_in_revprop_pair(sbox):
   "set revprop without '=' during remote mkdir"
 
@@ -2428,6 +2449,7 @@ def no_equals_in_revprop_pair(sbox):
                                      '--revprop', '-r', 2, sbox.repo_url)
 
 
+@SkipUnless(server_has_revprop_commit)
 def set_invalid_revprops(sbox):
   "set invalid revision props during remote mkdir"
 
@@ -2453,7 +2475,7 @@ def set_invalid_revprops(sbox):
                                      remote_dir)
 
 #----------------------------------------------------------------------
-
+@Issue(3553)
 def start_commit_hook_test(sbox):
   "start-commit hook failure case testing"
 
@@ -2493,7 +2515,7 @@ def start_commit_hook_test(sbox):
                                            expected_stderr, actual_stderr)
 
 #----------------------------------------------------------------------
-
+@Issue(3553)
 def pre_commit_hook_test(sbox):
   "pre-commit hook failure case testing"
 
@@ -2637,6 +2659,8 @@ def commit_out_of_date_file(sbox):
                                      'commit', '-m', 'log message',
                                      wc_backup)
 
+@SkipUnless(server_gets_client_capabilities)
+@Issue(2991)
 def start_commit_detect_capabilities(sbox):
   "start-commit hook sees client capabilities"  # Issue #2991
   sbox.build()
@@ -2687,6 +2711,7 @@ def commit_url(sbox):
                                         url)
 
 # Test for issue #3198
+@Issue(3198)
 def commit_added_missing(sbox):
   "commit a missing to-be-added file should fail"
 
@@ -2803,8 +2828,8 @@ test_list = [ None,
               commit_from_long_dir,
               commit_with_lock,
               commit_current_dir,
-              XFail(commit_multiple_wc_nested, issues=2381),
-              XFail(commit_multiple_wc, issues=2381),
+              commit_multiple_wc_nested,
+              commit_multiple_wc,
               commit_multiple_wc_multiple_repos,
               commit_nonrecursive,
               failed_commit,
@@ -2814,32 +2839,29 @@ test_list = [ None,
               commit_with_mixed_line_endings_in_ignored_part,
               from_wc_top_with_bad_editor,
               mods_in_schedule_delete,
-              Skip(tab_test, is_non_posix_os_or_cygwin_platform),
+              tab_test,
               local_mods_are_not_commits,
               post_commit_hook_test,
               commit_same_folder_in_targets,
               commit_inconsistent_eol,
-              SkipUnless(mkdir_with_revprop, server_has_revprop_commit),
-              SkipUnless(delete_with_revprop, server_has_revprop_commit),
-              SkipUnless(commit_with_revprop, server_has_revprop_commit),
-              SkipUnless(import_with_revprop, server_has_revprop_commit),
-              SkipUnless(copy_R2R_with_revprop, server_has_revprop_commit),
-              SkipUnless(copy_WC2R_with_revprop, server_has_revprop_commit),
-              SkipUnless(move_R2R_with_revprop, server_has_revprop_commit),
-              SkipUnless(propedit_with_revprop, server_has_revprop_commit),
-              SkipUnless(set_multiple_props_with_revprop,
-                         server_has_revprop_commit),
-              SkipUnless(use_empty_value_in_revprop_pair,
-                         server_has_revprop_commit),
-              SkipUnless(no_equals_in_revprop_pair, server_has_revprop_commit),
-              SkipUnless(set_invalid_revprops, server_has_revprop_commit),
+              mkdir_with_revprop,
+              delete_with_revprop,
+              commit_with_revprop,
+              import_with_revprop,
+              copy_R2R_with_revprop,
+              copy_WC2R_with_revprop,
+              move_R2R_with_revprop,
+              propedit_with_revprop,
+              set_multiple_props_with_revprop,
+              use_empty_value_in_revprop_pair,
+              no_equals_in_revprop_pair,
+              set_invalid_revprops,
               start_commit_hook_test,
               pre_commit_hook_test,
               versioned_log_message,
               changelist_near_conflict,
               commit_out_of_date_file,
-              SkipUnless(start_commit_detect_capabilities,
-                         server_gets_client_capabilities),
+              start_commit_detect_capabilities,
               commit_url,
               commit_added_missing,
               tree_conflicts_block_commit,

Modified: subversion/trunk/subversion/tests/cmdline/copy_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/copy_tests.py?rev=1067380&r1=1067379&r2=1067380&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/copy_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/copy_tests.py Sat Feb  5 02:17:32 2011
@@ -33,10 +33,12 @@ from svntest import main
 from svntest.main import SVN_PROP_MERGEINFO
 
 # (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
 
@@ -253,7 +255,7 @@ def copy_replace_with_props(sbox, wc_cop
 
 
 #----------------------------------------------------------------------
-
+@Issue(1091)
 def basic_copy_and_move_files(sbox):
   "basic copy and move commands -- on files only"
 
@@ -433,7 +435,7 @@ def receive_copy_in_update(sbox):
 # entry for G.  The entry-merge wasn't overwriting the 'deleted'
 # attribute, and thus the newly-added G was ending up disconnected
 # from D.)
-
+@Issue(683)
 def resurrect_deleted_dir(sbox):
   "resurrect a deleted directory"
 
@@ -559,7 +561,7 @@ def no_copy_overwrites(sbox):
 #----------------------------------------------------------------------
 
 # Issue 845. WC -> WC copy should not overwrite base text-base
-
+@Issue(845)
 def no_wc_copy_overwrites(sbox):
   "svn cp PATH PATH cannot overwrite destination"
 
@@ -590,6 +592,7 @@ def no_wc_copy_overwrites(sbox):
 
 # Takes out working-copy locks for A/B2 and child A/B2/E. At one stage
 # during issue 749 the second lock cause an already-locked error.
+@Issue(749)
 def copy_modify_commit(sbox):
   "copy a tree and modify before commit"
 
@@ -619,7 +622,7 @@ def copy_modify_commit(sbox):
 
 # Issue 591, at one point copying a file from URL to WC didn't copy
 # properties.
-
+@Issue(591)
 def copy_files_with_properties(sbox):
   "copy files with properties"
 
@@ -691,6 +694,7 @@ def copy_files_with_properties(sbox):
 #----------------------------------------------------------------------
 
 # Issue 918
+@Issue(918)
 def copy_delete_commit(sbox):
   "copy a tree and delete part of it before commit"
 
@@ -743,6 +747,7 @@ def copy_delete_commit(sbox):
 
 
 #----------------------------------------------------------------------
+@Issues([931,932])
 def mv_and_revert_directory(sbox):
   "move and revert a directory"
 
@@ -774,6 +779,8 @@ def mv_and_revert_directory(sbox):
 #----------------------------------------------------------------------
 # Issue 982.  When copying a file with the executable bit set, the copied
 # file should also have its executable bit set.
+@Issue(982)
+@SkipUnless(svntest.main.is_posix_os)
 def copy_preserve_executable_bit(sbox):
   "executable bit should be preserved when copying"
 
@@ -819,6 +826,7 @@ def copy_preserve_executable_bit(sbox):
 
 #----------------------------------------------------------------------
 # Issue 1029, copy failed with a "working copy not locked" error
+@Issue(1029)
 def wc_to_repos(sbox):
   "working-copy to repository copy"
 
@@ -890,7 +898,7 @@ def wc_to_repos(sbox):
 #----------------------------------------------------------------------
 # Issue 1090: various use-cases of 'svn cp URL wc' where the
 # repositories might be different, or be the same repository.
-
+@Issues([1090,1444])
 def repos_to_wc(sbox):
   "repository to working-copy copy"
 
@@ -1016,7 +1024,7 @@ def repos_to_wc(sbox):
 
 #----------------------------------------------------------------------
 # Issue 1084: ra_svn move/copy bug
-
+@Issue(1084)
 def copy_to_root(sbox):
   'copy item to root of repository'
 
@@ -1053,6 +1061,7 @@ def copy_to_root(sbox):
                                         expected_status)
 
 #----------------------------------------------------------------------
+@Issue(1367)
 def url_copy_parent_into_child(sbox):
   "copy URL URL/subdir"
 
@@ -1102,6 +1111,7 @@ def url_copy_parent_into_child(sbox):
                                         expected_status)
 
 #----------------------------------------------------------------------
+@Issue(1367)
 def wc_copy_parent_into_child(sbox):
   "copy WC URL/subdir"
 
@@ -1176,7 +1186,7 @@ def wc_copy_parent_into_child(sbox):
 # Issue 1419: at one point ra_neon->get_uuid() was failing on a
 # non-existent public URL, which prevented us from resurrecting files
 # (svn cp -rOLD URL wc).
-
+@Issue(1419)
 def resurrect_deleted_file(sbox):
   "resurrect a deleted file"
 
@@ -1215,7 +1225,7 @@ def resurrect_deleted_file(sbox):
 # Regression tests for Issue #1297:
 # svn diff failed after a repository to WC copy of a single file
 # This test checks just that.
-
+@Issue(1297)
 def diff_repos_to_wc_copy(sbox):
   "copy file from repos to working copy and run diff"
 
@@ -1234,7 +1244,7 @@ def diff_repos_to_wc_copy(sbox):
 
 
 #-------------------------------------------------------------
-
+@Issue(1473)
 def repos_to_wc_copy_eol_keywords(sbox):
   "repos->WC copy with keyword or eol property set"
 
@@ -1360,7 +1370,7 @@ def revision_kinds_local_source(sbox):
 
 #-------------------------------------------------------------
 # Regression test for issue 1581.
-
+@Issue(1581)
 def copy_over_missing_file(sbox):
   "copy over a missing file"
   sbox.build(read_only = True)
@@ -1393,7 +1403,7 @@ def copy_over_missing_file(sbox):
 
 #----------------------------------------------------------------------
 #  Regression test for issue 1634
-
+@Issue(1634)
 def repos_to_wc_1634(sbox):
   "copy a deleted directory back from the repos"
 
@@ -1435,7 +1445,7 @@ def repos_to_wc_1634(sbox):
 
 #----------------------------------------------------------------------
 #  Regression test for issue 1814
-
+@Issue(1814)
 def double_uri_escaping_1814(sbox):
   "check for double URI escaping in svn ls -R"
 
@@ -1471,7 +1481,7 @@ def double_uri_escaping_1814(sbox):
 
 #----------------------------------------------------------------------
 #  Regression test for issues 2404
-
+@Issue(2404)
 def wc_to_wc_copy_between_different_repos(sbox):
   "wc to wc copy attempts between different repos"
 
@@ -1494,7 +1504,8 @@ def wc_to_wc_copy_between_different_repo
 
 #----------------------------------------------------------------------
 #  Regression test for issues 2101, 2020 and 3776
-
+@XFail()
+@Issues([2101,2020,3776])
 def wc_to_wc_copy_deleted(sbox):
   "wc to wc copy with deleted=true items"
 
@@ -1704,6 +1715,7 @@ def old_dir_url_to_url(sbox):
 #----------------------------------------------------------------------
 # Test fix for issue 2224 - copying wc dir to itself causes endless
 # recursion
+@Issue(2224)
 def wc_copy_dir_to_itself(sbox):
   "copy wc dir to itself"
 
@@ -1721,7 +1733,7 @@ def wc_copy_dir_to_itself(sbox):
 
 
 #----------------------------------------------------------------------
-
+@Issue(2153)
 def mixed_wc_to_url(sbox):
   "copy a complex mixed-rev wc"
 
@@ -1822,7 +1834,7 @@ def mixed_wc_to_url(sbox):
 
 # Issue 845 and 1516: WC replacement of files requires
 # a second text-base and prop-base
-
+@Issues([845,1516])
 def wc_copy_replacement(sbox):
   "svn cp PATH PATH replace file"
 
@@ -1877,6 +1889,7 @@ def delete_replaced_file(sbox):
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
 
+@Issue(2436)
 def mv_unversioned_file(sbox):
   "move an unversioned file"
   # Issue #2436: Attempting to move an unversioned file would seg fault.
@@ -1902,6 +1915,7 @@ def mv_unversioned_file(sbox):
                                      'mv',
                                      unver_path_2, dest_path_2)
 
+@Issue(2435)
 def force_move(sbox):
   "'move' should not lose local mods"
   # Issue #2435: 'svn move' / 'svn mv' can lose local modifications.
@@ -2413,6 +2427,7 @@ def move_dir_out_of_moved_dir(sbox):
 
 # Includes regression testing for issue #3429 ("svn mv A B; svn mv B A"
 # generates replace without history).
+@Issue(3429)
 def move_file_back_and_forth(sbox):
   "move a moved file back to original location"
 
@@ -2452,6 +2467,7 @@ def move_file_back_and_forth(sbox):
 
 # Includes regression testing for issue #3429 ("svn mv A B; svn mv B A"
 # generates replace without history).
+@Issue(3429)
 def move_dir_back_and_forth(sbox):
   "move a moved dir back to original location"
 
@@ -2865,6 +2881,7 @@ def copy_added_paths_to_URL(sbox):
 
 
 # Issue #1869.
+@Issue(1869)
 def move_to_relative_paths(sbox):
   "move file using relative dst path names"
 
@@ -3179,7 +3196,7 @@ def copy_multiple_repo(sbox):
 #----------------------------------------------------------------------
 
 # Test moving copying multiple files from a repo to a wc
-
+@Issue(2955)
 def copy_multiple_repo_wc(sbox):
   "copy multiple files from a repo to a wc"
 
@@ -3287,6 +3304,7 @@ def copy_multiple_wc_repo(sbox):
 
 # Test copying local files using peg revision syntax
 # (Issue 2546)
+@Issue(2546)
 def copy_peg_rev_local_files(sbox):
   "copy local files using peg rev syntax"
 
@@ -3343,6 +3361,7 @@ def copy_peg_rev_local_files(sbox):
 
 # Test copying local directories using peg revision syntax
 # (Issue 2546)
+@Issue(2546)
 def copy_peg_rev_local_dirs(sbox):
   "copy local dirs using peg rev syntax"
 
@@ -3425,6 +3444,7 @@ def copy_peg_rev_local_dirs(sbox):
 
 # Test copying urls using peg revision syntax
 # (Issue 2546)
+@Issues([2546,3651])
 def copy_peg_rev_url(sbox):
   "copy urls using peg rev syntax"
 
@@ -3711,6 +3731,7 @@ def copy_make_parents_repo_repo(sbox):
 
 # Test for issue #2894
 # Can't perform URL to WC copy if URL needs URI encoding.
+@Issue(2894)
 def URI_encoded_repos_to_wc(sbox):
   "copy a URL that needs URI encoding to WC"
 
@@ -3803,6 +3824,7 @@ def URI_encoded_repos_to_wc(sbox):
 
 #----------------------------------------------------------------------
 # Issue #3068: copy source parent may be unversioned
+@Issue(3068)
 def allow_unversioned_parent_for_copy_src(sbox):
   "copy wc in unversioned parent to other wc"
 
@@ -4004,6 +4026,7 @@ def change_case_of_hostname(input):
   return scheme + host + path
 
 # regression test for issue #2475 - move file and folder
+@Issue(2475)
 def path_move_and_copy_between_wcs_2475(sbox):
   "issue #2475 - move and copy between working copies"
   sbox.build()
@@ -4066,6 +4089,7 @@ def path_move_and_copy_between_wcs_2475(
 
 # regression test for issue #2475 - direct copy in the repository
 # this test handles the 'direct move' case too, that uses the same code.
+@Issue(2475)
 def path_copy_in_repo_2475(sbox):
   "issue #2475 - direct copy in the repository"
   sbox.build()
@@ -4288,6 +4312,7 @@ def reverse_merge_move(sbox):
                                         None,
                                         None)
 
+@XFail()
 def nonrecursive_commit_of_copy(sbox):
   """commit only top of copy; check child behavior"""
 
@@ -4357,6 +4382,7 @@ def nonrecursive_commit_of_copy(sbox):
 
 # Regression test for issue #3474 - making a new subdir, moving files into it
 # and then renaming the subdir, breaks history of the moved files.
+@Issue(3474)
 def copy_added_dir_with_copy(sbox):
   """copy of new dir with copied file keeps history"""
 
@@ -4386,6 +4412,8 @@ def copy_added_dir_with_copy(sbox):
   svntest.actions.run_and_verify_status(wc_dir, expected_status)
 
 
+@SkipUnless(svntest.main.is_posix_os)
+@Issue(3303)
 def copy_broken_symlink(sbox):
   """copy broken symlink"""
 
@@ -4598,6 +4626,7 @@ def copy_dir_with_space(sbox):
                                         None, wc_dir)
 
 # Regression test for issue #3676
+@Issue(3676)
 def changed_data_should_match_checkout(sbox):
   """changed data after commit should match checkout"""
 
@@ -4628,6 +4657,8 @@ def changed_data_should_match_checkout(s
   os.chdir(was_cwd)
 
 # Regression test for issue #3676 for copies including directories
+@XFail()
+@Issue(3676)
 def changed_dir_data_should_match_checkout(sbox):
   """changed dir after commit should match checkout"""
 
@@ -4701,6 +4732,8 @@ def copy_over_deleted_dir(sbox):
   main.run_svn(None, 'cp', os.path.join(sbox.wc_dir, 'A/D'),
                os.path.join(sbox.wc_dir, 'A/B'))
 
+@XFail()
+@Issue(3314)
 def mixed_rev_copy_del(sbox):
   """copy mixed-rev and delete children"""
 
@@ -4822,6 +4855,7 @@ def copy_delete_delete(sbox):
   "copy, delete child, delete copy"
   copy_delete_undo(sbox, False)
 
+@XFail()
 def copy_delete_revert(sbox):
   "copy, delete child, revert copy"
   copy_delete_undo(sbox, True)
@@ -4974,7 +5008,7 @@ test_list = [ None,
               copy_files_with_properties,
               copy_delete_commit,
               mv_and_revert_directory,
-              SkipUnless(copy_preserve_executable_bit, svntest.main.is_posix_os),
+              copy_preserve_executable_bit,
               wc_to_repos,
               repos_to_wc,
               copy_to_root,
@@ -4988,7 +5022,7 @@ test_list = [ None,
               repos_to_wc_1634,
               double_uri_escaping_1814,
               wc_to_wc_copy_between_different_repos,
-              XFail(wc_to_wc_copy_deleted, issues=3776),
+              wc_to_wc_copy_deleted,
               url_to_non_existent_url_path,
               non_existent_url_to_url,
               old_dir_url_to_url,
@@ -5044,18 +5078,18 @@ test_list = [ None,
               copy_below_copy,
               move_below_move,
               reverse_merge_move,
-              XFail(nonrecursive_commit_of_copy),
+              nonrecursive_commit_of_copy,
               copy_added_dir_with_copy,
-              SkipUnless(copy_broken_symlink, svntest.main.is_posix_os),
+              copy_broken_symlink,
               move_dir_containing_move,
               copy_dir_with_space,
               changed_data_should_match_checkout,
-              XFail(changed_dir_data_should_match_checkout, issues=3676),
+              changed_dir_data_should_match_checkout,
               move_added_nodes,
               copy_over_deleted_dir,
-              XFail(mixed_rev_copy_del, issues=3314),
+              mixed_rev_copy_del,
               copy_delete_delete,
-              XFail(copy_delete_revert),
+              copy_delete_revert,
               delete_replace_delete,
               copy_repos_over_deleted_same_kind,
               copy_repos_over_deleted_other_kind,

Modified: subversion/trunk/subversion/tests/cmdline/depth_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/depth_tests.py?rev=1067380&r1=1067379&r2=1067380&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/depth_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/depth_tests.py Sat Feb  5 02:17:32 2011
@@ -35,8 +35,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 = wc.StateItem
 
 # For errors setting up the depthy working copies.
@@ -1015,6 +1019,7 @@ def commit_propmods_with_depth_empty(sbo
   commit_propmods_with_depth_empty_helper(sbox2, '--depth=empty')
 
 # Test for issue #2845.
+@Issue(2845)
 def diff_in_depthy_wc(sbox):
   "diff at various depths in non-infinity wc"
 
@@ -1119,6 +1124,7 @@ def diff_in_depthy_wc(sbox):
   svntest.actions.run_and_verify_svn(None, expected_output, [],
                                     'diff', '--depth', 'immediates', '-rHEAD')
 
+@Issue(2882)
 def commit_depth_immediates(sbox):
   "commit some files with --depth=immediates"
   sbox.build()
@@ -1242,6 +1248,7 @@ def depth_immediates_receive_new_dir(sbo
   # Check that the new directory was added at depth=empty.
   verify_depth(None, "empty", other_I_path)
 
+@Issue(2931)
 def add_tree_with_depth(sbox):
   "add multi-subdir tree with --depth options"  # For issue #2931
   sbox.build()
@@ -1415,6 +1422,7 @@ def status_in_depthy_wc(sbox):
 #----------------------------------------------------------------------
 
 # Issue #3039.
+@Issue(3039)
 def depthy_update_above_dir_to_be_deleted(sbox):
   "'update -N' above a WC path deleted in repos HEAD"
   sbox.build()
@@ -2058,6 +2066,7 @@ def depth_empty_update_on_file(sbox):
   svntest.actions.run_and_verify_info([expected_infos], iota_path)
 
 
+@Issue(3544)
 def excluded_path_update_operation(sbox):
   """make sure update handle svn_depth_exclude properly"""
 
@@ -2340,6 +2349,8 @@ def exclude_keeps_hidden_entries(sbox):
 
 
 # Issue 3792.
+@XFail()
+@Issue(3792)
 def info_excluded(sbox):
   "'info' should treat excluded item as versioned"
 
@@ -2841,7 +2852,7 @@ test_list = [ None,
               excluded_path_misc_operation,
               excluded_receive_remote_removal,
               exclude_keeps_hidden_entries,
-              XFail(info_excluded, issues=3792),
+              info_excluded,
               tree_conflicts_resolved_depth_empty,
               tree_conflicts_resolved_depth_files,
               tree_conflicts_resolved_depth_immediates,

Modified: subversion/trunk/subversion/tests/cmdline/diff_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/diff_tests.py?rev=1067380&r1=1067379&r2=1067380&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/diff_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/diff_tests.py Sat Feb  5 02:17:32 2011
@@ -32,9 +32,12 @@ import sys, re, os, time
 import svntest
 
 # (abbreviation)
-Skip = svntest.testcase.Skip
-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
 
 
@@ -786,7 +789,7 @@ def diff_only_property_change(sbox):
 # Regression test for issue #1019: make sure we don't try to display
 # diffs when the file is marked as a binary type.  This tests all 3
 # uses of 'svn diff':  wc-wc, wc-repos, repos-repos.
-
+@Issue(1019)
 def dont_diff_binary_file(sbox):
   "don't diff file marked as binary type"
 
@@ -938,7 +941,7 @@ def diff_head_of_moved_file(sbox):
 # Regression test for issue #977: make 'svn diff -r BASE:N' compare a
 # repository tree against the wc's text-bases, rather than the wc's
 # working files.  This is a long test, which checks many variations.
-
+@Issue(977)
 def diff_base_to_repos(sbox):
   "diff text-bases against repository"
 
@@ -1136,7 +1139,7 @@ def diff_base_to_repos(sbox):
 #----------------------------------------------------------------------
 # This is a simple regression test for issue #891, whereby ra_neon's
 # REPORT request would fail, because the object no longer exists in HEAD.
-
+@Issue(891)
 def diff_deleted_in_head(sbox):
   "repos-repos diff on item deleted from HEAD"
 
@@ -1385,8 +1388,9 @@ def diff_repos_and_wc(sbox):
   verify_expected_output(diff_output, "+zig")
 
 #----------------------------------------------------------------------
+@Issue(1311)
 def diff_file_urls(sbox):
-  "diff between two file URLs (issue #1311)"
+  "diff between two file URLs"
 
   sbox.build()
 
@@ -1899,6 +1903,7 @@ def diff_force(sbox):
 #----------------------------------------------------------------------
 # Regression test for issue #2333: Renaming a directory should produce
 # deletion and addition diffs for each included file.
+@Issue(2333)
 def diff_renamed_dir(sbox):
   "diff a renamed directory"
 
@@ -2728,6 +2733,7 @@ def diff_weird_author(sbox):
                                      'diff', '-r1:2', sbox.repo_url)
 
 # test for issue 2121, use -x -w option for ignoring whitespace during diff
+@Issue(2121)
 def diff_ignore_whitespace(sbox):
   "ignore whitespace when diffing"
 
@@ -2813,6 +2819,7 @@ def diff_ignore_eolstyle(sbox):
                                      file_path)
 
 # test for issue 2600, diff revision of a file in a renamed folder
+@Issue(2600)
 def diff_in_renamed_folder(sbox):
   "diff a revision of a file in a renamed folder"
 
@@ -3059,6 +3066,7 @@ def diff_with_depth(sbox):
                                      'diff', '-rHEAD', '--depth', 'infinity')
 
 # test for issue 2920: ignore eol-style on empty lines
+@Issue(2920)
 def diff_ignore_eolstyle_empty_lines(sbox):
   "ignore eol styles when diffing empty lines"
 
@@ -3303,6 +3311,8 @@ def make_file_edit_del_add(dir):
   svntest.main.run_svn(None, 'add', theta)
 
 
+@XFail()
+@Issue(3295)
 def diff_url_against_local_mods(sbox):
   "diff URL against working copy with local mods"
 
@@ -3340,7 +3350,8 @@ def diff_url_against_local_mods(sbox):
 #----------------------------------------------------------------------
 # Diff against old revision of the parent directory of a removed and
 # locally re-added file.
-
+@XFail()
+@Issue(1675)
 def diff_preexisting_rev_against_local_add(sbox):
   "diff -r1 of dir with removed-then-readded file"
   sbox.build()
@@ -3804,8 +3815,8 @@ test_list = [ None,
               diff_file_depth_empty,
               diff_wrong_extension_type,
               diff_external_diffcmd,
-              XFail(diff_url_against_local_mods, issues=3295),
-              XFail(diff_preexisting_rev_against_local_add, issues=1675),
+              diff_url_against_local_mods,
+              diff_preexisting_rev_against_local_add,
               diff_git_format_wc_wc,
               diff_git_format_url_wc,
               diff_git_format_url_url,

Modified: subversion/trunk/subversion/tests/cmdline/export_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/export_tests.py?rev=1067380&r1=1067379&r2=1067380&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/export_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/export_tests.py Sat Feb  5 02:17:32 2011
@@ -33,8 +33,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
 
 
@@ -262,6 +266,7 @@ def export_working_copy_with_property_mo
                                         svntest.wc.State(sbox.wc_dir, {}),
                                         expected_disk)
 
+@XFail()
 def export_working_copy_at_base_revision(sbox):
   "export working copy at base revision"
   sbox.build(read_only = True)
@@ -451,6 +456,7 @@ def export_file_to_explicit_cwd(sbox):
                                         '.', expected_output,
                                         expected_disk)
 
+@XFail()
 def export_file_overwrite_fails(sbox):
   "exporting a file refuses to silently overwrite"
   sbox.build(create_wc = True, read_only = True)
@@ -535,6 +541,7 @@ def export_working_copy_ignoring_keyword
 
 # This is test for issue #3683 - 'Escape unsafe charaters in a URL during
 # export'
+@Issue(3683)
 def export_with_url_unsafe_characters(sbox):
   "export file with URL unsafe characters"
 
@@ -561,6 +568,7 @@ def export_with_url_unsafe_characters(sb
   if not os.path.exists(export_target):
     raise svntest.Failure("export did not fetch file with URL unsafe path")
 
+@XFail()
 def export_working_copy_with_depths(sbox):
   "export working copy with different depths"
   sbox.build(read_only = True)
@@ -662,6 +670,7 @@ def export_externals_with_native_eol(sbo
                                         expected_disk,
                                         '--native-eol', 'CR')
 
+@Issue(3727)
 def export_to_current_dir(sbox):
   "export to current dir"
   # Issue 3727: Forced export in current dir creates unexpected subdir.
@@ -708,7 +717,7 @@ test_list = [ None,
               export_eol_translation,
               export_working_copy_with_keyword_translation,
               export_working_copy_with_property_mods,
-              XFail(export_working_copy_at_base_revision),
+              export_working_copy_at_base_revision,
               export_native_eol_option,
               export_nonexistent_file,
               export_unversioned_file,
@@ -717,11 +726,11 @@ test_list = [ None,
               export_HEADplus1_fails,
               export_url_to_explicit_cwd,
               export_file_to_explicit_cwd,
-              XFail(export_file_overwrite_fails),
+              export_file_overwrite_fails,
               export_ignoring_keyword_translation,
               export_working_copy_ignoring_keyword_translation,
               export_with_url_unsafe_characters,
-              XFail(export_working_copy_with_depths),
+              export_working_copy_with_depths,
               export_externals_with_native_eol,
               export_to_current_dir,
              ]

Modified: subversion/trunk/subversion/tests/cmdline/externals_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/externals_tests.py?rev=1067380&r1=1067379&r2=1067380&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/externals_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/externals_tests.py Sat Feb  5 02:17:32 2011
@@ -34,11 +34,14 @@ import tempfile
 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
 
-
 ######################################################################
 # Tests
 #
@@ -733,6 +736,7 @@ def export_with_externals(sbox):
 #----------------------------------------------------------------------
 
 # Test for issue #2429
+@Issue(2429)
 def export_wc_with_externals(sbox):
   "test exports from working copies with externals"
 
@@ -1067,6 +1071,7 @@ def can_place_file_external_into_dir_ext
 #----------------------------------------------------------------------
 
 # Issue #2461.
+@Issue(2461)
 def external_into_path_with_spaces(sbox):
   "allow spaces in external local paths"
 
@@ -1088,6 +1093,7 @@ def external_into_path_with_spaces(sbox)
 #----------------------------------------------------------------------
 
 # Issue #3368
+@Issue(3368)
 def binary_file_externals(sbox):
   "binary file externals"
 
@@ -1158,6 +1164,8 @@ def binary_file_externals(sbox):
 #----------------------------------------------------------------------
 
 # Issue #3351.
+@Issue(3351)
+@XFail()
 def update_lose_file_external(sbox):
   "delete a file external"
 
@@ -1236,6 +1244,7 @@ def update_lose_file_external(sbox):
 #----------------------------------------------------------------------
 
 # Issue #3351.
+@Issue(3351)
 def switch_relative_external(sbox):
   "switch a relative external"
 
@@ -1368,6 +1377,7 @@ def relegate_external(sbox):
 #----------------------------------------------------------------------
 
 # Issue #3552
+@Issue(3552)
 def wc_repos_file_externals(sbox):
   "tag directory with file externals from wc to url"
 
@@ -1589,7 +1599,7 @@ test_list = [ None,
               can_place_file_external_into_dir_external,
               external_into_path_with_spaces,
               binary_file_externals,
-              XFail(update_lose_file_external, issues=3351),
+              update_lose_file_external,
               switch_relative_external,
               export_sparse_wc_with_externals,
               relegate_external,

Modified: subversion/trunk/subversion/tests/cmdline/history_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/history_tests.py?rev=1067380&r1=1067379&r2=1067380&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/history_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/history_tests.py Sat Feb  5 02:17:32 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 = wc.StateItem
 
 ######################################################################
@@ -135,6 +139,7 @@ def cat_traces_renames(sbox):
                                      None, svntest.verify.AnyOutput,
                                      'cat',  '-r', 'HEAD', rho_path)
 
+@Issue(1970)
 def cat_avoids_false_identities(sbox):
   "verify that 'svn cat' avoids false identities"
 

Modified: subversion/trunk/subversion/tests/cmdline/import_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/import_tests.py?rev=1067380&r1=1067379&r2=1067380&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/import_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/import_tests.py Sat Feb  5 02:17:32 2011
@@ -32,9 +32,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 = wc.StateItem
 exp_noop_up_out = svntest.actions.expected_noop_update_output
 
@@ -45,6 +48,7 @@ exp_noop_up_out = svntest.actions.expect
 
 #----------------------------------------------------------------------
 # this test should be SKIPped on systems without the executable bit
+@SkipUnless(svntest.main.is_posix_os)
 def import_executable(sbox):
   "import of executable files"
 
@@ -294,6 +298,7 @@ def import_avoid_empty_revision(sbox):
 #----------------------------------------------------------------------
 
 # test for issue 2433: "import" does not handle eol-style correctly
+@Issue(2433)
 def import_eol_style(sbox):
   "import should honor the eol-style property"
 
@@ -371,7 +376,7 @@ enable-auto-props = yes
 
 # list all tests here, starting with None:
 test_list = [ None,
-              SkipUnless(import_executable, svntest.main.is_posix_os),
+              import_executable,
               import_ignores,
               import_avoid_empty_revision,
               import_no_ignores,

Modified: subversion/trunk/subversion/tests/cmdline/info_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/info_tests.py?rev=1067380&r1=1067379&r2=1067380&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/info_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/info_tests.py Sat Feb  5 02:17:32 2011
@@ -33,8 +33,12 @@ import shutil, stat, re, os
 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
 
 ######################################################################

Modified: subversion/trunk/subversion/tests/cmdline/input_validation_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/input_validation_tests.py?rev=1067380&r1=1067379&r2=1067380&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/input_validation_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/input_validation_tests.py Sat Feb  5 02:17:32 2011
@@ -28,9 +28,12 @@ import os
 import svntest
 
 # (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
 
 

Modified: subversion/trunk/subversion/tests/cmdline/lock_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/lock_tests.py?rev=1067380&r1=1067379&r2=1067380&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/lock_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/lock_tests.py Sat Feb  5 02:17:32 2011
@@ -31,9 +31,12 @@ import re, os, stat
 import svntest
 
 # (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
 
 ######################################################################
@@ -408,6 +411,7 @@ def enforce_lock(sbox):
 # Test that updating a file with the "svn:needs-lock" property works,
 # especially on Windows, where renaming A to B fails if B already
 # exists and has its read-only bit set.  See also issue #2278.
+@Issue(2278)
 def update_while_needing_lock(sbox):
   "update handles svn:needs-lock correctly"
 
@@ -955,6 +959,7 @@ def lock_uri_encoded(sbox):
 #----------------------------------------------------------------------
 # A regression test for a bug when svn:needs-lock and svn:executable
 # interact badly. The bug was fixed in trunk @ r854933.
+@SkipUnless(svntest.main.is_posix_os)
 def lock_and_exebit1(sbox):
   "svn:needs-lock and svn:executable, part I"
 
@@ -1031,6 +1036,7 @@ def lock_and_exebit1(sbox):
 
 #----------------------------------------------------------------------
 # A variant of lock_and_exebit1: same test without unlock
+@SkipUnless(svntest.main.is_posix_os)
 def lock_and_exebit2(sbox):
   "svn:needs-lock and svn:executable, part II"
 
@@ -1310,6 +1316,7 @@ def ls_url_encoded(sbox):
 
 #----------------------------------------------------------------------
 # Make sure unlocking a path with the wrong lock token fails.
+@XFail(svntest.main.is_ra_type_dav)
 def unlock_wrong_token(sbox):
   "verify unlocking with wrong lock token"
 
@@ -1370,6 +1377,7 @@ def examine_lock_encoded_recurse(sbox):
                                         svntest.main.wc_author)
 
 # Trying to unlock someone else's lock with --force should fail.
+@XFail(svntest.main.is_ra_type_dav)
 def unlocked_lock_of_other_user(sbox):
   "unlock file locked by other user"
 
@@ -1468,6 +1476,7 @@ def lock_twice_in_one_wc(sbox):
 #----------------------------------------------------------------------
 # Test for issue #3524 'Locking path via ra_serf which doesn't exist in
 # HEAD triggers assert'
+@Issue(3524)
 def lock_path_not_in_head(sbox):
   "lock path that does not exist in HEAD"
 
@@ -1544,6 +1553,8 @@ def verify_path_escaping(sbox):
 
 #----------------------------------------------------------------------
 # Issue #3674: Replace + propset of locked file fails over DAV
+@XFail(svntest.main.is_ra_type_dav)
+@Issue(3674)
 def replace_and_propset_locked_path(sbox):
   "test replace + propset of locked file"
 
@@ -1662,23 +1673,21 @@ test_list = [ None,
               lock_several_files,
               lock_switched_files,
               lock_uri_encoded,
-              SkipUnless(lock_and_exebit1, svntest.main.is_posix_os),
-              SkipUnless(lock_and_exebit2, svntest.main.is_posix_os),
+              lock_and_exebit1,
+              lock_and_exebit2,
               commit_xml_unsafe_file_unlock,
               repos_lock_with_info,
               unlock_already_unlocked_files,
               info_moved_path,
               ls_url_encoded,
-              XFail(unlock_wrong_token, svntest.main.is_ra_type_dav),
+              unlock_wrong_token,
               examine_lock_encoded_recurse,
-              XFail(unlocked_lock_of_other_user,
-                    svntest.main.is_ra_type_dav),
+              unlocked_lock_of_other_user,
               lock_funky_comment_chars,
               lock_twice_in_one_wc,
               lock_path_not_in_head,
               verify_path_escaping,
-              XFail(replace_and_propset_locked_path,
-                    svntest.main.is_ra_type_dav, issues=3674),
+              replace_and_propset_locked_path,
               cp_isnt_ro,
             ]
 

Modified: subversion/trunk/subversion/tests/cmdline/log_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/log_tests.py?rev=1067380&r1=1067379&r2=1067380&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/log_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/log_tests.py Sat Feb  5 02:17:32 2011
@@ -36,6 +36,12 @@ from svntest.main import SVN_PROP_MERGEI
 from merge_tests import set_up_branch
 
 # (abbreviation)
+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
 exp_noop_up_out = svntest.actions.expected_noop_update_output
 
 ######################################################################
@@ -68,10 +74,6 @@ msg_separator = '-----------------------
 
 
 # (abbreviation)
-Skip = svntest.testcase.Skip
-SkipUnless = svntest.testcase.SkipUnless
-XFail = svntest.testcase.XFail
-Wimp = svntest.testcase.Wimp
 Item = svntest.wc.StateItem
 
 
@@ -1144,6 +1146,7 @@ def check_merge_results(log_chain, expec
       raise SVNUnexpectedLogs("Merged revision '%d' missing" % rev, log_chain)
 
 
+@SkipUnless(server_has_mergeinfo)
 def merge_sensitive_log_single_revision(sbox):
   "test 'svn log -g' on a single revision"
 
@@ -1204,6 +1207,7 @@ def merge_sensitive_log_single_revision(
   check_merge_results(log_chain, expected_merges)
 
 
+@SkipUnless(server_has_mergeinfo)
 def merge_sensitive_log_branching_revision(sbox):
   "test 'svn log -g' on a branching revision"
 
@@ -1227,6 +1231,7 @@ def merge_sensitive_log_branching_revisi
   check_merge_results(log_chain, expected_merges)
 
 
+@SkipUnless(server_has_mergeinfo)
 def merge_sensitive_log_non_branching_revision(sbox):
   "test 'svn log -g' on a non-branching revision"
 
@@ -1250,6 +1255,7 @@ def merge_sensitive_log_non_branching_re
   check_merge_results(log_chain, expected_merges)
 
 
+@SkipUnless(server_has_mergeinfo)
 def merge_sensitive_log_added_path(sbox):
   "test 'svn log -g' a path added before merge"
 
@@ -1436,8 +1442,9 @@ def retrieve_revprops(sbox):
     args=['-r1', '--with-revprop', custom_name])
 
 
+@Issue(2866)
 def log_xml_with_bad_data(sbox):
-  "log --xml escapes non-utf8 data (issue #2866)"
+  "log --xml escapes non-utf8 data"
   svntest.actions.load_repo(sbox, os.path.join(os.path.dirname(sys.argv[0]),
                                                'log_tests_data',
                                                'xml-invalid-chars.dump'))
@@ -1449,6 +1456,8 @@ def log_xml_with_bad_data(sbox):
   svntest.actions.run_and_verify_log_xml(
     expected_revprops=(r0_props,), args=[sbox.repo_url])
 
+@SkipUnless(server_has_mergeinfo)
+@Issue(3172)
 def merge_sensitive_log_target_with_bogus_mergeinfo(sbox):
   "'svn log -g target_with_bogus_mergeinfo'"
   # A test for issue #3172 'svn log -g' seems to encounter error on server':
@@ -1481,6 +1490,8 @@ def merge_sensitive_log_target_with_bogu
   svntest.actions.run_and_verify_svn(None, None, [], 'log', '-g', C_path)
   svntest.actions.run_and_verify_svn(None, None, [], 'log', '-g', D_path)
 
+@SkipUnless(server_has_mergeinfo)
+@Issue(3235)
 def merge_sensitive_log_added_mergeinfo_replaces_inherited(sbox):
   "log -g and explicit mergeinfo replacing inherited"
 
@@ -1646,6 +1657,8 @@ def merge_sensitive_log_added_mergeinfo_
 
 #----------------------------------------------------------------------
 
+@SkipUnless(server_has_mergeinfo)
+@Issue(3285)
 def merge_sensitive_log_propmod_merge_inheriting_path(sbox):
   "log -g and simple propmod to merge-inheriting path"
 
@@ -1770,14 +1783,10 @@ test_list = [ None,
               log_base_peg,
               log_verbose,
               log_parser,
-              SkipUnless(merge_sensitive_log_single_revision,
-                         server_has_mergeinfo),
-              SkipUnless(merge_sensitive_log_branching_revision,
-                         server_has_mergeinfo),
-              SkipUnless(merge_sensitive_log_non_branching_revision,
-                         server_has_mergeinfo),
-              SkipUnless(merge_sensitive_log_added_path,
-                         server_has_mergeinfo),
+              merge_sensitive_log_single_revision,
+              merge_sensitive_log_branching_revision,
+              merge_sensitive_log_non_branching_revision,
+              merge_sensitive_log_added_path,
               log_single_change,
               log_changes_range,
               log_changes_list,
@@ -1785,12 +1794,9 @@ test_list = [ None,
               only_one_wc_path,
               retrieve_revprops,
               log_xml_with_bad_data,
-              SkipUnless(merge_sensitive_log_target_with_bogus_mergeinfo,
-                              server_has_mergeinfo),
-              SkipUnless(merge_sensitive_log_added_mergeinfo_replaces_inherited,
-                         server_has_mergeinfo),
-              SkipUnless(merge_sensitive_log_propmod_merge_inheriting_path,
-                         server_has_mergeinfo),
+              merge_sensitive_log_target_with_bogus_mergeinfo,
+              merge_sensitive_log_added_mergeinfo_replaces_inherited,
+              merge_sensitive_log_propmod_merge_inheriting_path,
               log_of_local_copy,
              ]
 

Modified: subversion/trunk/subversion/tests/cmdline/merge_authz_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/merge_authz_tests.py?rev=1067380&r1=1067379&r2=1067380&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/merge_authz_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/merge_authz_tests.py Sat Feb  5 02:17:32 2011
@@ -34,9 +34,12 @@ from svntest import wc
 
 # (abbreviation)
 Item = wc.StateItem
-XFail = svntest.testcase.XFail
-Skip = svntest.testcase.Skip
-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
 
 from merge_tests import set_up_branch
 from merge_tests import expected_merge_output
@@ -70,6 +73,9 @@ from svntest.actions import inject_confl
 #         This is *not* a full test of issue #2829, see also merge_tests.py,
 #         search for "2829".  This tests the problem where a merge adds a path
 #         with a missing sibling and so needs its own explicit mergeinfo.
+@Issue([2893,2997,2829])
+@SkipUnless(svntest.main.server_has_mergeinfo)
+@Skip(svntest.main.is_ra_type_file)
 def mergeinfo_and_skipped_paths(sbox):
   "skipped paths get overriding mergeinfo"
 
@@ -428,6 +434,8 @@ def mergeinfo_and_skipped_paths(sbox):
                                        None, None, None, None,
                                        None, 1, 0)
 
+@SkipUnless(server_has_mergeinfo)
+@Issue(2876)
 def merge_fails_if_subtree_is_deleted_on_src(sbox):
   "merge fails if subtree is deleted on src"
 
@@ -550,6 +558,9 @@ def merge_fails_if_subtree_is_deleted_on
     [], 'merge', '-r1:6', '--force',
     A_url, Acopy_path)
 
+@SkipUnless(svntest.main.server_has_mergeinfo)
+@Skip(svntest.main.is_ra_type_file)
+@Issue(3242)
 def reintegrate_fails_if_no_root_access(sbox):
   "reintegrate fails if no root access"
 
@@ -680,14 +691,9 @@ def reintegrate_fails_if_no_root_access(
 
 # list all tests here, starting with None:
 test_list = [ None,
-              SkipUnless(Skip(mergeinfo_and_skipped_paths,
-                              svntest.main.is_ra_type_file),
-                         svntest.main.server_has_mergeinfo),
-              SkipUnless(merge_fails_if_subtree_is_deleted_on_src,
-                         server_has_mergeinfo),
-              SkipUnless(Skip(reintegrate_fails_if_no_root_access,
-                              svntest.main.is_ra_type_file),
-                         svntest.main.server_has_mergeinfo),
+              mergeinfo_and_skipped_paths,
+              merge_fails_if_subtree_is_deleted_on_src,
+              reintegrate_fails_if_no_root_access,
              ]
 serial_only = True
 

Modified: subversion/trunk/subversion/tests/cmdline/merge_reintegrate_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/merge_reintegrate_tests.py?rev=1067380&r1=1067379&r2=1067380&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/merge_reintegrate_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/merge_reintegrate_tests.py Sat Feb  5 02:17:32 2011
@@ -34,9 +34,12 @@ from svntest import main, wc, verify, ac
 
 # (abbreviation)
 Item = wc.StateItem
-XFail = svntest.testcase.XFail
-Skip = svntest.testcase.Skip
-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
 exp_noop_up_out = svntest.actions.expected_noop_update_output
 
 from svntest.main import SVN_PROP_MERGEINFO
@@ -45,6 +48,8 @@ from merge_tests import set_up_branch
 from merge_tests import expected_merge_output
 
 #----------------------------------------------------------------------
+@SkipUnless(server_has_mergeinfo)
+@Issue(3640)
 def basic_reintegrate(sbox):
   "basic merge --reintegrate support"
 
@@ -744,6 +749,7 @@ def reintegrate_fail_on_switched_wc(sbox
 #----------------------------------------------------------------------
 # Test for issue #3603 'allow reintegrate merges into WCs with
 # missing subtrees'.
+@Issue(3603)
 def reintegrate_on_shallow_wc(sbox):
   "merge --reintegrate in shallow wc"
 
@@ -852,6 +858,7 @@ def reintegrate_on_shallow_wc(sbox):
                                        None, 1, 1, "--reintegrate", A_path)
 
 #----------------------------------------------------------------------
+@SkipUnless(server_has_mergeinfo)
 def reintegrate_fail_on_stale_source(sbox):
   "merge --reintegrate should fail on stale source"
   sbox.build()
@@ -961,6 +968,7 @@ def merge_file_with_space_in_its_path(sb
                                      file1)
 
 #----------------------------------------------------------------------
+@SkipUnless(server_has_mergeinfo)
 def reintegrate_with_subtree_mergeinfo(sbox):
   "merge --reintegrate with subtree mergeinfo"
 
@@ -1433,6 +1441,7 @@ def reintegrate_with_subtree_mergeinfo(s
                                        None, 1, 1, "--reintegrate", A_path)
 
 #----------------------------------------------------------------------
+@SkipUnless(server_has_mergeinfo)
 def multiple_reintegrates_from_the_same_branch(sbox):
   "multiple reintegrates create self-referential"
 
@@ -1621,6 +1630,7 @@ def multiple_reintegrates_from_the_same_
 #
 # Also tests Issue #3591 'reintegrate merges update subtree mergeinfo
 # unconditionally'.
+@Issue(3591)
 def reintegrate_with_self_referential_mergeinfo(sbox):
   "source has target's history as explicit mergeinfo"
 
@@ -1750,6 +1760,7 @@ def reintegrate_with_self_referential_me
 
 #----------------------------------------------------------------------
 # Test for issue #3577 '1.7 subtree mergeinfo recording breaks reintegrate'.
+@Issue(3577)
 def reintegrate_with_subtree_merges(sbox):
   "reintegrate with prior subtree merges to source"
 
@@ -1881,6 +1892,7 @@ def reintegrate_with_subtree_merges(sbox
 
 #----------------------------------------------------------------------
 # Test for issue #3654 'added subtrees with mergeinfo break reintegrate'.
+@Issue(3654)
 def added_subtrees_with_mergeinfo_break_reintegrate(sbox):
   "added subtrees with mergeinfo break reintegrate"
 
@@ -2076,6 +2088,7 @@ def added_subtrees_with_mergeinfo_break_
 #----------------------------------------------------------------------
 # Test for issue #3648 '2-URL merges incorrectly reverse-merge mergeinfo
 # for merge target'.
+@Issue(3648)
 def two_URL_merge_removes_valid_mergeinfo_from_target(sbox):
   "2-URL merge removes valid mergeinfo from target"
 
@@ -2238,21 +2251,17 @@ def two_URL_merge_removes_valid_mergeinf
 
 # list all tests here, starting with None:
 test_list = [ None,
-              SkipUnless(basic_reintegrate,
-                         server_has_mergeinfo),
+              basic_reintegrate,
               reintegrate_with_rename,
               reintegrate_branch_never_merged_to,
               reintegrate_fail_on_modified_wc,
               reintegrate_fail_on_mixed_rev_wc,
               reintegrate_fail_on_switched_wc,
               reintegrate_on_shallow_wc,
-              SkipUnless(reintegrate_fail_on_stale_source,
-                         server_has_mergeinfo),
+              reintegrate_fail_on_stale_source,
               merge_file_with_space_in_its_path,
-              SkipUnless(reintegrate_with_subtree_mergeinfo,
-                         server_has_mergeinfo),
-              SkipUnless(multiple_reintegrates_from_the_same_branch,
-                         server_has_mergeinfo),
+              reintegrate_with_subtree_mergeinfo,
+              multiple_reintegrates_from_the_same_branch,
               reintegrate_with_self_referential_mergeinfo,
               added_subtrees_with_mergeinfo_break_reintegrate,
               two_URL_merge_removes_valid_mergeinfo_from_target,



Re: svn commit: r1067380 [1/3] - in /subversion/trunk/subversion/tests/cmdline: ./ svntest/

Posted by Philip Martin <ph...@wandisco.com>.
> I haven't tested it, but the Right solution feels like we should make
> the tests not call each other.  Either they should be combined into
> one test, or the common code should be factored out into a helper
> method.  What benefit does having the called test give, if the *exact*
> same code is being tested elsewhere?

I suppose they could be combined now.  When originally written the first
test, a copy, passed but second test, the same copy followed by a
revert, failed.  If I used just used one test then it would have been an
XFAIL and the working operation could have broken without triggering an
additional FAIL.

-- 
Philip

Re: svn commit: r1067380 [1/3] - in /subversion/trunk/subversion/tests/cmdline: ./ svntest/

Posted by Hyrum K Wright <hy...@hyrumwright.org>.
On Mon, Feb 7, 2011 at 1:49 PM, Philip Martin
<ph...@wandisco.com> wrote:
> Philip Martin <ph...@wandisco.com> writes:
>
>> hwright@apache.org writes:
>>
>>> Author: hwright
>>> Date: Sat Feb  5 02:17:32 2011
>>> New Revision: 1067380
>>>
>>> URL: http://svn.apache.org/viewvc?rev=1067380&view=rev
>>> Log:
>>> Use Python decorators to denote XFail, Skip, SkipUnless and Wimp tests.  Also,
>>> add Issue decorators where appropriate.
>>
>> authz_tests.py defines two tests: wc_wc_copy and wc_wc_copy_revert, and
>> the second test calls the first:
>>
>>   @Skip(svntest.main.is_ra_type_file)
>>   def wc_wc_copy(sbox):
>>     "wc-to-wc copy with absent nodes"
>>     ...
>>
>>   @Skip(svntest.main.is_ra_type_file)
>>   def wc_wc_copy_revert(sbox):
>>     "wc-to-wc copy with absent nodes and then revert"
>>
>>     wc_wc_copy(sbox)
>>     ...
>>
>> and this now fails with:
>>
>>   File "/home/pm/sw/subversion/src/subversion/tests/cmdline/authz_tests.py", lin
>> e 1049, in wc_wc_copy_revert
>>     wc_wc_copy(sbox)
>> AttributeError: _Skip instance has no __call__ method
>
> Is this right?
>
> Index: subversion/tests/cmdline/svntest/testcase.py
> ===================================================================
> --- subversion/tests/cmdline/svntest/testcase.py        (revision 1067926)
> +++ subversion/tests/cmdline/svntest/testcase.py        (working copy)
> @@ -259,6 +259,8 @@
>       raise svntest.Skip
>     return self._delegate.run(sandbox)
>
> +  def __call__(self, *args):
> +    return self.run(*args)
>
>  class _SkipUnless(_Skip):
>   """A test that will be skipped if its conditional is false."""

I haven't tested it, but the Right solution feels like we should make
the tests not call each other.  Either they should be combined into
one test, or the common code should be factored out into a helper
method.  What benefit does having the called test give, if the *exact*
same code is being tested elsewhere?

-Hyrum

Re: svn commit: r1067380 [1/3] - in /subversion/trunk/subversion/tests/cmdline: ./ svntest/

Posted by Philip Martin <ph...@wandisco.com>.
Philip Martin <ph...@wandisco.com> writes:

> hwright@apache.org writes:
>
>> Author: hwright
>> Date: Sat Feb  5 02:17:32 2011
>> New Revision: 1067380
>>
>> URL: http://svn.apache.org/viewvc?rev=1067380&view=rev
>> Log:
>> Use Python decorators to denote XFail, Skip, SkipUnless and Wimp tests.  Also,
>> add Issue decorators where appropriate.
>
> authz_tests.py defines two tests: wc_wc_copy and wc_wc_copy_revert, and
> the second test calls the first:
>
>   @Skip(svntest.main.is_ra_type_file)
>   def wc_wc_copy(sbox):
>     "wc-to-wc copy with absent nodes"
>     ...
>
>   @Skip(svntest.main.is_ra_type_file)
>   def wc_wc_copy_revert(sbox):
>     "wc-to-wc copy with absent nodes and then revert"
>
>     wc_wc_copy(sbox)
>     ...
>
> and this now fails with:
>
>   File "/home/pm/sw/subversion/src/subversion/tests/cmdline/authz_tests.py", lin
> e 1049, in wc_wc_copy_revert
>     wc_wc_copy(sbox)
> AttributeError: _Skip instance has no __call__ method

Is this right?

Index: subversion/tests/cmdline/svntest/testcase.py
===================================================================
--- subversion/tests/cmdline/svntest/testcase.py	(revision 1067926)
+++ subversion/tests/cmdline/svntest/testcase.py	(working copy)
@@ -259,6 +259,8 @@
       raise svntest.Skip
     return self._delegate.run(sandbox)
 
+  def __call__(self, *args):
+    return self.run(*args)
 
 class _SkipUnless(_Skip):
   """A test that will be skipped if its conditional is false."""

-- 
Philip

Re: svn commit: r1067380 [1/3] - in /subversion/trunk/subversion/tests/cmdline: ./ svntest/

Posted by Philip Martin <ph...@wandisco.com>.
hwright@apache.org writes:

> Author: hwright
> Date: Sat Feb  5 02:17:32 2011
> New Revision: 1067380
>
> URL: http://svn.apache.org/viewvc?rev=1067380&view=rev
> Log:
> Use Python decorators to denote XFail, Skip, SkipUnless and Wimp tests.  Also,
> add Issue decorators where appropriate.

authz_tests.py defines two tests: wc_wc_copy and wc_wc_copy_revert, and
the second test calls the first:

  @Skip(svntest.main.is_ra_type_file)
  def wc_wc_copy(sbox):
    "wc-to-wc copy with absent nodes"
    ...

  @Skip(svntest.main.is_ra_type_file)
  def wc_wc_copy_revert(sbox):
    "wc-to-wc copy with absent nodes and then revert"

    wc_wc_copy(sbox)
    ...

and this now fails with:

  File "/home/pm/sw/subversion/src/subversion/tests/cmdline/authz_tests.py", lin
e 1049, in wc_wc_copy_revert
    wc_wc_copy(sbox)
AttributeError: _Skip instance has no __call__ method

-- 
Philip