Re: cwm uripath.py bug

On second thought, the code needed another if case.  Added a test case to
exercise:

 refTo("http://example/x/abc.efg", "http://example/x/")

should return

 "./"

which it now does (in the context of below, that would have caused Python
to barf; the original 'fix' would have returned an empty string).

On 3 Apr 2003, Dan Connolly wrote:
> nice work; I'm reviewing the work, but it's hard for
> me to think about it wihout seeing the test case.
>
> Did you add a unit test to be sure we don't break this in the
> future? I don't see one.
>
>  test-before-you-code
>  http://www.w3.org/2000/10/swap/test/README
>  -> http://www.extremeprogramming.org/rules/testfirst.html
>
> On Thu, 2003-04-03 at 16:08, Ryan Lee wrote:
> > http://dev.w3.org/cvsweb/2000/10/swap/uripath.py
> >
> > A while loop at line 194 increments a string index past the end of the
> > shortest string (contrary to the comments) in the case where refTo(base,
> > uri) is comparing uneven length strings.  If uri is shorter, then code
> > like uri[i] on line 217 will complain about the index being out of bounds
> > (whereas code using splicing like line 208 will just ignore the problem).
> >
> > Fixed by checking that i<len(uri) in line 217, which I think is correct:
> > if base and uri match for the whole length of uri, then it will take some
> > number of '../' to get to uri from base, with no other trailing
> > characters (the else case).
> >
> > Passes uripath.py tests, Python no longer barfs on what I run it on -
> > checked in change.
>
>

-- 
Ryan Lee
ryanlee@w3.org

Received on Thursday, 3 April 2003 17:35:58 UTC