Пример #1
0
 /**
  * Runs given task
  *
  * @param string             $uTask        name of the task
  * @param array              $uParameters  set of parameters
  * @param FormatterInterface $uFormatter   formatter class
  *
  * @return int exit code
  */
 public static function run($uTask, array $uParameters, $uFormatter = null)
 {
     if ($uFormatter === null) {
         $uFormatter = Formatters::getCurrent();
     }
     if ($tHelpCommand = $uTask === "help") {
         $uTask = array_shift($uParameters);
     }
     if ($uTask === null) {
         $uFormatter->write("Please specify a task");
         return 1;
     }
     $tClassName = self::taskClassName($uTask);
     if ($tClassName === null) {
         $uFormatter->write(sprintf("Task not found - %s", $uTask));
         return 1;
     }
     try {
         $tInstance = new $tClassName();
         if ($tHelpCommand) {
             $tInstance->help($uFormatter);
             return 0;
         }
         return $tInstance->executeTask($uParameters, $uFormatter);
     } catch (\Exception $ex) {
         $uFormatter->write(sprintf("%s: %s", get_class($ex), $ex->getMessage()));
         return 1;
     }
 }
Пример #2
0
 /**
  * Runs given unit tests
  *
  * @param array              $uTestClasses set of unit test classes
  * @param FormatterInterface $uFormatter   formatter class
  *
  * @return int exit code
  */
 public static function runUnitTests(array $uTestClasses, $uFormatter = null)
 {
     if ($uFormatter === null) {
         $uFormatter = Formatters::getCurrent();
     }
     $tIsEverFailed = false;
     $uFormatter->writeHeader(1, "Unit Tests");
     /** @type string $tTestClass */
     foreach ($uTestClasses as $tTestClass) {
         $uFormatter->writeHeader(2, $tTestClass);
         $tInstance = new $tTestClass();
         $tInstance->test();
         if ($tInstance->isFailed) {
             $tIsEverFailed = true;
         }
         foreach ($tInstance->testReport as $tTestName => $tTest) {
             $tFails = [];
             foreach ($tTest as $tTestCase) {
                 if ($tTestCase["failed"]) {
                     $tFails[] = ["operation" => $tTestCase["operation"], "message" => $tTestCase["message"]];
                 }
             }
             if (count($tFails) === 0) {
                 $uFormatter->write(sprintf("[OK] %s", $tTestName));
             } else {
                 $uFormatter->writeColor("red", sprintf("[FAIL] %s", $tTestName));
                 $uFormatter->writeArray($tFails);
             }
         }
     }
     if ($tIsEverFailed) {
         return 1;
     }
     return 0;
 }
Пример #3
0
<?php

$tBaseDir = dirname(__DIR__);
// classLoader
$tClassLoader = (require "{$tBaseDir}/vendor/autoload.php");
// config
$tConfigCollection = new \Scabbia\Config\ConfigCollection();
$tConfigCollection->add(require "{$tBaseDir}/config.php");
$tConfig = $tConfigCollection->save();
// log
$tLog = new \Monolog\Logger("Runner");
if (isset($tConfig["logpath"]) && $tConfig["logpath"] !== null) {
    $tLog->pushHandler(new \Monolog\Handler\StreamHandler("{$tBaseDir}/{$tConfig['logpath']}", \Monolog\Logger::DEBUG));
}
// request
$tRequest = \Scabbia\LightStack\Request::generateFromGlobals();
// formatter
$tFormatter = \Scabbia\Formatters\Formatters::getCurrent();
// services
$tServices = new \Scabbia\Services\Services();
$tServices["classLoader"] = $tClassLoader;
$tServices["config"] = $tConfig;
$tServices["log"] = $tLog;
$tServices["request"] = $tRequest;
$tServices["formatter"] = $tFormatter;
// return dependency injection container
return $tServices;