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 2011/12/06 14:46:22 UTC
svn commit: r1210913 - in /subversion/trunk/subversion:
libsvn_wc/externals.c tests/cmdline/externals_tests.py
tests/cmdline/prop_tests.py tests/cmdline/svntest/actions.py
Author: philip
Date: Tue Dec 6 13:46:21 2011
New Revision: 1210913
URL: http://svn.apache.org/viewvc?rev=1210913&view=rev
Log:
Fix issue 4073, assert on Windows for abspath in svn:externals.
* subversion/libsvn_wc/externals.c
(svn_wc_parse_externals_description3): Use platform-specific abspath check.
* subversion/tests/cmdline/svntest/actions.py
(set_prop): Rename parameter, verify that expected error occurs.
* subversion/tests/cmdline/externals_tests.py
(set_externals_for_path_expect_error): Tweak for renamed parameter.
(disallow_dot_or_dotdot_directory_reference): Add issue 4073 case.
* subversion/tests/cmdline/prop_tests.py
(prop_value_conversions): Adjust expected error so that it matches.
Modified:
subversion/trunk/subversion/libsvn_wc/externals.c
subversion/trunk/subversion/tests/cmdline/externals_tests.py
subversion/trunk/subversion/tests/cmdline/prop_tests.py
subversion/trunk/subversion/tests/cmdline/svntest/actions.py
Modified: subversion/trunk/subversion/libsvn_wc/externals.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/externals.c?rev=1210913&r1=1210912&r2=1210913&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_wc/externals.c (original)
+++ subversion/trunk/subversion/libsvn_wc/externals.c Tue Dec 6 13:46:21 2011
@@ -300,7 +300,8 @@ svn_wc_parse_externals_description3(apr_
item->target_dir = svn_dirent_internal_style(item->target_dir, pool);
- if (item->target_dir[0] == '\0' || item->target_dir[0] == '/'
+ if (item->target_dir[0] == '\0'
+ || svn_dirent_is_absolute(item->target_dir)
|| svn_path_is_backpath_present(item->target_dir))
return svn_error_createf
(SVN_ERR_CLIENT_INVALID_EXTERNALS_DESCRIPTION, NULL,
Modified: subversion/trunk/subversion/tests/cmdline/externals_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/externals_tests.py?rev=1210913&r1=1210912&r2=1210913&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/externals_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/externals_tests.py Tue Dec 6 13:46:21 2011
@@ -225,7 +225,7 @@ def change_external_expect_error(path, n
but expect to get an error message that matches EXPECTED_ERR."""
svntest.actions.set_prop('svn:externals', new_val, path,
- expected_err=expected_err)
+ expected_re_string=expected_err)
def probe_paths_exist(paths):
@@ -706,6 +706,9 @@ def disallow_dot_or_dotdot_directory_ref
if not external_urls: external_urls = list(external_url_for.values())
externals_value_8 = external_urls.pop() + " /foo \n"
if not external_urls: external_urls = list(external_url_for.values())
+ if svntest.main.is_os_windows():
+ externals_value_9 = external_urls.pop() + " D:/foo\n"
+ if not external_urls: external_urls = list(external_url_for.values())
set_externals_for_path_expect_error(B_path, externals_value_1)
set_externals_for_path_expect_error(G_path, externals_value_2)
@@ -715,6 +718,8 @@ def disallow_dot_or_dotdot_directory_ref
set_externals_for_path_expect_error(B_path, externals_value_6)
set_externals_for_path_expect_error(G_path, externals_value_7)
set_externals_for_path_expect_error(H_path, externals_value_8)
+ if svntest.main.is_os_windows():
+ set_externals_for_path_expect_error(B_path, externals_value_9)
#----------------------------------------------------------------------
Modified: subversion/trunk/subversion/tests/cmdline/prop_tests.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/prop_tests.py?rev=1210913&r1=1210912&r2=1210913&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/prop_tests.py (original)
+++ subversion/trunk/subversion/tests/cmdline/prop_tests.py Tue Dec 6 13:46:21 2011
@@ -893,8 +893,7 @@ def prop_value_conversions(sbox):
svntest.actions.set_prop('svn:executable', '*', lambda_path)
for pval in (' ', '', 'no', 'off', 'false'):
svntest.actions.set_prop('svn:executable', pval, mu_path,
- ["svn: warning: To turn off the svn:executable property, use 'svn propdel';\n",
- "setting the property to '" + pval + "' will not turn it off.\n"])
+ "svn: warning: W125005.*use 'svn propdel'")
# Anything else should be untouched
svntest.actions.set_prop('svn:some-prop', 'bar', lambda_path)
Modified: subversion/trunk/subversion/tests/cmdline/svntest/actions.py
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/tests/cmdline/svntest/actions.py?rev=1210913&r1=1210912&r2=1210913&view=diff
==============================================================================
--- subversion/trunk/subversion/tests/cmdline/svntest/actions.py (original)
+++ subversion/trunk/subversion/tests/cmdline/svntest/actions.py Tue Dec 6 13:46:21 2011
@@ -1823,7 +1823,7 @@ def create_failing_post_commit_hook(repo
# set_prop can be used for properties with NULL characters which are not
# handled correctly when passed to subprocess.Popen() and values like "*"
# which are not handled correctly on Windows.
-def set_prop(name, value, path, expected_err=None):
+def set_prop(name, value, path, expected_re_string=None):
"""Set a property with specified value"""
if value and (value[0] == '-' or '\x00' in value or sys.platform == 'win32'):
from tempfile import mkstemp
@@ -1833,10 +1833,17 @@ def set_prop(name, value, path, expected
value_file.write(value)
value_file.flush()
value_file.close()
- main.run_svn(expected_err, 'propset', '-F', value_file_path, name, path)
+ exit_code, out, err = main.run_svn(expected_re_string, 'propset',
+ '-F', value_file_path, name, path)
os.remove(value_file_path)
else:
- main.run_svn(expected_err, 'propset', name, value, path)
+ exit_code, out, err = main.run_svn(expected_re_string, 'propset',
+ name, value, path)
+ if expected_re_string:
+ if not expected_re_string.startswith(".*"):
+ expected_re_string = ".*(" + expected_re_string + ")"
+ expected_err = verify.RegexOutput(expected_re_string, match_all=False)
+ verify.verify_outputs(None, None, err, None, expected_err)
def check_prop(name, path, exp_out, revprop=None):
"""Verify that property NAME on PATH has a value of EXP_OUT.
Re: svn commit: r1210913 - in /subversion/trunk/subversion: libsvn_wc/externals.c tests/cmdline/externals_tests.py tests/cmdline/prop_tests.py tests/cmdline/svntest/actions.py
Posted by Philip Martin <ph...@wandisco.com>.
"Bert Huijben" <be...@qqmail.nl> writes:
>> - if (item->target_dir[0] == '\0' || item->target_dir[0] == '/'
>> + if (item->target_dir[0] == '\0'
>> + || svn_dirent_is_absolute(item->target_dir)
>
> I think you should also leave the '/' check as a '/style/path' on
> Windows is not absolute, but also not completely relative.
It's included in svn_dirent_is_absolute.
--
uberSVN: Apache Subversion Made Easy
http://www.uberSVN.com
RE: svn commit: r1210913 - in /subversion/trunk/subversion: libsvn_wc/externals.c tests/cmdline/externals_tests.py tests/cmdline/prop_tests.py tests/cmdline/svntest/actions.py
Posted by Bert Huijben <be...@qqmail.nl>.
> -----Original Message-----
> From: philip@apache.org [mailto:philip@apache.org]
> Sent: dinsdag 6 december 2011 14:46
> To: commits@subversion.apache.org
> Subject: svn commit: r1210913 - in /subversion/trunk/subversion:
> libsvn_wc/externals.c tests/cmdline/externals_tests.py
> tests/cmdline/prop_tests.py tests/cmdline/svntest/actions.py
>
> Author: philip
> Date: Tue Dec 6 13:46:21 2011
> New Revision: 1210913
>
> URL: http://svn.apache.org/viewvc?rev=1210913&view=rev
> Log:
> Fix issue 4073, assert on Windows for abspath in svn:externals.
>
> * subversion/libsvn_wc/externals.c
> (svn_wc_parse_externals_description3): Use platform-specific abspath
> check.
>
> * subversion/tests/cmdline/svntest/actions.py
> (set_prop): Rename parameter, verify that expected error occurs.
>
> * subversion/tests/cmdline/externals_tests.py
> (set_externals_for_path_expect_error): Tweak for renamed parameter.
> (disallow_dot_or_dotdot_directory_reference): Add issue 4073 case.
>
> * subversion/tests/cmdline/prop_tests.py
> (prop_value_conversions): Adjust expected error so that it matches.
>
> Modified:
> subversion/trunk/subversion/libsvn_wc/externals.c
> subversion/trunk/subversion/tests/cmdline/externals_tests.py
> subversion/trunk/subversion/tests/cmdline/prop_tests.py
> subversion/trunk/subversion/tests/cmdline/svntest/actions.py
>
> Modified: subversion/trunk/subversion/libsvn_wc/externals.c
> URL:
> http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/exte
> rnals.c?rev=1210913&r1=1210912&r2=1210913&view=diff
> ==========================================================
> ====================
> --- subversion/trunk/subversion/libsvn_wc/externals.c (original)
> +++ subversion/trunk/subversion/libsvn_wc/externals.c Tue Dec 6 13:46:21
> 2011
> @@ -300,7 +300,8 @@ svn_wc_parse_externals_description3(apr_
>
> item->target_dir = svn_dirent_internal_style(item->target_dir, pool);
>
> - if (item->target_dir[0] == '\0' || item->target_dir[0] == '/'
> + if (item->target_dir[0] == '\0'
> + || svn_dirent_is_absolute(item->target_dir)
I think you should also leave the '/' check as a '/style/path' on Windows is not absolute, but also not completely relative.
Bert
> || svn_path_is_backpath_present(item->target_dir))
> return svn_error_createf
> (SVN_ERR_CLIENT_INVALID_EXTERNALS_DESCRIPTION, NULL,
RE: svn commit: r1210913 - in /subversion/trunk/subversion: libsvn_wc/externals.c tests/cmdline/externals_tests.py tests/cmdline/prop_tests.py tests/cmdline/svntest/actions.py
Posted by Bert Huijben <be...@qqmail.nl>.
> -----Original Message-----
> From: philip@apache.org [mailto:philip@apache.org]
> Sent: dinsdag 6 december 2011 14:46
> To: commits@subversion.apache.org
> Subject: svn commit: r1210913 - in /subversion/trunk/subversion:
> libsvn_wc/externals.c tests/cmdline/externals_tests.py
> tests/cmdline/prop_tests.py tests/cmdline/svntest/actions.py
>
> Author: philip
> Date: Tue Dec 6 13:46:21 2011
> New Revision: 1210913
>
> URL: http://svn.apache.org/viewvc?rev=1210913&view=rev
> Log:
> Fix issue 4073, assert on Windows for abspath in svn:externals.
>
> * subversion/libsvn_wc/externals.c
> (svn_wc_parse_externals_description3): Use platform-specific abspath
> check.
>
> * subversion/tests/cmdline/svntest/actions.py
> (set_prop): Rename parameter, verify that expected error occurs.
>
> * subversion/tests/cmdline/externals_tests.py
> (set_externals_for_path_expect_error): Tweak for renamed parameter.
> (disallow_dot_or_dotdot_directory_reference): Add issue 4073 case.
>
> * subversion/tests/cmdline/prop_tests.py
> (prop_value_conversions): Adjust expected error so that it matches.
>
> Modified:
> subversion/trunk/subversion/libsvn_wc/externals.c
> subversion/trunk/subversion/tests/cmdline/externals_tests.py
> subversion/trunk/subversion/tests/cmdline/prop_tests.py
> subversion/trunk/subversion/tests/cmdline/svntest/actions.py
>
> Modified: subversion/trunk/subversion/libsvn_wc/externals.c
> URL:
> http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_wc/exte
> rnals.c?rev=1210913&r1=1210912&r2=1210913&view=diff
> ==========================================================
> ====================
> --- subversion/trunk/subversion/libsvn_wc/externals.c (original)
> +++ subversion/trunk/subversion/libsvn_wc/externals.c Tue Dec 6 13:46:21
> 2011
> @@ -300,7 +300,8 @@ svn_wc_parse_externals_description3(apr_
>
> item->target_dir = svn_dirent_internal_style(item->target_dir, pool);
>
> - if (item->target_dir[0] == '\0' || item->target_dir[0] == '/'
> + if (item->target_dir[0] == '\0'
> + || svn_dirent_is_absolute(item->target_dir)
I think you should also leave the '/' check as a '/style/path' on Windows is not absolute, but also not completely relative.
Bert
> || svn_path_is_backpath_present(item->target_dir))
> return svn_error_createf
> (SVN_ERR_CLIENT_INVALID_EXTERNALS_DESCRIPTION, NULL,