Released M2Crypto 0.19
I just pushed out M2Crypto 0.19. This ends the longest hiatus in releases (almost a year since 0.18.2) since I took over the project; apologies for the delays. I highlighted the best parts about 0.19 in an earlier post, so I won’t repeat them here. I need to make one clarification regarding Python 2.6 support: the optional timeout parameter added to many network modules is not yet supported in M2Crypto 0.19. I just noticed this too late for this release.
In preparation for 0.19 I did the first ever code coverage analysis of M2Crypto. I installed the latest coverage and nose, and run the M2Crypto unit tests. At first I got 72%. I then added some tests on trunk, and got the number to 75%. Then I added some docstrings and was surprised to note the figure jumped to 78%. Now I just need to write some more docstrings to break the magical 80% code coverage limit
While nose and coverage were surprisingly easy to set up and run, finding out the specific lines of code that were not covered was not very user friendly. For that I installed figleaf. The workflow then became:
nosetests --with-coverage --cover-package=M2Crypto
which wrote the file .figleaf in the current directory. Then I run:
figleaf2html -d build/fig .figleaf
which produced HTML files in the build/fig directory. The HTML files showed the source code, formatted such that it was easy to see what was covered and what not. Basically non-covered lines were colored red.
Update: It seems I messed up the figleaf instructions. The above nosetests line will not produce .figleaf. I know of two ways to produce that. The first one is to add two more options to the nosetests command, which then becomes:
nosetests --with-coverage --cover-package=M2Crypto --with-figleafsections --figleaf-file=.figleaf
Unfortunately trying to process this with figleaf2html leads into:
Traceback (most recent call last): File "/usr/bin/figleaf2html", line 8, in <module> load_entry_point('figleaf==0.6.1', 'console_scripts', 'figleaf2html')() File "/usr/lib/python2.5/site-packages/figleaf-0.6.1-py2.5.egg/figleaf/annotate_html.py", line 256, in main coverage = figleaf.combine_coverage(coverage, d) File "/usr/lib/python2.5/site-packages/figleaf-0.6.1-py2.5.egg/figleaf/__init__.py", line 89, in combine_coverage keys.update(set(d2.keys())) AttributeError: CodeTracer instance has no attribute 'keys'
The second way which actually works is to use figleaf directly:
figleaf --ignore-pylibs setup.py test -q
in the M2Crypto source tree. Then figleaf2html will work. The downside is that setup.py and test files are included in coverage.



Leave a comment