This is an automated email from the ASF dual-hosted git repository.

jdanek pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/qpid-dispatch.git

commit 115aa6237e39e88c271cfcb2c9d1d39d614071d0
Author: Jiri DanÄ›k <[email protected]>
AuthorDate: Sun Jan 30 18:04:12 2022 +0100

    DISPATCH-2323 Add Pytest-compatible logging displayed on test failure
---
 tests/system_test.py | 18 ++++++++++++------
 tests/tox.ini.in     |  3 +++
 2 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/tests/system_test.py b/tests/system_test.py
index 46a7eb5..432a0d2 100755
--- a/tests/system_test.py
+++ b/tests/system_test.py
@@ -28,7 +28,8 @@ Features:
 - Sundry other tools.
 """
 
-from typing import Callable
+import logging
+from typing import Callable, List, Optional, Tuple
 
 import errno
 import sys
@@ -1406,19 +1407,22 @@ class Logger:
     """
     Record an event log for a self test.
     May print per-event or save events to be printed later.
+    Pytest will automatically collect the logs and will dump them for a failed 
test
     Optional file opened in 'append' mode to which each log line is written.
     """
 
     def __init__(self,
-                 title="Logger",
-                 print_to_console=False,
-                 save_for_dump=True,
-                 ofilename=None):
+                 title: str = "Logger",
+                 print_to_console: bool = False,
+                 save_for_dump: bool = True,
+                 python_log_level: Optional[int] = logging.DEBUG,
+                 ofilename: Optional[str] = None) -> None:
         self.title = title
         self.print_to_console = print_to_console
         self.save_for_dump = save_for_dump
-        self.logs = []
+        self.python_log_level = python_log_level
         self.ofilename = ofilename
+        self.logs: List[Tuple[Timestamp, str]] = []
 
     def log(self, msg):
         ts = Timestamp()
@@ -1427,6 +1431,8 @@ class Logger:
         if self.print_to_console:
             print("%s %s" % (ts, msg))
             sys.stdout.flush()
+        if self.python_log_level is not None:
+            logging.log(self.python_log_level, f"{ts} {self.title}: {msg}")
         if self.ofilename is not None:
             with open(self.ofilename, 'a') as f_out:
                 f_out.write("%s %s\n" % (ts, msg))
diff --git a/tests/tox.ini.in b/tests/tox.ini.in
index 7f9c91c..96786c2 100644
--- a/tests/tox.ini.in
+++ b/tests/tox.ini.in
@@ -149,6 +149,9 @@ exclude =
 # do not filter test file names
 python_files = *.py
 
+# 
https://docs.pytest.org/en/6.2.x/logging.html#incompatible-changes-in-pytest-3-4
+log_level = DEBUG
+
 # pylint
 [MESSAGE_CONTROL]
 disable =

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to