1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
from functools import partial
import gc
import os
import threading
import pytest
from . import shell
@pytest.fixture()
def tmpdir(request):
path = os.path.realpath(shell.mkdtemp())
yield path
shell.rm(path, recursive=True)
@pytest.fixture()
def p(tmpdir, *args):
"""
Convenience function to join the temporary directory path
with the provided arguments.
"""
return partial(os.path.join, tmpdir)
@pytest.fixture(autouse=True)
def no_thread_leaks():
"""
Fail on thread leak.
We do not use pytest-threadleak because it is not reliable.
"""
yield
gc.collect() # Clear the stuff from other function-level fixtures
assert threading.active_count() == 1 # Only the main thread
@pytest.fixture(autouse=True)
def no_warnings(recwarn):
"""Fail on warning."""
yield
warnings = []
for warning in recwarn: # pragma: no cover
message = str(warning.message)
filename = warning.filename
if (
"Not importing directory" in message
or "Using or importing the ABCs" in message
or "dns.hash module will be removed in future versions" in message
or ("eventlet" in filename and "eventlet" in filename)
):
continue
warnings.append("{w.filename}:{w.lineno} {w.message}".format(w=warning))
assert not warnings
|