summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorptmcg <ptmcg@austin.rr.com>2023-03-07 15:04:15 -0600
committerptmcg <ptmcg@austin.rr.com>2023-03-07 15:04:15 -0600
commit1f8fe38eb87da9b825f871f4b11ab8b0092db6d6 (patch)
treea640dec08aa251d8e6048af88d235e1b0e638ff0
parent15a7a5ce417c8f9b8dd37f4ba0ac3a8897b8f707 (diff)
downloadpyparsing-git-1f8fe38eb87da9b825f871f4b11ab8b0092db6d6.tar.gz
Fix detection of debugging to suppress creation of tmpXXXX.html files during railroad diagram tests
-rw-r--r--tests/test_diagram.py59
1 files changed, 47 insertions, 12 deletions
diff --git a/tests/test_diagram.py b/tests/test_diagram.py
index f81dcbc..6b70c16 100644
--- a/tests/test_diagram.py
+++ b/tests/test_diagram.py
@@ -19,21 +19,50 @@ print(sys.version_info)
curdir = Path(__file__).parent
-class TestRailroadDiagrams(unittest.TestCase):
- def railroad_debug(self) -> bool:
- """
- Returns True if we're in debug mode (determined by either setting
- environment var, or running in a debugger which sets sys.settrace)
- """
- return os.environ.get("RAILROAD_DEBUG", False) or sys.gettrace()
+def is_run_with_coverage():
+ """Check whether test is run with coverage.
+ From https://stackoverflow.com/a/69812849/165216
+ """
+ gettrace = getattr(sys, "gettrace", None)
+
+ if gettrace is None:
+ return False
+ else:
+ gettrace_result = gettrace()
+
+ try:
+ from coverage.pytracer import PyTracer
+ from coverage.tracer import CTracer
+
+ if isinstance(gettrace_result, (CTracer, PyTracer)):
+ return True
+ except ImportError:
+ pass
+ return False
+
+
+def running_in_debug() -> bool:
+ """
+ Returns True if we're in debug mode (determined by either setting
+ environment var, or running in a debugger which sets sys.settrace)
+ """
+ return (
+ os.environ.get("RAILROAD_DEBUG", False)
+ or sys.gettrace()
+ and not is_run_with_coverage()
+ )
+
+
+class TestRailroadDiagrams(unittest.TestCase):
def get_temp(self):
"""
Returns an appropriate temporary file for writing a railroad diagram
"""
+ delete_on_close = not running_in_debug()
return tempfile.NamedTemporaryFile(
dir=".",
- delete=not self.railroad_debug(),
+ delete=delete_on_close,
mode="w",
encoding="utf-8",
suffix=".html",
@@ -47,7 +76,7 @@ class TestRailroadDiagrams(unittest.TestCase):
"""
with self.get_temp() as temp:
railroad = to_railroad(expr, show_results_names=show_results_names)
- # temp.write(railroad_to_html(railroad))
+ temp.write(railroad_to_html(railroad))
if self.railroad_debug() or True:
print(f"{label}: {temp.name}")
@@ -69,13 +98,19 @@ class TestRailroadDiagrams(unittest.TestCase):
for line in diag_html.splitlines():
if 'h1 class="railroad-heading"' in line:
print(line)
- assert len(railroad) == expected_rr_len, f"expected {expected_rr_len}, got {len(railroad)}"
+ assert (
+ len(railroad) == expected_rr_len
+ ), f"expected {expected_rr_len}, got {len(railroad)}"
with self.subTest(f"{label}: test rr diag with results names"):
- railroad = self.generate_railroad(example_expr, example_expr, show_results_names=True)
+ railroad = self.generate_railroad(
+ example_expr, example_expr, show_results_names=True
+ )
if len(railroad) != expected_rr_len:
print(railroad_to_html(railroad))
- assert len(railroad) == expected_rr_len, f"expected {expected_rr_len}, got {len(railroad)}"
+ assert (
+ len(railroad) == expected_rr_len
+ ), f"expected {expected_rr_len}, got {len(railroad)}"
def test_nested_forward_with_inner_and_outer_names(self):
outer = pp.Forward().setName("outer")