示例#1
0
 /**
  * Loads all tests registered in the given configuration.
  *
  * @param LimeConfiguration $configuration
  */
 public function __construct(LimeConfiguration $configuration)
 {
     $this->configuration = $configuration;
     foreach ($configuration->getLoadables() as $loadable) {
         $this->load($loadable);
     }
 }
示例#2
0
 /**
  * Constructor.
  *
  * @param array $options  The options
  */
 public function __construct(LimeConfiguration $configuration, LimeLoader $loader, array $options = array())
 {
     $this->configuration = $configuration;
     $output = $configuration->getSuiteOutput();
     if ($configuration->getProcesses() > 1 && !$output->supportsThreading()) {
         throw new LogicException(sprintf('The output "%s" does not support multi-processing', $type));
     }
     if ($output instanceof LimeOutputSuite) {
         $output->setLoader($loader);
     }
     $this->output = $output;
 }
示例#3
0
文件: LimeTest.php 项目: b00giZm/lime
 public function __construct(LimeConfiguration $configuration = null)
 {
     if (is_null($configuration)) {
         $configuration = LimeConfiguration::read(getcwd());
     }
     $this->output = $configuration->getTestOutput();
     set_error_handler(array($this, 'handleError'));
     // make sure that exceptions that are not caught by the test runner are
     // caught and formatted in an appropriate way
     // UPDATE: should be obsolete because uncaught exceptions are now handled
     // by the CLI
     //    set_exception_handler(array($this, 'handleException'));
 }
示例#4
0
文件: LimeCli.php 项目: b00giZm/lime
 /**
  * Tests a given set of labels.
  *
  * Packages may given with a leading "+" or "-". The tested files are:
  *
  *    * all files that are in all of the labels without leading "+" or "-"
  *    * all files that are in any label with a leading "+"
  *    * no files that are in any label with a leading "-"
  *
  * @param  array $labels  The label names
  * @return integer        The return value of the command (0 if successful)
  */
 protected function test(array $labels, array $options)
 {
     // don't load configuration in the constructor because then --init does
     // not work!
     $configuration = LimeConfiguration::read(getcwd());
     if ($configuration->getLegacyMode()) {
         LimeAutoloader::enableLegacyMode();
     }
     if (isset($options['processes'])) {
         $configuration->setProcesses($options['processes']);
     }
     if (isset($options['suffix'])) {
         $configuration->setSuffix($options['suffix']);
     }
     if (isset($options['output'])) {
         $configuration->setTestOutput($options['output']);
         $configuration->setSuiteOutput($options['output']);
     }
     if (isset($options['color'])) {
         $configuration->setForceColors(true);
     }
     if (isset($options['verbose'])) {
         $configuration->setVerbose(true);
     }
     if (isset($options['serialize'])) {
         $configuration->setSerialize(true);
     }
     if (isset($options['test'])) {
         $fileName = $options['test'];
         if (!is_readable($fileName)) {
             $loader = new LimeLoader($configuration);
             $files = $loader->getFilesByName($options['test']);
             if (count($files) == 0) {
                 throw new Exception("No tests are registered in the test suite! Please add your tests in lime.config.php.");
             } else {
                 if (count($files) > 1) {
                     $paths = array();
                     foreach ($files as $file) {
                         $paths[] = $file->getPath();
                     }
                     throw new Exception(sprintf("The name \"%s\" is ambiguous:\n  - %s\nPlease launch the test with the full file path.", $labels[0], implode("\n  - ", $paths)));
                 }
             }
             $fileName = $files[0]->getPath();
         } else {
             $fileName = realpath($fileName);
         }
         $configuration->getTestOutput()->focus($fileName);
         try {
             if ($configuration->getAnnotationSupport()) {
                 $support = new LimeAnnotationSupport($fileName);
                 $result = $support->execute();
             } else {
                 $result = $this->includeTest($fileName);
             }
             // xUnit compatibility
             $class = basename($fileName, '.php');
             if (class_exists($class) && is_subclass_of($class, 'LimeTestCase')) {
                 $test = new $class($configuration);
                 return $test->run();
             } else {
                 return $result;
             }
         } catch (Exception $e) {
             $configuration->getTestOutput()->error(LimeError::fromException($e));
             return 1;
         }
     } else {
         $loader = new LimeLoader($configuration);
         $harness = new LimeHarness($configuration, $loader);
         $files = $loader->getFilesByLabels($labels);
         if (count($files) == 0) {
             throw new Exception("No tests are registered in the test suite! Please add your tests in lime.config.php.");
         }
         return $harness->run($files) ? 0 : 1;
     }
 }