TestCase.run isn't allowed to raise exceptions, but JavaScriptTestCase will do so if a required JavaScript module cannot be found for some reason (ie, the plugin defining it was not installed).
This has consequences:
nevow.test.test_i18n.UNGettext.test_simple_flat_one ... [OK]
Traceback (most recent call last):
File "/usr/bin/trial", line 24, in ?
run()
File "/usr/lib/python2.4/site-packages/twisted/scripts/trial.py", line 345, in run
test_result = trialRunner.run(suite)
File "/usr/lib/python2.4/site-packages/twisted/trial/runner.py", line 794, in run
suite.run(result)
File "/usr/lib/python2.4/site-packages/twisted/trial/runner.py", line 285, in run
TestSuite.run(self, result)
File "/usr/lib/python2.4/site-packages/twisted/trial/runner.py", line 149, in run
test(result)
File "/usr/lib/python2.4/site-packages/twisted/trial/runner.py", line 138, in __call__
return self.run(result)
File "/usr/lib/python2.4/site-packages/twisted/trial/runner.py", line 176, in run
super(LoggedSuite, self).run(result)
File "/usr/lib/python2.4/site-packages/twisted/trial/runner.py", line 149, in run
test(result)
File "/usr/lib/python2.4/site-packages/twisted/trial/runner.py", line 138, in __call__
return self.run(result)
File "/usr/lib/python2.4/site-packages/twisted/trial/runner.py", line 149, in run
test(result)
File "/usr/lib/python2.4/site-packages/twisted/trial/runner.py", line 138, in __call__
return self.run(result)
File "/usr/lib/python2.4/site-packages/twisted/trial/runner.py", line 149, in run
test(result)
File "/usr/lib/python2.4/site-packages/twisted/trial/runner.py", line 138, in __call__
return self.run(result)
File "/usr/lib/python2.4/site-packages/twisted/trial/runner.py", line 149, in run
test(result)
File "/usr/lib/python2.4/site-packages/twisted/trial/runner.py", line 138, in __call__
return self.run(result)
File "/usr/lib/python2.4/site-packages/twisted/trial/runner.py", line 149, in run
test(result)
File "/usr/lib/python2.4/site-packages/twisted/trial/unittest.py", line 537, in __call__
return self.run(*args, **kwargs)
File "/home/buildbot/q-exponent/q-nevowinstall/build/installdir/lib/python2.4/site-packages/Nevow-0.9.31_r16232-py2.4.egg/nevow/testutil.py", line 492, in run
script = self.makeScript(self.testMethod())
File "/home/buildbot/q-exponent/q-nevowinstall/build/installdir/lib/python2.4/site-packages/Nevow-0.9.31_r16232-py2.4.egg/nevow/testutil.py", line 468, in makeScript
scriptFile = self._writeToTemp(generateTestScript(jsfile))
File "/home/buildbot/q-exponent/q-nevowinstall/build/installdir/lib/python2.4/site-packages/Nevow-0.9.31_r16232-py2.4.egg/nevow/jsutil.py", line 98, in generateTestScript
dependencies = getDependencies(fname)
File "/home/buildbot/q-exponent/q-nevowinstall/build/installdir/lib/python2.4/site-packages/Nevow-0.9.31_r16232-py2.4.egg/nevow/jsutil.py", line 46, in getDependencies
bootstrapModules = [JSModule.getOrCreate(m, packages)
File "/home/buildbot/q-exponent/q-nevowinstall/build/installdir/lib/python2.4/site-packages/Nevow-0.9.31_r16232-py2.4.egg/nevow/athena.py", line 155, in getOrCreate
mod = cls._modules[name] = cls(name, mapping)
File "/home/buildbot/q-exponent/q-nevowinstall/build/installdir/lib/python2.4/site-packages/Nevow-0.9.31_r16232-py2.4.egg/nevow/athena.py", line 168, in __init__
self._cache = CachedFile(self.mapping[self.name], self._getDeps)
KeyError: 'Divmod'
program finished with exit code 1
Instead of raising an exception, it should add an error to the result.