QUICK THOUGHTS Design TrialRunner to be subclassable. Subclasses are different kinds of "Reporters" TrialRoot is gone, its now TrialResult. This result will implement the truely test related apis, and pass them through to the reporter, which is the instance users can supply. TrialRoot functionality is moving onto TrialRunner, which coordinates test runs. There is also a ReactorSuite, which does not return from run until the reactor is clean. This will give us: - Easy, safe integration into PyUnit runners (logging setup and thread cleanup will be done in TrialRoot) - Safe integration into GUI runners (subunit.IsolatedTestSuite will wrap straight around TrialRoot) - Clean class to put all of the trial command line stuff into, separate from basic Trial mechanics. "Executing a test should have no dependencies on the TestRunner, TestResult or any containing TestSuites" ~ mpool GOALS - test suites should be stock pyunit TestSuites unless good reason otherwise (case-by-case "good reason") - runner & result should be somewhat tightly joined - Magic Twisted fu (e.g. reactor spinning) should be part of TestCase.run (a subclass of pyunit TestCase) - Command line can know about TestCase internals