/** * Configures testing environment. * @return void */ public static function setup() { self::setupErrors(); self::setupColors(); class_exists('Tester\\Runner\\Job'); class_exists('Tester\\Dumper'); class_exists('Tester\\Assert'); $annotations = self::getTestAnnotations(); self::$checkAssertions = !isset($annotations['outputmatch']) && !isset($annotations['outputmatchfile']); if (getenv(self::COVERAGE)) { CodeCoverage\Collector::start(getenv(self::COVERAGE)); } }
/** * Configures PHP environment. * @return void */ public static function setup() { self::$useColors = getenv(self::COLORS) !== FALSE ? (bool) getenv(self::COLORS) : PHP_SAPI === 'cli' && (function_exists('posix_isatty') && posix_isatty(STDOUT) || getenv('ConEmuANSI') === 'ON' || getenv('ANSICON') !== FALSE); class_exists('Tester\\Runner\\Job'); class_exists('Tester\\Dumper'); class_exists('Tester\\Assert'); error_reporting(E_ALL | E_STRICT); ini_set('display_errors', TRUE); ini_set('html_errors', FALSE); ini_set('log_errors', FALSE); $annotations = self::getTestAnnotations(); if (isset($annotations['outputmatch']) || isset($annotations['outputmatchfile'])) { self::$checkAssertions = FALSE; } set_exception_handler(array(__CLASS__, 'handleException')); set_error_handler(function ($severity, $message, $file, $line) { if (in_array($severity, array(E_RECOVERABLE_ERROR, E_USER_ERROR)) || ($severity & error_reporting()) === $severity) { Environment::handleException(new \ErrorException($message, 0, $severity, $file, $line)); } return FALSE; }); register_shutdown_function(function () { Assert::$onFailure = array(__CLASS__, 'handleException'); // note that Runner is unable to catch this errors in CLI & PHP 5.4.0 - 5.4.6 due PHP bug #62725 $error = error_get_last(); register_shutdown_function(function () use($error) { if (in_array($error['type'], array(E_ERROR, E_CORE_ERROR, E_COMPILE_ERROR, E_PARSE))) { if (($error['type'] & error_reporting()) !== $error['type']) { // show fatal errors hidden by @shutup echo "\nFatal error: {$error['message']} in {$error['file']} on line {$error['line']}\n"; } } elseif (Environment::$checkAssertions && !Assert::$counter) { echo "\nError: This test forgets to execute an assertion.\n"; exit(Runner\Job::CODE_FAIL); } }); }); if (getenv(self::COVERAGE)) { CodeCoverage\Collector::start(getenv(self::COVERAGE)); } ob_start(function ($s) { return Environment::$useColors ? $s : Dumper::removeColors($s); }, PHP_VERSION_ID < 50400 ? 2 : 1); }