You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
On Windows, when trying to import from Python's test module, collection seems to hang because assertion rewriting kicks in and the __pycache__ folder isn't writable.
With a file like:
fromtestimporttest_filedeftest_foo():
pass
I get a hang. When pressing ctrl-c, I get a big stacktrace, with the relevant part probably being:
PS C:\Users\Florian\proj> pytest .\test_file.py --fulltrace -v
============================= test session starts =============================
platform win32 -- Python 3.6.5, pytest-3.6.2, py-1.5.3, pluggy-0.6.0 -- c:\program files\python36\python.exe
cachedir: .pytest_cache
rootdir: C:\Users\Florian\proj, inifile:
collecting 0 items
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! KeyboardInterrupt !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
name = 'test.test_file', path = ['c:\\program files\\python36\\lib\\test']
target = None
> ???
E AttributeError: 'AssertionRewritingHook' object has no attribute 'find_spec'
<frozen importlib._bootstrap>:888: AttributeError
During handling of the above exception, another exception occurred:
dir = 'c:\\program files\\python36\\lib\\test\\__pycache__', pre = 'tmp'
suf = '', flags = 34050, output_type = <class 'str'>
def _mkstemp_inner(dir, pre, suf, flags, output_type):
"""Code common to mkstemp, TemporaryFile, and NamedTemporaryFile."""
names = _get_candidate_names()
if output_type is bytes:
names = map(_os.fsencode, names)
for seq in range(TMP_MAX):
name = next(names)
file = _os.path.join(dir, pre + name + suf)
try:
> fd = _os.open(file, flags, 0o600)
E PermissionError: [Errno 13] Permission denied: 'c:\\program files\\python36\\lib\\test\\__pycache__\\tmppnxn1ld2'
c:\program files\python36\lib\tempfile.py:260: PermissionError
During handling of the above exception, another exception occurred:
[...]
c:\program files\python36\lib\site-packages\_pytest\assertion\rewrite.py:146:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
state = <_pytest.assertion.AssertionState object at 0x00000273A3FBA400>
co = <code object <module> at 0x00000273A446C030, file "c:\program files\python36\lib\test\test_file.py", line 1>
source_stat = <py._path.local.Stat object at 0x00000273A4458358>
pyc = 'c:\\program files\\python36\\lib\\test\\__pycache__\\test_file.cpython-36-PYTEST.pyc'
def _write_pyc(state, co, source_stat, pyc):
# Technically, we don't have to have the same pyc format as
# (C)Python, since these "pycs" should never be seen by builtin
# import. However, there's little reason deviate, and I hope
# sometime to be able to use imp.load_compiled to load them. (See
# the comment in load_module above.)
try:
> with atomicwrites.atomic_write(pyc, mode="wb", overwrite=True) as fp:
c:\program files\python36\lib\site-packages\_pytest\assertion\rewrite.py:265:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
[...]
c:\program files\python36\lib\tempfile.py:549:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
dir = 'c:\\program files\\python36\\lib\\test\\__pycache__', pre = 'tmp'
suf = '', flags = 34050, output_type = <class 'str'>
def _mkstemp_inner(dir, pre, suf, flags, output_type):
"""Code common to mkstemp, TemporaryFile, and NamedTemporaryFile."""
names = _get_candidate_names()
if output_type is bytes:
names = map(_os.fsencode, names)
for seq in range(TMP_MAX):
name = next(names)
file = _os.path.join(dir, pre + name + suf)
try:
fd = _os.open(file, flags, 0o600)
except FileExistsError:
continue # try again
except PermissionError:
# This exception is thrown when a directory with the chosen name
# already exists on windows.
> if (_os.name == 'nt' and _os.path.isdir(dir) and
_os.access(dir, _os.W_OK)):
E KeyboardInterrupt
c:\program files\python36\lib\tempfile.py:266: KeyboardInterrupt
======================== no tests ran in 7.18 seconds =========================
Note the name of the import doesn't make a difference, i.e. when I do import test_file as tf I get the same issue.
Is there some way I can disable assertion rewriting for that module in the meantime, essentially the opposite of pytest.register_assert_rewrite?
The text was updated successfully, but these errors were encountered:
GitMate.io thinks possibly related issues are #242 (Error while importing overrided module), #2992 (Already imported module), #2022 (pexpect tests hang on macOS), #2023 (subprocess tests hang), and #2296 (unique basename for your test file modules).
The-Compiler
added a commit
to qutebrowser/qutebrowser
that referenced
this issue
Jul 3, 2018
On Windows, when trying to import from Python's
test
module, collection seems to hang because assertion rewriting kicks in and the__pycache__
folder isn't writable.With a file like:
I get a hang. When pressing ctrl-c, I get a big stacktrace, with the relevant part probably being:
Note the name of the import doesn't make a difference, i.e. when I do
import test_file as tf
I get the same issue.Is there some way I can disable assertion rewriting for that module in the meantime, essentially the opposite of
pytest.register_assert_rewrite
?The text was updated successfully, but these errors were encountered: