[Python-Dev] New work-in-progress bisection tool for the Python test suite (in regrtest) (original) (raw)
Nick Coghlan ncoghlan at gmail.com
Tue Jul 4 10:27:34 EDT 2017
- Previous message (by thread): [Python-Dev] New work-in-progress bisection tool for the Python test suite (in regrtest)
- Next message (by thread): [Python-Dev] New work-in-progress bisection tool for the Python test suite (in regrtest)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 4 July 2017 at 22:10, Victor Stinner <victor.stinner at gmail.com> wrote:
2017-07-04 13:22 GMT+02:00 Nick Coghlan <ncoghlan at gmail.com>:
That means if test.bisect is shadowing the top level bisect module when backported, it suggests that the test.regrtest directory is ending up on sys.path for the affected test run (e.g. because the tests were run as "python Lib/test/regrtest.py" rather than via the -m switch). I don't think that Lib/test/ is in sys.path. It's more subtle than test. When you run "./python -m test testbisect", Lib/test/regrtest.py imports "test.testbisect", and so testbisect is imported with package=['test']. With testbisect.package=['test'], "import bisect" in Lib/test/testbisect.py imports Lib/test/bisect.py.
Right, for test_bisect specifically, the implicit relative import problem applies, and "from future import absolute_import" is the relevant fix.
That concern just doesn't apply to the stdlib modules doing a normal top-level "import bisect".
The question is more when Lib/multiprocessing/heap.py got Lib/test/bisect.py instead of Lib/bisect.py. I didn't dig into this issue. The Python 2 import machinery blows my mind :-)
This is the case that I think is due to "Lib/test" being on sys.path when the tests are run:
$ ./python -i Lib/test/regrtest.py --help
[snip output]
>>> _import sys_
>>> _sys.path[0]_
'/home/ncoghlan/devel/py27/Lib/test'
Using test_urllib2 as the example:
$ touch Lib/test/bisect.py
$ ./python -m test.regrtest test_urllib2
Run tests sequentially
0:00:00 [1/1] test_urllib2
1 test OK.
Total duration: 800 ms
Tests result: SUCCESS
$ ./python Lib/test/regrtest.py test_urllib2
Run tests sequentially
0:00:00 [1/1] test_urllib2
Warning -- os.environ was modified by test_urllib2
[snip output]
test test_urllib2 failed -- multiple errors occurred; run in verbose
mode for details
1 test failed:
test_urllib2
Total duration: 107 ms
Tests result: FAILURE
Cheers, Nick.
-- Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
- Previous message (by thread): [Python-Dev] New work-in-progress bisection tool for the Python test suite (in regrtest)
- Next message (by thread): [Python-Dev] New work-in-progress bisection tool for the Python test suite (in regrtest)
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]