/**
  * Run the application.
  *
  * @param TestMessage $message
  * @return void
  */
 public function run(TestMessage $message)
 {
     $this->environment->load($this->reader);
     $this->message = $message;
     $this->listen($this->environment->getEventEmitter());
     $context = Context::getInstance();
     $this->looper->loop($context, $this->environment, $message);
 }
 /**
  * Read a suite path on the environment's read stream and execute
  * them against a standard Peridot runner.
  *
  * @param Context $context
  * @param Environment $environment
  * @param Message $message
  * @return void
  */
 public function loop(Context $context, Environment $environment, Message $message)
 {
     while (true) {
         $input = fgets($environment->getReadStream());
         list($token, $path) = $this->getTestInfo($input);
         $context->setFile($path);
         putenv("PERIDOT_TEST_TOKEN={$token}");
         require $path;
         $runner = new Runner($context->getCurrentSuite(), $environment->getConfiguration(), $environment->getEventEmitter());
         $runner->run(new TestResult($environment->getEventEmitter()));
         $message->end();
         $context->clear();
     }
 }