Daniel Shahaf <danie...@apache.org> writes:

> On Wed, Sep 04, 2013 at 11:50:49PM -0400, James McCoy wrote:
>> This was with svn 1.7.9.  I haven't had a chance to test newer
>> versions, but looking through the code in trunk, it looks like it
>> would still be a problem.
>
> Confirmed, it reproduces in trunk:
>
> Index: subversion/tests/cmdline/upgrade_tests.py
> ===================================================================
> --- subversion/tests/cmdline/upgrade_tests.py   (revision 1520363)
> +++ subversion/tests/cmdline/upgrade_tests.py   (working copy)
> @@ -425,7 +425,7 @@ def simple_entries_replace(path, from_url, to_url)
>  def basic_upgrade_1_0(sbox):
>    "test upgrading a working copy created with 1.0.0"
>  
> -  sbox.build(create_wc = False)
> +  sbox.build(name='foo+', create_wc = False)
>    replace_sbox_with_tarfile(sbox, 'upgrade_1_0.tar.bz2')
>  
>    url = sbox.repo_url
>
> % ../runpytest upgrade basic_upgrade_1_0 2>&1 | head
> W: lt-svn: subversion/libsvn_subr/path.c:119: svn_path_join_internal: 
> Assertion `svn_path_is_canonical_internal(base, pool)' failed.
>
> W: CMD: /home/danielsh/src/svn/t1/subversion/svn/svn upgrade 
> 'svn-test-work/working_copies/foo+' --config-dir 
> /home/danielsh/src/svn/t1/subversion/tests/cmdline/svn-test-work/local_tmp/config
>  --password rayjandom --no-auth-cache --username jrandom terminated by signal 
> 6
>

#0  0x00007ffff72cc475 in *__GI_raise (sig=<optimized out>)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1  0x00007ffff72cf6f0 in *__GI_abort () at abort.c:92
#2  0x00007ffff72c5621 in *__GI___assert_fail (
    assertion=0x7ffff7d49210 "svn_path_is_canonical_internal(base, pool)", 
    file=<optimized out>, line=119, 
    function=0x7ffff7d498f0 "svn_path_join_internal") at assert.c:81
#3  0x00007ffff7d14a2e in svn_path_join_internal (
    base=0x7ffff3bc4bc0 
"file:///home/pm/sw/subversion/obj/subversion/tests/cmdline/svn-test-work/repositories/foo%2B/trunk",
 component=0x7ffff3bc56d0 "iota", 
    pool=0x7ffff7e3e028) at ../src/subversion/libsvn_subr/path.c:119
#4  0x00007ffff7d16770 in svn_path_url_add_component2 (
    url=0x7ffff3bc4bc0 
"file:///home/pm/sw/subversion/obj/subversion/tests/cmdline/svn-test-work/repositories/foo%2B/trunk",
 component=0x7ffff3bc56d0 "iota", 
    pool=0x7ffff7e3e028) at ../src/subversion/libsvn_subr/path.c:1085

It looks like the %2B is failing svn_uri_is_canonical.  Looking at
svn_uri__char_validity in libsvn_subr/path.c the table says that '+'
should not be % encoded.  The problem is that the Python testsuite uses
urllib.pathname2url(self.repo_dir) and that has different ideas, it
does % encode '+'.

-- 
Philip Martin | Subversion Committer
WANdisco // *Non-Stop Data*

Reply via email to