You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by ph...@apache.org on 2010/05/28 14:20:04 UTC
svn commit: r949158 - in /subversion/trunk/subversion:
mod_dav_svn/deadprops.c tests/cmdline/prop_tests.py
Author: philip
Date: Fri May 28 12:20:04 2010
New Revision: 949158
URL: http://svn.apache.org/viewvc?rev=949158&view=rev
Log:
Fix issue 3553: revprop change hook errors are not XML safe.
* subversion/mod_dav_svn/deadprops.c
(save_value): Quote hook error.
* subversion/tests/cmdline/prop_tests.py
(post_revprop_change_hook): Use regex for error matching, verify change.
(test_list): Remove XFail from post_revprop_change_hook.
Modified:
subversion/trunk/subversion/mod_dav_svn/deadprops.c
subversion/trunk/subversion/tests/cmdline/prop_tests.py
Modified: subversion/trunk/subversion/mod_dav_svn/deadprops.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/mod_dav_svn/deadprops.c?rev=949158&r1=949157&r2=949158&view=diff
==============================================================================
--- subversion/trunk/subversion/mod_dav_svn/deadprops.c (original)
+++ subversion/trunk/subversion/mod_dav_svn/deadprops.c Fri May 28 12:20:04 2010
@@ -218,6 +218,11 @@ save_value(dav_db *db, const dav_prop_na
db->authz_read_baton,
resource->pool);
+ /* Prepare any hook failure message to get sent over the wire */
+ serr = svn_error_purge_tracing(serr);
+ if (serr && serr->apr_err == SVN_ERR_REPOS_HOOK_FAILURE)
+ serr->message = apr_xml_quote_string(serr->pool, serr->message, 1);
+
/* mod_dav doesn't handle the returned error very well, it
generates its own generic error that will be returned to
the client. Cache the detailed error here so that it can
Modified: subversion/trunk/subversion/tests/cmdline/prop_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/prop_tests.py?rev=949158&r1=949157&r2=949158&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/prop_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/prop_tests.py Fri May 28 12:20:04 2010
@@ -1707,8 +1707,9 @@ def post_revprop_change_hook(sbox):
svntest.actions.create_failing_hook(repo_dir, 'post-revprop-change',
error_msg)
- expected_error = svntest.verify.ExpectedOutput([
- "svn: " + svntest.actions.hook_failure_message('post-revprop-change'),
+ # serf/neon/mod_dav_svn splits the "svn: hook failed" line
+ expected_error = svntest.verify.RegexOutput([
+ '(svn: |)post-revprop-change hook failed',
error_msg + "\n",
], match_all = False)
@@ -1716,6 +1717,12 @@ def post_revprop_change_hook(sbox):
'ps', '--revprop', '-r0', 'p', 'v',
wc_dir)
+ # Verify change has stuck -- at one time mod_dav_svn would rollback
+ # revprop changes on post-revprop-change hook errors
+ svntest.actions.run_and_verify_svn(None, 'v', [],
+ 'pg', '--revprop', '-r0', 'p',
+ wc_dir)
+
def rm_of_replaced_file(sbox):
"""properties after a removal of a replaced file"""
@@ -1933,7 +1940,7 @@ test_list = [ None,
same_replacement_props,
added_moved_file,
delete_nonexistent_property,
- XFail(post_revprop_change_hook, svntest.main.is_ra_type_dav),
+ post_revprop_change_hook,
rm_of_replaced_file,
prop_reject_grind,
obstructed_subdirs,