[Python-Dev] Testsuite fails on Windows if a space is in the path
Steve Holden
steve at holdenweb.com
Sat Sep 16 20:41:42 CEST 2006
Martin v. Löwis wrote:
> The test suite currently (2.5) has two failures on Windows
> if Python is installed into a directory with a space in it
> (such as "Program Files"). The failing tests are test_popen
> and test_cmd_line.
>
> The test_cmd_line failure is shallow: the test fails to properly
> quote sys.executable when passing it to os.popen. I propose to
> fix this in Python 2.5.1; see #1559413
>
> test_popen is more tricky. This code has always failed AFAICT,
> except that the test itself is a recent addition. The test tries
> to pass the following command to os.popen
>
> "c:\Program Files\python25\python.exe" -c "import sys;print sys.version"
>
> For some reason, os.popen invokes doesn't directly start Python as
> a new process, but install invokes
>
> cmd.exe /c "c:\Program Files\python25\python.exe" -c "import sys;print
> sys.version"
>
> Can somebody remember what the reason is to invoke cmd.exe (or COMSPEC)
> in os.popen?
>
> In any case, cmd.exe fails to execute this, claiming that c:\Program
> is not a valid executable. It would run
>
> cmd.exe /c "c:\Program Files\python25\python.exe"
>
> just fine, so apparently, the problem is with argument that have
> multiple pairs of quotes. I found, through experimentation, that it
> *will* accept
>
> cmd.exe /c ""c:\Program Files\python25\python.exe" -c "import sys;print
> sys.version""
>
> (i.e. doubling the quotes at the beginning and the end). I'm not quite
> sure what algorithm cmd.exe uses for parsing, but it appears that
> adding a pair of quotes works in all cases (at least those I could think
> of). See # 1559298
>
> Here are my questions:
> 1. Should this be fixed before the final release of Python 2.5?
> 2. If not, should it be fixed in Python 2.5.1? I'd say not: there
> is a potential of breaking existing applications. Applications
> might be aware of this mess, and deliberately add a pair of
> quotes already. If popen then adds yet another pair of quotes,
> cmd.exe will again fail.
> 3. If not, should this be fixed in 2.6 in the way I propose in
> the patch (i.e. add quotes around the command line)?
> Or can anybody propose a different fix?
> 4. How should we deal with different values of COMSPEC? Should
> this patch only apply for cmd.exe, or should we assume that
> other shells are quirk-compatible with cmd.exe in this
> respect (or that people stopped setting COMSPEC, anyway)?
>
> Any comments appreciated,
>
1. Because this is almost certainly Windows version-dependent I would
suggest that you definitely hold off trying to fix it for 2.5 - it would
almost certainly make another RC necessary, and even that wouldn't
guarantee the required testing (I sense that Windows versions get rather
less pre-release testing than others).
2. I agree with your opinion: anyone for whom this is an important issue
has almost certainly addressed it with their own (version-dependent)
workarounds that will break with the change.
3/4. Tricky. I don't think it would be wise to assume
quirk-compatibility across all Windows command processors. On balance I
suspect we should just alter the documentation to note that quirks int
he underlying platform may result in unexpected behavior on quoted
arguments, perhaps with an example or two.
regards
Steve
--
Steve Holden +44 150 684 7255 +1 800 494 3119
Holden Web LLC/Ltd http://www.holdenweb.com
Skype: holdenweb http://holdenweb.blogspot.com
Recent Ramblings http://del.icio.us/steve.holden
More information about the Python-Dev
mailing list