[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: Failing test basic_tests.py 29 (check that repos root gets set on checkout)

From: Branko Čibej <brane_at_apache.org>
Date: Mon, 23 Apr 2012 06:11:22 +0200

On 23.04.2012 00:00, Johan Corveleyn wrote:
> On Wed, Apr 18, 2012 at 7:49 AM, Daniel Shahaf <danielsh_at_elego.de> wrote:
>> Hyrum K Wright wrote on Tue, Apr 17, 2012 at 16:27:00 -0500:
>>> On Tue, Apr 17, 2012 at 4:05 PM, Johan Corveleyn <jcorvel_at_gmail.com> wrote:
>>>> On Tue, Apr 17, 2012 at 10:55 PM, Hyrum K Wright
>>>> <hyrum.wright_at_wandisco.com> wrote:
>>>>> On Tue, Apr 17, 2012 at 3:48 PM, Johan Corveleyn <jcorvel_at_gmail.com> wrote:
>>>>>> On Tue, Apr 17, 2012 at 10:42 AM, Philip Martin
>>>>>> <philip.martin_at_wandisco.com> wrote:
>>>>>>> Johan Corveleyn <jcorvel_at_gmail.com> writes:
>>>>>>>
>>>>>>>> Apparently, the test is comparing the 'Repository Root' from the
>>>>>>>> output of 'svn info' with the expected repository url. When I run 'svn
>>>>>>>> info' manually on ...\svn-test-work\working_copies\basic_tests-29, I
>>>>>>>> see the following:
>>>>>>>>
>>>>>>>> [[[
>>>>>>>> Path: R:\test\subversion\tests\cmdline\svn-test-work\working_copies\basic_tests-29
>>>>>>>> Working Copy Root Path:
>>>>>>>> R:\test\subversion\tests\cmdline\svn-test-work\working_copies\basic_tests-29
>>>>>>>> URL: file:///R%7C/test/subversion/tests/cmdline/svn-test-work/local_tmp/repos
>>>>>>>> Repository Root:
>>>>>>>> file:///R%7C/test/subversion/tests/cmdline/svn-test-work/local_tmp/repos
>>>>>>>> ]]]
>>>>>>>>
>>>>>>>> So the '%7C' instead of ':' seems to be the problem (BTW, %7C is the
>>>>>>>> pipe symbol, which seems quite strange here).
>>>>>>>>
>>>>>>>> When I use the same svn binary to do a new checkout of the same
>>>>>>>> repository, over file://, I don't get this problem. So that indicates
>>>>>>>> it's a problem with the test suite.
>>>>>>> tests.log should show the exact command used to do the checkout. Is it
>>>>>>> the same as the command you are running manually?
> [ snip stuff about test output (loglevel) problems, for which Hyrum,
> followed by Daniel suggested ... ]
>
>>> Run running individual tests, you can run them with
>>> --set-log-level=INFO. I do not know how this translates to
>>> win-tests.py, or if win-tests.py propagates that information to child
>>> tests.
>> Pass set_log_level=logging.DEBUG to TestHarness.__init__().
> Thanks, that helped (level INFO sufficed)
>
> So, now I see that every single file:/// url in all of basic_tests.py
> (and probably all my other tests as well) is used as
>
> "file:///R|/test/subversion/tests/cmdline..."
>
> Huh? And that even works? Yes, I just tried it manually on the commandline.
>
> I'm a bit stumped actually.

Once again ... this is intentional for compatibility with Windows
browsers. When the initial Windows port happened (some 12 years ago
IIRC), all browsers on Windows would only accept file:// URLs in this
format (Mozilla accepted the correct file:///X:/, too, but converted to
the pipe form). I can only guess at the reason why someone decided that
doing this was a good idea, but this is what Internet Explorer did,
others followed suit, and Subversion adjusted its output accordingly --
otherwise Windows users couldn't have copied svn output into a browser's
address bar.

Both svn and the test suite on Windows still use this format for file://
URLs, and IE still accepts it, although it displays local file paths as
filenames, not URLs, and it also accepts the correct format with the colon.

The test suite should account for this, so your failing test indicates a
bug in the test suite. Are you running the 1.7 tests with a 1.6 build?

Could be that in the course of 1.7 development, someone noticed that
Windows browsers now conform to published standards with regard to URL
syntax and decided to do remove the exception for file:// URLs on Windows.

-- Brane
Received on 2012-04-23 06:11:32 CEST

This is an archived mail posted to the Subversion Dev mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.