I am trying to understand running coverage for python scripts. I am not able to understand a scenario where i try to run coverage for a simple script which has an infinite loop:
#!/usr/bin/python
print "The only statement!!!"
while True:
pass
After invoking coverage for this script, I will kill this process, since it is an infinite loop and if i try to get the result I am getting like:
Name Stmts Miss Cover Missing
-------------------------------------
I am not getting any coverage report. Am i doing some thing which is fundamentally wrong?
coverage
needs to be able to write its data out at program end, and if it can't handle the exit signal then it will not generate a report.
So it depends how you are killing your process and how coverage
handles the signal - works fine for me when using Ctrl+C (i.e. sending SIGINT) to interrupt sample.py
$ coverage run sample.py
The only statement!!!
Traceback (most recent call last):
File "sample.py", line 5, in <module>
while True:
KeyboardInterrupt
$ coverage report -m
Name Stmts Miss Cover Missing
--------------------------------------
sample 3 0 100%
If you are using the kill
utility with no options then you are sending SIGTERM by default, try kill -INT <pid>
instead.