Our method of running the test suite (iptest) is broken
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
IPython |
Fix Released
|
Critical
|
Fernando Perez |
Bug Description
Currently we run the IPython test suite using a custom command line program "iptest" that calls nosetests with the right options. The problem with this is that the entire approach is very fragile. A couple of problems exist:
* The integration with twisted.trial seems to be buggy at best. But, we need to use twisted.trial to test things in kernel and frontend.
* We are getting lots of odd errors/failures that are impossible to track down.
* Different tests have very different and at times conflicting dependencies. For instance, we have code that uses wx, qt, twisted, etc. All of these things should not be tested in the same process.
We need a new way of running tests that:
* Run's certain tests in subprocesses.
* Isolates tests based on dependencies.
* Runs twisted using tests using trial.
* Allow packages/modules to declared their deps without being imported so it can be decided how they will be run.
The difficulty with this is that our test dependencies are not well isolated into package or even modules. A perfect example of this is that frontend.
Changed in ipython: | |
assignee: | nobody → ellisonbg |
importance: | Undecided → Critical |
milestone: | none → 0.10 |
status: | New → Confirmed |
As a start we are doing the following:
* For all modules that nose should skip because twisted is needed, we have defined a __test__ = {} attribute.
* For all modules that use twisted, we no longer protect the twisted import using a try/except. The assumption is that because these
tests use trial to be run, that twisted must be installed.
* We have written new trial compatible skip decorators in testing/ decorators_ trial.py. These have an API just like those in decorators.py