fix recursion within import hook and source.decode in particular
This commit is contained in:
parent
c5f9958783
commit
05c4ecf892
|
@ -215,11 +215,17 @@ def _rewrite_test(state, fn):
|
||||||
if (not source.startswith(BOM_UTF8) and
|
if (not source.startswith(BOM_UTF8) and
|
||||||
(not cookie_re.match(source[0:end1]) or
|
(not cookie_re.match(source[0:end1]) or
|
||||||
not cookie_re.match(source[end1:end2]))):
|
not cookie_re.match(source[end1:end2]))):
|
||||||
|
if hasattr(state, "_indecode"):
|
||||||
|
return None # encodings imported us again, we don't rewrite
|
||||||
|
state._indecode = True
|
||||||
|
try:
|
||||||
try:
|
try:
|
||||||
source.decode("ascii")
|
source.decode("ascii")
|
||||||
except UnicodeDecodeError:
|
except UnicodeDecodeError:
|
||||||
# Let it fail in real import.
|
# Let it fail in real import.
|
||||||
return None
|
return None
|
||||||
|
finally:
|
||||||
|
del state._indecode
|
||||||
# On Python versions which are not 2.7 and less than or equal to 3.1, the
|
# On Python versions which are not 2.7 and less than or equal to 3.1, the
|
||||||
# parser expects *nix newlines.
|
# parser expects *nix newlines.
|
||||||
if REWRITE_NEWLINES:
|
if REWRITE_NEWLINES:
|
||||||
|
|
|
@ -320,3 +320,17 @@ def test_warn_missing(testdir):
|
||||||
result.stderr.fnmatch_lines([
|
result.stderr.fnmatch_lines([
|
||||||
"*WARNING*assert statements are not executed*",
|
"*WARNING*assert statements are not executed*",
|
||||||
])
|
])
|
||||||
|
|
||||||
|
def test_recursion_source_decode(testdir):
|
||||||
|
testdir.makepyfile("""
|
||||||
|
def test_something():
|
||||||
|
pass
|
||||||
|
""")
|
||||||
|
testdir.makeini("""
|
||||||
|
[pytest]
|
||||||
|
python_files = *.py
|
||||||
|
""")
|
||||||
|
result = testdir.runpytest("--collectonly")
|
||||||
|
result.stdout.fnmatch_lines("""
|
||||||
|
<Module*>
|
||||||
|
""")
|
||||||
|
|
Loading…
Reference in New Issue