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, Martin _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com