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,