#!/usr/bin/env php * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ if (!version_compare(PHP_VERSION, PHP_VERSION, '=')) { fwrite(STDERR, sprintf('%s declares an invalid value for PHP_VERSION.' . PHP_EOL . 'This breaks fundamental functionality such as version_compare().' . PHP_EOL . 'Please use a different PHP interpreter.' . PHP_EOL, PHP_BINARY)); die(1); } if (version_compare('8.1.0', PHP_VERSION, '>')) { fwrite(STDERR, sprintf('This version of PHPUnit requires PHP >= 8.1.' . PHP_EOL . 'You are using PHP %s (%s).' . PHP_EOL, PHP_VERSION, PHP_BINARY)); die(1); } $requiredExtensions = ['dom', 'json', 'libxml', 'mbstring', 'tokenizer', 'xml', 'xmlwriter']; $unavailableExtensions = array_filter($requiredExtensions, static function ($extension) { return !extension_loaded($extension); }); if ([] !== $unavailableExtensions) { fwrite(STDERR, sprintf('PHPUnit requires the "%s" extensions, but the "%s" %s not available.' . PHP_EOL, implode('", "', $requiredExtensions), implode('", "', $unavailableExtensions), count($unavailableExtensions) === 1 ? 'extension is' : 'extensions are')); die(1); } unset($requiredExtensions, $unavailableExtensions); if (!ini_get('date.timezone')) { ini_set('date.timezone', 'UTC'); } if (isset($GLOBALS['_composer_autoload_path'])) { define('PHPUNIT_COMPOSER_INSTALL', $GLOBALS['_composer_autoload_path']); unset($GLOBALS['_composer_autoload_path']); } else { foreach (array(__DIR__ . '/../../autoload.php', __DIR__ . '/../vendor/autoload.php', __DIR__ . '/vendor/autoload.php') as $file) { if (file_exists($file)) { define('PHPUNIT_COMPOSER_INSTALL', $file); break; } } unset($file); } if (!defined('PHPUNIT_COMPOSER_INSTALL')) { fwrite(STDERR, 'You need to set up the project dependencies using Composer:' . PHP_EOL . PHP_EOL . ' composer install' . PHP_EOL . PHP_EOL . 'You can learn all about Composer on https://getcomposer.org/.' . PHP_EOL); die(1); } (function () { $prepend = null; foreach ($_SERVER["argv"] as $index => $argv) { // --prepend /path/to/file if ($argv === "--prepend") { unset($_SERVER["argv"][$index]); if (isset($_SERVER["argv"][$index + 1])) { $prepend = $_SERVER["argv"][$index + 1]; unset($_SERVER["argv"][$index + 1]); } break; } // --prepend=/path/to/file if (strpos($argv, "--prepend=") === 0) { $prepend = substr($argv, 10); unset($_SERVER["argv"][$index]); break; } } if ($prepend !== null && file_exists($prepend)) { require $prepend; } })(); require PHPUNIT_COMPOSER_INSTALL; $code = 0; Swoole\Coroutine::set(['hook_flags' => SWOOLE_HOOK_ALL, 'exit_condition' => function () { return Swoole\Coroutine::stats()['coroutine_num'] === 0; }]); Swoole\Coroutine\run(function () use(&$code) { $code = (new PHPUnit\TextUI\Application())->run($_SERVER['argv']); Swoole\Timer::clearAll(); Hyperf\Coordinator\CoordinatorManager::until(Hyperf\Coordinator\Constants::WORKER_EXIT)->resume(); }); die($code);