/** * Bootstraps parts of our test enviornment and iteratively invokes each * file. * * @return ResultSet */ public function run() { $tests = $this->collectFiles(); $this->emit('test_run.start'); foreach ($tests as $test_file) { $suite = new Suite(new InvocationContext(), function () use($test_file) { require $test_file; }, $test_file->getPathName()); $suite->build(); $suite_result = new ResultSet(); $suite_runner = new SuiteRunner($suite, $suite_result, array('grep' => $this->options['grep'])); $this->result_set->addResult($suite_result); // Forward my listeners. foreach ($this->listeners as $listener) { $suite_runner->addListener($listener); } $suite_runner->run(); } $this->emit('test_run.complete', array('result_set' => $this->result_set)); return $this->result_set; }
/** * Begins a new test suite. The test suite instantiates a new invocation * context. */ public static function suite($name, $fn) { $suite = new Suite(new InvocationContext(), $fn, $name); $suite->build(); return $suite; }