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
|
# Test that the --timid command line argument properly swaps the tracer function
# for a simpler one.
#
# This is complicated by the fact that alltests.cmd will run the test suite
# twice for each version: once with a compiled C-based trace function, and once
# without it, to also test the Python trace function. So this test has to
# examine an environment variable set in alltests.cmd to know whether to expect
# to see the C trace function or not.
import os
copy("src", "out")
run("""
coverage -e -x showtrace.py regular
coverage -e -x --timid showtrace.py timid
""", rundir="out", outfile="showtraceout.txt")
# When running timidly, the trace function is always Python.
contains("out/showtraceout.txt", "timid PyTracer")
if os.environ.get('COVERAGE_TEST_TRACER', 'c') == 'c':
# If the C trace function is being tested, then regular running should have
# the C function, which registers itself as f_trace.
contains("out/showtraceout.txt", "regular CTracer")
else:
# If the Python trace function is being tested, then regular running will
# also show the Python function.
contains("out/showtraceout.txt", "regular PyTracer")
# Try the environment variable.
old_opts = os.environ.get('COVERAGE_OPTIONS')
os.environ['COVERAGE_OPTIONS'] = '--timid'
run("""
coverage -e -x showtrace.py regular
coverage -e -x --timid showtrace.py timid
""", rundir="out", outfile="showtraceout.txt")
contains("out/showtraceout.txt",
"timid PyTracer",
"regular PyTracer"
)
if old_opts:
os.environ['COVERAGE_OPTIONS'] = old_opts
else:
del os.environ['COVERAGE_OPTIONS']
clean("out")
|