Merge pull request #1844 from nicoddemus/importer-error
Importer loader error
This commit is contained in:
commit
d99ceb1218
1
AUTHORS
1
AUTHORS
|
@ -80,6 +80,7 @@ Lukas Bednar
|
||||||
Maciek Fijalkowski
|
Maciek Fijalkowski
|
||||||
Maho
|
Maho
|
||||||
Marc Schlaich
|
Marc Schlaich
|
||||||
|
Marcin Bachry
|
||||||
Mark Abramowitz
|
Mark Abramowitz
|
||||||
Markus Unterwaditzer
|
Markus Unterwaditzer
|
||||||
Martijn Faassen
|
Martijn Faassen
|
||||||
|
|
|
@ -6,11 +6,15 @@
|
||||||
|
|
||||||
*
|
*
|
||||||
|
|
||||||
|
* Fix loader error when running ``pytest`` embedded in a zipfile.
|
||||||
|
Thanks `@mbachry`_ for the PR.
|
||||||
|
|
||||||
*
|
*
|
||||||
|
|
||||||
*
|
*
|
||||||
|
|
||||||
|
|
||||||
|
.. _@mbachry: https://github.com/mbachry
|
||||||
|
|
||||||
.. _#1822: https://github.com/pytest-dev/pytest/issues/1822
|
.. _#1822: https://github.com/pytest-dev/pytest/issues/1822
|
||||||
|
|
||||||
|
|
|
@ -687,7 +687,7 @@ class Session(FSCollector):
|
||||||
# This method is sometimes invoked when AssertionRewritingHook, which
|
# This method is sometimes invoked when AssertionRewritingHook, which
|
||||||
# does not define a get_filename method, is already in place:
|
# does not define a get_filename method, is already in place:
|
||||||
try:
|
try:
|
||||||
path = loader.get_filename()
|
path = loader.get_filename(x)
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
# Retrieve path from AssertionRewritingHook:
|
# Retrieve path from AssertionRewritingHook:
|
||||||
path = loader.modules[x][0].co_filename
|
path = loader.modules[x][0].co_filename
|
||||||
|
|
|
@ -763,3 +763,21 @@ class TestDurationWithFixture:
|
||||||
* call *test_1*
|
* call *test_1*
|
||||||
""")
|
""")
|
||||||
|
|
||||||
|
|
||||||
|
def test_zipimport_hook(testdir, tmpdir):
|
||||||
|
"""Test package loader is being used correctly (see #1837)."""
|
||||||
|
zipapp = pytest.importorskip('zipapp')
|
||||||
|
testdir.tmpdir.join('app').ensure(dir=1)
|
||||||
|
testdir.makepyfile(**{
|
||||||
|
'app/foo.py': """
|
||||||
|
import pytest
|
||||||
|
def main():
|
||||||
|
pytest.main(['--pyarg', 'foo'])
|
||||||
|
""",
|
||||||
|
})
|
||||||
|
target = tmpdir.join('foo.zip')
|
||||||
|
zipapp.create_archive(str(testdir.tmpdir.join('app')), str(target), main='foo:main')
|
||||||
|
result = testdir.runpython(target)
|
||||||
|
assert result.ret == 0
|
||||||
|
result.stderr.fnmatch_lines(['*not found*foo*'])
|
||||||
|
assert 'INTERNALERROR>' not in result.stdout.str()
|
||||||
|
|
Loading…
Reference in New Issue