BUGS ---- split_test_name is detected as a test: rename it Refactor -------- - Make conf passed not global - Use logging for messaging X split out test selection into selector class X use in core X move config to own module X move capture to result module X implement in result - remove from core X use text test result in core X use plugins in core X coverage Output capture handling ----------------------- - Monkeypatch in a new _TextTestResult instead of all of the current chicanery Assert introspection -------------------- - use in assertion error only -- only replace that class (replace the reference(s) in unittest as well) - introspect object instances? what about methods (probably not) - fix the 'EOF in multi-line input' bug Error handling -------------- - exit on error or fail X pdb on error or fail Path handling ------------- X importer: (all configurable!) * before attempting import, ensure that the path to the module to be imported is in sys.path; * if the module is a file other than __init__.py in a dir containing an __init__.py, walk up to find the root dir (with no __init__.py) and ensure that directory is in sys.path * after import, walk up package to package root and ensure that the package root is in sys.path * investigate Kumar's load/reload bug Plugins ------- - test selector: decide if a dir, module, file, class, or function is a wanted test X doctest - test collector: given a context (module, directory, or file) return tests X doctest - test watcher: before_all, before_test, after_test, after_all .. X coverage - profile Utilities -------- @raises(*exc) -- assert func call raises exception @timed(under, over, exact) -- assert func execs in under, over, exact time SkipTest exception ... catch in addError, addSkip instead, print skipped in output after failed Deprecated too?