Fail selftest if anything is written to stderr
authorJeremy Stanley <fungi@yuggoth.org>
Sun, 15 Aug 2021 15:16:07 +0000 (15:16 +0000)
committerJeremy Stanley <fungi@yuggoth.org>
Sun, 15 Aug 2021 15:58:26 +0000 (15:58 +0000)
The new ResourceWarning exceptions in Python 3.8 are ignored since
they're raised during garbage collection, which makes them easy to
miss even with PYTHONWARNINGS=error in our testing. Luckily, their
tracebacks are written to stderr, and we normally expect nothing
will be written to stderr on successful runs of the selftest script.
As a simple solution to avoid similar situations in the future,
cause the selftest run to fail if anything at all gets written to
the service's stderr.

mudpy/tests/selftest.py

index c0bfc3c..f8caf35 100644 (file)
@@ -519,6 +519,13 @@ def stop_service(service):
     with open("capture_stderr.log", "w") as serviceerr:
         serviceerr.write(stderr.decode("utf-8"))
 
+    # Error if anything was written on stderr as this may indicate ignored
+    # exceptions (e.g. ResourceWarning during garbage collection)
+    if stderr:
+        tlog("\nERROR: something was written to stderr, see "
+             "capture_stderr.log for details.")
+        success = False
+
     return success