eric7/DebugClients/Python/coverage/env.py

Sun, 20 Mar 2022 17:49:44 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sun, 20 Mar 2022 17:49:44 +0100
branch
eric7
changeset 8991
2fc945191992
parent 8929
fcca2fa618bf
permissions
-rw-r--r--

Third Party packages
- upgraded coverage to 6.3.2

4489
d0d6e4ad31bd Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff changeset
1 # Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0
7427
362cd1b6f81a coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7275
diff changeset
2 # For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt
4489
d0d6e4ad31bd Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff changeset
3
d0d6e4ad31bd Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff changeset
4 """Determine facts about the environment."""
d0d6e4ad31bd Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff changeset
5
d0d6e4ad31bd Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff changeset
6 import os
6219
d6c795b5ce33 Third Party, coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5178
diff changeset
7 import platform
4489
d0d6e4ad31bd Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff changeset
8 import sys
d0d6e4ad31bd Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff changeset
9
d0d6e4ad31bd Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff changeset
10 # Operating systems.
d0d6e4ad31bd Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff changeset
11 WINDOWS = sys.platform == "win32"
7427
362cd1b6f81a coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7275
diff changeset
12 LINUX = sys.platform.startswith("linux")
8929
fcca2fa618bf Upgraded coverage to version 6.2.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8775
diff changeset
13 OSX = sys.platform == "darwin"
7427
362cd1b6f81a coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7275
diff changeset
14
8527
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
15 # Python implementations.
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
16 CPYTHON = (platform.python_implementation() == "CPython")
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
17 PYPY = (platform.python_implementation() == "PyPy")
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
18 JYTHON = (platform.python_implementation() == "Jython")
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
19 IRONPYTHON = (platform.python_implementation() == "IronPython")
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
20
7427
362cd1b6f81a coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7275
diff changeset
21 # Python versions. We amend version_info with one more value, a zero if an
362cd1b6f81a coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7275
diff changeset
22 # official version, or 1 if built from source beyond an official version.
362cd1b6f81a coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7275
diff changeset
23 PYVERSION = sys.version_info + (int(platform.python_version()[-1] == "+"),)
4489
d0d6e4ad31bd Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff changeset
24
6219
d6c795b5ce33 Third Party, coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5178
diff changeset
25 if PYPY:
d6c795b5ce33 Third Party, coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5178
diff changeset
26 PYPYVERSION = sys.pypy_version_info
d6c795b5ce33 Third Party, coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5178
diff changeset
27
8527
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
28 # Python behavior.
8775
0802ae193343 Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8527
diff changeset
29 class PYBEHAVIOR:
6649
f1b3a73831c9 coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6219
diff changeset
30 """Flags indicating this Python's behavior."""
f1b3a73831c9 coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6219
diff changeset
31
8775
0802ae193343 Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8527
diff changeset
32 # Does Python conform to PEP626, Precise line numbers for debugging and other tools.
0802ae193343 Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8527
diff changeset
33 # https://www.python.org/dev/peps/pep-0626
8527
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
34 pep626 = CPYTHON and (PYVERSION > (3, 10, 0, 'alpha', 4))
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
35
7427
362cd1b6f81a coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7275
diff changeset
36 # Is "if __debug__" optimized away?
8775
0802ae193343 Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8527
diff changeset
37 if PYPY:
8527
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
38 optimize_if_debug = True
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
39 else:
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
40 optimize_if_debug = not pep626
7427
362cd1b6f81a coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7275
diff changeset
41
8991
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
42 # Is "if not __debug__" optimized away? The exact details have changed
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
43 # across versions.
8527
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
44 if pep626:
8991
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
45 optimize_if_not_debug = 1
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
46 elif PYPY:
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
47 if PYVERSION >= (3, 9):
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
48 optimize_if_not_debug = 2
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
49 elif PYVERSION[:2] == (3, 8):
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
50 optimize_if_not_debug = 3
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
51 else:
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
52 optimize_if_not_debug = 1
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
53 else:
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
54 if PYVERSION >= (3, 8, 0, 'beta', 1):
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
55 optimize_if_not_debug = 2
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
56 else:
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
57 optimize_if_not_debug = 1
7427
362cd1b6f81a coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7275
diff changeset
58
362cd1b6f81a coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7275
diff changeset
59 # Can co_lnotab have negative deltas?
8775
0802ae193343 Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8527
diff changeset
60 negative_lnotab = not (PYPY and PYPYVERSION < (7, 2))
7427
362cd1b6f81a coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7275
diff changeset
61
8527
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
62 # 3.7 changed how functions with only docstrings are numbered.
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
63 docstring_only_function = (not PYPY) and ((3, 7, 0, 'beta', 5) <= PYVERSION <= (3, 10))
7427
362cd1b6f81a coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7275
diff changeset
64
6649
f1b3a73831c9 coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6219
diff changeset
65 # When a break/continue/return statement in a try block jumps to a finally
f1b3a73831c9 coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6219
diff changeset
66 # block, does the finally block do the break/continue/return (pre-3.8), or
f1b3a73831c9 coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6219
diff changeset
67 # does the finally jump back to the break/continue/return (3.8) to do the
f1b3a73831c9 coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6219
diff changeset
68 # work?
8527
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
69 finally_jumps_back = ((3, 8) <= PYVERSION < (3, 10))
6649
f1b3a73831c9 coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6219
diff changeset
70
f1b3a73831c9 coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6219
diff changeset
71 # When a function is decorated, does the trace function get called for the
f1b3a73831c9 coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6219
diff changeset
72 # @-line and also the def-line (new behavior in 3.8)? Or just the @-line
f1b3a73831c9 coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6219
diff changeset
73 # (old behavior)?
8991
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
74 trace_decorated_def = (CPYTHON and PYVERSION >= (3, 8)) or (PYPY and PYVERSION >= (3, 9))
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
75
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
76 # Functions are no longer claimed to start at their earliest decorator even though
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
77 # the decorators are traced?
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
78 def_ast_no_decorator = (PYPY and PYVERSION >= (3, 9))
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
79
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
80 # CPython 3.11 now jumps to the decorator line again while executing
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
81 # the decorator.
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
82 trace_decorator_line_again = (CPYTHON and PYVERSION > (3, 11, 0, 'alpha', 3, 0))
6649
f1b3a73831c9 coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6219
diff changeset
83
f1b3a73831c9 coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6219
diff changeset
84 # Are while-true loops optimized into absolute jumps with no loop setup?
f1b3a73831c9 coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6219
diff changeset
85 nix_while_true = (PYVERSION >= (3, 8))
f1b3a73831c9 coverage: updated coverage.py to 4.5.1.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6219
diff changeset
86
8991
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
87 # CPython 3.9a1 made sys.argv[0] and other reported files absolute paths.
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
88 report_absolute_files = (CPYTHON and PYVERSION >= (3, 9))
7427
362cd1b6f81a coverage: updated coverage.py to 5.0.3.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7275
diff changeset
89
8527
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
90 # Lines after break/continue/return/raise are no longer compiled into the
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
91 # bytecode. They used to be marked as missing, now they aren't executable.
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
92 omit_after_jump = pep626
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
93
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
94 # PyPy has always omitted statements after return.
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
95 omit_after_return = omit_after_jump or PYPY
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
96
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
97 # Modules used to have firstlineno equal to the line number of the first
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
98 # real line of code. Now they always start at 1.
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
99 module_firstline_1 = pep626
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
100
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
101 # Are "if 0:" lines (and similar) kept in the compiled code?
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
102 keep_constant_test = pep626
2bd1325d727e Upgraded the included code coverage library to v5.5.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8312
diff changeset
103
8775
0802ae193343 Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8527
diff changeset
104 # When leaving a with-block, do we visit the with-line again for the exit?
0802ae193343 Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8527
diff changeset
105 exit_through_with = (PYVERSION >= (3, 10, 0, 'beta'))
0802ae193343 Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8527
diff changeset
106
0802ae193343 Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8527
diff changeset
107 # Match-case construct.
0802ae193343 Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8527
diff changeset
108 match_case = (PYVERSION >= (3, 10))
0802ae193343 Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8527
diff changeset
109
0802ae193343 Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8527
diff changeset
110 # Some words are keywords in some places, identifiers in other places.
0802ae193343 Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8527
diff changeset
111 soft_keywords = (PYVERSION >= (3, 10))
0802ae193343 Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8527
diff changeset
112
0802ae193343 Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8527
diff changeset
113
4489
d0d6e4ad31bd Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff changeset
114 # Coverage.py specifics.
d0d6e4ad31bd Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff changeset
115
d0d6e4ad31bd Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff changeset
116 # Are we using the C-implemented trace function?
d0d6e4ad31bd Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff changeset
117 C_TRACER = os.getenv('COVERAGE_TEST_TRACER', 'c') == 'c'
d0d6e4ad31bd Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff changeset
118
d0d6e4ad31bd Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff changeset
119 # Are we coverage-measuring ourselves?
d0d6e4ad31bd Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff changeset
120 METACOV = os.getenv('COVERAGE_COVERAGE', '') != ''
d0d6e4ad31bd Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff changeset
121
d0d6e4ad31bd Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff changeset
122 # Are we running our test suite?
d0d6e4ad31bd Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff changeset
123 # Even when running tests, you can use COVERAGE_TESTING=0 to disable the
d0d6e4ad31bd Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff changeset
124 # test-specific behavior like contracts.
d0d6e4ad31bd Updated coverage to 4.0 (breaks with Python 3.2 support).
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff changeset
125 TESTING = os.getenv('COVERAGE_TESTING', '') == 'True'
8775
0802ae193343 Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8527
diff changeset
126
0802ae193343 Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8527
diff changeset
127 # Environment COVERAGE_NO_CONTRACTS=1 can turn off contracts while debugging
0802ae193343 Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8527
diff changeset
128 # tests to remove noise from stack traces.
0802ae193343 Upgraded coverage to 6.1.2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8527
diff changeset
129 # $set_env.py: COVERAGE_NO_CONTRACTS - Disable PyContracts to simplify stack traces.
8991
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
130 USE_CONTRACTS = (
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
131 TESTING
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
132 and not bool(int(os.environ.get("COVERAGE_NO_CONTRACTS", 0)))
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
133 and (PYVERSION < (3, 11))
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
134 )
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
135
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
136 def debug_info():
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
137 """Return a list of (name, value) pairs for printing debug information."""
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
138 info = [
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
139 (name, value) for name, value in globals().items()
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
140 if not name.startswith("_") and
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
141 name not in {"PYBEHAVIOR", "debug_info"} and
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
142 not isinstance(value, type(os))
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
143 ]
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
144 info += [
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
145 (name, value) for name, value in PYBEHAVIOR.__dict__.items()
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
146 if not name.startswith("_")
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
147 ]
2fc945191992 Third Party packages
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 8929
diff changeset
148 return sorted(info)

eric ide

mercurial