# Licensed under the Apache License: http://www.apache.org/licenses/LICENSE-2.0 # For details: https://github.com/nedbat/coveragepy/blob/master/NOTICE.txt # Test that the --timid command line argument properly swaps the tracer # function for a simpler one. # # This is complicated by the fact that the tests are run 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 igor.py to know whether to expect to see # the C trace function or not. import os # When meta-coverage testing, this test doesn't work, because it finds # coverage.py's own trace function. if os.environ.get('COVERAGE_COVERAGE', ''): skip("Can't test timid during coverage measurement.") copy("src", "out_timid") run(""" python showtrace.py none coverage run showtrace.py regular coverage run --timid showtrace.py timid """, rundir="out_timid", outfile="showtraceout.txt") # When running without coverage, no trace function # When running timidly, the trace function is always Python. contains("out_timid/showtraceout.txt", "none None", "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_timid/showtraceout.txt", "regular CTracer") else: # If the Python trace function is being tested, then regular running will # also show the Python function. contains("out_timid/showtraceout.txt", "regular PyTracer") clean("out_timid")