I can’t honestly say I’ve been doing much test-driven development on Review Board. Django is a really cool web-framework, but I miss all of the nice testing tools from the Rails ecosystem.
Anyhow, today, I decided to run the tests, and BAM – Segmentation Fault:
Testing Perforce binary diff parsing … SKIP: perforce/p4python is not installed
Testing PerforceTool.get_changeset … SKIP: perforce/p4python is not installed
Testing Perforce empty and normal diff parsing … SKIP: perforce/p4python is not installed
Testing Perforce empty diff parsing … SKIP: perforce/p4python is not installed
Testing PerforceTool.get_file … SKIP: perforce/p4python is not installed
Testing parsing SVN diff with binary file … ok
Testing SVNTool.get_file … Segmentation Fault
Yikes. Getting a segfault in Python is unusual, and a little jarring. However, it did let me narrow down the problem a bit: it must have to do with the pysvn bindings that Review Board uses to talk to Subversion, because those are written in C++ (which can certainly segfault).
The machine I was using had Ubuntu Hardy on it, and the Hardy packages have pysvn 1.5.2-1. Taking a look at the pysvn homepage, the most recent version is actually 1.7.2.
So, I uninstalled pysvn, downloaded the source for 1.7.2, compiled it, and installed it manually.
Segfault gone. Tests pass. Awesome sauce.