Don't crash with --pyargs and a filename that looks like a modu… (#5503)

Don't crash with --pyargs and a filename that looks like a module
This commit is contained in:
Bruno Oliveira 2019-06-27 13:53:02 -03:00 committed by GitHub
commit 65fbdf2568
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 10 additions and 1 deletions

View File

@ -631,7 +631,10 @@ class Session(nodes.FSCollector):
"""Convert a dotted module name to path."""
try:
spec = importlib.util.find_spec(x)
except (ValueError, ImportError):
# AttributeError: looks like package module, but actually filename
# ImportError: module does not exist
# ValueError: not a module name
except (AttributeError, ImportError, ValueError):
return x
if spec is None or spec.origin in {None, "namespace"}:
return x

View File

@ -646,6 +646,12 @@ class TestInvocationVariants:
# should only configure once
assert result.outlines.count("configuring") == 1
def test_pyargs_filename_looks_like_module(self, testdir):
testdir.tmpdir.join("conftest.py").ensure()
testdir.tmpdir.join("t.py").write("def test(): pass")
result = testdir.runpytest("--pyargs", "t.py")
assert result.ret == ExitCode.OK
def test_cmdline_python_package(self, testdir, monkeypatch):
import warnings