summaryrefslogtreecommitdiff
path: root/dev-python/mccabe/files/mccabe-0.7.0-fix-tests-without-hypothesmith.patch
blob: 18728fe59826c24104ce00102a6f9228eeebd14d (plain)
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
diff --git a/test_mccabe.py b/test_mccabe.py
index fe6e8d3..14d8012 100644
--- a/test_mccabe.py
+++ b/test_mccabe.py
@@ -241,37 +241,38 @@ class RegressionTests(unittest.TestCase):
 
 # This test uses the Hypothesis and Hypothesmith libraries to generate random
 # syntatically-valid Python source code and applies McCabe on it.
-@settings(
-    max_examples=1000,  # roughly 1k tests/minute, or half that under coverage
-    derandomize=False,  # deterministic mode to avoid CI flakiness
-    deadline=None,  # ignore Hypothesis' health checks; we already know that
-    suppress_health_check=HealthCheck.all(),  # this is slow and filter-heavy.
-)
-@given(
-    # Note that while Hypothesmith might generate code unlike that written by
-    # humans, it's a general test that should pass for any *valid* source code.
-    # (so e.g. running it against code scraped of the internet might also help)
-    src_contents=hypothesmith.from_grammar() | hypothesmith.from_node(),
-    max_complexity=st.integers(min_value=1),
-)
-@pytest.mark.skipif(not hypothesmith, reason="hypothesmith could not be imported")
-def test_idempotent_any_syntatically_valid_python(
-    src_contents: str, max_complexity: int
-) -> None:
-    """Property-based tests for mccabe.
-
-    This test case is based on a similar test for Black, the code formatter.
-    Black's test was written by Zac Hatfield-Dodds, the author of Hypothesis
-    and the Hypothesmith tool for source code generation.  You can run this
-    file with `python`, `pytest`, or (soon) a coverage-guided fuzzer Zac is
-    working on.
-    """
-
-    # Before starting, let's confirm that the input string is valid Python:
-    compile(src_contents, "<string>", "exec")  # else bug is in hypothesmith
-
-    # Then try to apply get_complexity_number to the code...
-    get_code_complexity(src_contents, max_complexity)
+if hypothesmith:
+    @settings(
+        max_examples=1000,  # roughly 1k tests/minute, or half that under coverage
+        derandomize=False,  # deterministic mode to avoid CI flakiness
+        deadline=None,  # ignore Hypothesis' health checks; we already know that
+        suppress_health_check=HealthCheck.all(),  # this is slow and filter-heavy.
+    )
+    @given(
+        # Note that while Hypothesmith might generate code unlike that written by
+        # humans, it's a general test that should pass for any *valid* source code.
+        # (so e.g. running it against code scraped of the internet might also help)
+        src_contents=hypothesmith.from_grammar() | hypothesmith.from_node(),
+        max_complexity=st.integers(min_value=1),
+    )
+    @pytest.mark.skipif(not hypothesmith, reason="hypothesmith could not be imported")
+    def test_idempotent_any_syntatically_valid_python(
+            src_contents: str, max_complexity: int
+            ) -> None:
+        """Property-based tests for mccabe.
+
+        This test case is based on a similar test for Black, the code formatter.
+        Black's test was written by Zac Hatfield-Dodds, the author of Hypothesis
+        and the Hypothesmith tool for source code generation.  You can run this
+        file with `python`, `pytest`, or (soon) a coverage-guided fuzzer Zac is
+        working on.
+        """
+
+        # Before starting, let's confirm that the input string is valid Python:
+        compile(src_contents, "<string>", "exec")  # else bug is in hypothesmith
+
+        # Then try to apply get_complexity_number to the code...
+        get_code_complexity(src_contents, max_complexity)
 
 
 if __name__ == "__main__":