/** * 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; } }
/** * 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; }
<?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;