While doing some work on updating one of the policies to use
FUEL, I hit upon a
bug in the library. While I wasn't in the mood to patch (it is a trivial fix), I thought this would be a great opportunity to try some Mochitests.
Previously I discussed adding
js components to make getting registry values easier, it would nice to have some tests in the process.
I actually rarely do tests actually. I shy away from them for several reasons, but I want to try and turn around this bad habit. I
strongly dislike doing manual tests, because if something goes wrong and you get a fix, you have to make sure nothing else broke in the process. Thankfully, Mozilla offers some
choice in doing your tests.
Starting Mochitest was acutally a problem. All your tests and utilities are in
mozobj/_tests/testing/mochitest/
. You must be in that directory when running the mochitests. The tricky bit seems to finding where exactly your tests are. There seems to be a few possiblities:
browser/*
chrome/*
tests/*
The directory structure follows the tree. For example, since FUEL's tests are in
mozilla/browser/fuel/test/
, the path to fuel's chrome tests (if it had any) would be in
chrome/browser/fuel/test/
.
The script running the tests is a perl script called
runtests.pl
. Depending on the parameters, it looks in different places
--chrome is the chrome/* directory
--browser-chrome is the browser/* directory
nothing is the tests/* directory
You can pass the
--test-path=browser/fuel/test/some_test.html
to do one unit test, or test the entire directory by doing
--test-path=browser/fuel/test/ --auto-run
. If you leave
--test-path=...
out, it will test everything. Since my code is in
browser/
, I did the following command :
perl runtests.pl --browser-chrome --test-path=browser/fuel/test/ --autorun
Predictably, it passed. That's because it wasn't testing a certain condition. I submitted a test case with the
bug. I still know very little about how to create a Mochitest, but how to
run the tests was just as important as the testcase itself. So in that sense, I am happy with the results.
Inspirational link