Skip to content

conftest is updated #260

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
200 changes: 100 additions & 100 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -338,6 +338,7 @@ def helper__build_test_id(item: pytest.Function) -> str:

g_error_msg_count_key = pytest.StashKey[int]()
g_warning_msg_count_key = pytest.StashKey[int]()
g_critical_msg_count_key = pytest.StashKey[int]()

# /////////////////////////////////////////////////////////////////////////////

Expand Down Expand Up @@ -413,10 +414,17 @@ def helper__makereport__call(
assert type(outcome) == pluggy.Result # noqa: E721

# --------
item_error_msg_count = item.stash.get(g_error_msg_count_key, 0)
assert type(item_error_msg_count) == int # noqa: E721
assert item_error_msg_count >= 0
item_error_msg_count1 = item.stash.get(g_error_msg_count_key, 0)
assert type(item_error_msg_count1) == int # noqa: E721
assert item_error_msg_count1 >= 0

item_error_msg_count2 = item.stash.get(g_critical_msg_count_key, 0)
assert type(item_error_msg_count2) == int # noqa: E721
assert item_error_msg_count2 >= 0

item_error_msg_count = item_error_msg_count1 + item_error_msg_count2

# --------
item_warning_msg_count = item.stash.get(g_warning_msg_count_key, 0)
assert type(item_warning_msg_count) == int # noqa: E721
assert item_warning_msg_count >= 0
Expand Down Expand Up @@ -600,103 +608,87 @@ def pytest_runtest_makereport(item: pytest.Function, call: pytest.CallInfo):
# /////////////////////////////////////////////////////////////////////////////


class LogErrorWrapper2:
class LogWrapper2:
_old_method: any
_counter: typing.Optional[int]
_err_counter: typing.Optional[int]
_warn_counter: typing.Optional[int]

_critical_counter: typing.Optional[int]

# --------------------------------------------------------------------
def __init__(self):
self._old_method = None
self._counter = None
self._err_counter = None
self._warn_counter = None

self._critical_counter = None

# --------------------------------------------------------------------
def __enter__(self):
assert self._old_method is None
assert self._counter is None

self._old_method = logging.error
self._counter = 0

logging.error = self
return self

# --------------------------------------------------------------------
def __exit__(self, exc_type, exc_val, exc_tb):
assert self._old_method is not None
assert self._counter is not None

assert logging.error is self

logging.error = self._old_method

self._old_method = None
self._counter = None
return False

# --------------------------------------------------------------------
def __call__(self, *args, **kwargs):
assert self._old_method is not None
assert self._counter is not None

assert type(self._counter) == int # noqa: E721
assert self._counter >= 0

r = self._old_method(*args, **kwargs)

self._counter += 1
assert self._counter > 0

return r


# /////////////////////////////////////////////////////////////////////////////
assert self._err_counter is None
assert self._warn_counter is None

assert self._critical_counter is None

class LogWarningWrapper2:
_old_method: any
_counter: typing.Optional[int]
assert logging.root is not None
assert isinstance(logging.root, logging.RootLogger)

# --------------------------------------------------------------------
def __init__(self):
self._old_method = None
self._counter = None
self._old_method = logging.root.handle
self._err_counter = 0
self._warn_counter = 0

# --------------------------------------------------------------------
def __enter__(self):
assert self._old_method is None
assert self._counter is None
self._critical_counter = 0

self._old_method = logging.warning
self._counter = 0

logging.warning = self
logging.root.handle = self
return self

# --------------------------------------------------------------------
def __exit__(self, exc_type, exc_val, exc_tb):
assert self._old_method is not None
assert self._counter is not None
assert self._err_counter is not None
assert self._warn_counter is not None

assert logging.root is not None
assert isinstance(logging.root, logging.RootLogger)

assert logging.warning is self
assert logging.root.handle is self

logging.warning = self._old_method
logging.root.handle = self._old_method

self._old_method = None
self._counter = None
self._err_counter = None
self._warn_counter = None
self._critical_counter = None
return False

# --------------------------------------------------------------------
def __call__(self, *args, **kwargs):
def __call__(self, record: logging.LogRecord):
assert record is not None
assert isinstance(record, logging.LogRecord)
assert self._old_method is not None
assert self._counter is not None

assert type(self._counter) == int # noqa: E721
assert self._counter >= 0

r = self._old_method(*args, **kwargs)

self._counter += 1
assert self._counter > 0
assert self._err_counter is not None
assert self._warn_counter is not None
assert self._critical_counter is not None

assert type(self._err_counter) == int # noqa: E721
assert self._err_counter >= 0
assert type(self._warn_counter) == int # noqa: E721
assert self._warn_counter >= 0
assert type(self._critical_counter) == int # noqa: E721
assert self._critical_counter >= 0

r = self._old_method(record)

if record.levelno == logging.ERROR:
self._err_counter += 1
assert self._err_counter > 0
elif record.levelno == logging.WARNING:
self._warn_counter += 1
assert self._warn_counter > 0
elif record.levelno == logging.CRITICAL:
self._critical_counter += 1
assert self._critical_counter > 0

return r

Expand All @@ -717,6 +709,13 @@ def pytest_pyfunc_call(pyfuncitem: pytest.Function):
assert pyfuncitem is not None
assert isinstance(pyfuncitem, pytest.Function)

assert logging.root is not None
assert isinstance(logging.root, logging.RootLogger)
assert logging.root.handle is not None

debug__log_handle_method = logging.root.handle
assert debug__log_handle_method is not None

debug__log_error_method = logging.error
assert debug__log_error_method is not None

Expand All @@ -725,55 +724,56 @@ def pytest_pyfunc_call(pyfuncitem: pytest.Function):

pyfuncitem.stash[g_error_msg_count_key] = 0
pyfuncitem.stash[g_warning_msg_count_key] = 0
pyfuncitem.stash[g_critical_msg_count_key] = 0

try:
with LogErrorWrapper2() as logErrorWrapper, LogWarningWrapper2() as logWarningWrapper:
assert type(logErrorWrapper) == LogErrorWrapper2 # noqa: E721
assert logErrorWrapper._old_method is not None
assert type(logErrorWrapper._counter) == int # noqa: E721
assert logErrorWrapper._counter == 0
assert logging.error is logErrorWrapper

assert type(logWarningWrapper) == LogWarningWrapper2 # noqa: E721
assert logWarningWrapper._old_method is not None
assert type(logWarningWrapper._counter) == int # noqa: E721
assert logWarningWrapper._counter == 0
assert logging.warning is logWarningWrapper
with LogWrapper2() as logWrapper:
assert type(logWrapper) == LogWrapper2 # noqa: E721
assert logWrapper._old_method is not None
assert type(logWrapper._err_counter) == int # noqa: E721
assert logWrapper._err_counter == 0
assert type(logWrapper._warn_counter) == int # noqa: E721
assert logWrapper._warn_counter == 0
assert type(logWrapper._critical_counter) == int # noqa: E721
assert logWrapper._critical_counter == 0
assert logging.root.handle is logWrapper

r: pluggy.Result = yield

assert r is not None
assert type(r) == pluggy.Result # noqa: E721

assert logErrorWrapper._old_method is not None
assert type(logErrorWrapper._counter) == int # noqa: E721
assert logErrorWrapper._counter >= 0
assert logging.error is logErrorWrapper

assert logWarningWrapper._old_method is not None
assert type(logWarningWrapper._counter) == int # noqa: E721
assert logWarningWrapper._counter >= 0
assert logging.warning is logWarningWrapper
assert logWrapper._old_method is not None
assert type(logWrapper._err_counter) == int # noqa: E721
assert logWrapper._err_counter >= 0
assert type(logWrapper._warn_counter) == int # noqa: E721
assert logWrapper._warn_counter >= 0
assert type(logWrapper._critical_counter) == int # noqa: E721
assert logWrapper._critical_counter >= 0
assert logging.root.handle is logWrapper

assert g_error_msg_count_key in pyfuncitem.stash
assert g_warning_msg_count_key in pyfuncitem.stash
assert g_critical_msg_count_key in pyfuncitem.stash

assert pyfuncitem.stash[g_error_msg_count_key] == 0
assert pyfuncitem.stash[g_warning_msg_count_key] == 0
assert pyfuncitem.stash[g_critical_msg_count_key] == 0

pyfuncitem.stash[g_error_msg_count_key] = logErrorWrapper._counter
pyfuncitem.stash[g_warning_msg_count_key] = logWarningWrapper._counter
pyfuncitem.stash[g_error_msg_count_key] = logWrapper._err_counter
pyfuncitem.stash[g_warning_msg_count_key] = logWrapper._warn_counter
pyfuncitem.stash[g_critical_msg_count_key] = logWrapper._critical_counter

if r.exception is not None:
pass
elif logErrorWrapper._counter == 0:
pass
else:
assert logErrorWrapper._counter > 0
elif logWrapper._err_counter > 0:
r.force_exception(SIGNAL_EXCEPTION())
elif logWrapper._critical_counter > 0:
r.force_exception(SIGNAL_EXCEPTION())
finally:
assert logging.error is debug__log_error_method
assert logging.warning is debug__log_warning_method
assert logging.root.handle == debug__log_handle_method
pass


Expand Down