Server IP : / Your IP : 10.244.4.16 [ Web Server : nginx/1.25.3 System : Linux escuela-portal-app-54f56585bc-kst6g 5.15.0-1084-azure #93-Ubuntu SMP Sat Mar 15 14:12:29 UTC 2025 x86_64 User : root ( 0) PHP Version : 8.2.13 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, Domains : 0 Domains MySQL : OFF | cURL : ON | WGET : OFF | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /proc/789/cwd/app/vendor/laravel/framework/src/Illuminate/Testing/ |
Upload File : |
<?php namespace Illuminate\Testing; use Illuminate\Contracts\Container\Container; use Illuminate\Support\Str; class ParallelTesting { /** * The container instance. * * @var \Illuminate\Contracts\Container\Container */ protected $container; /** * The options resolver callback. * * @var \Closure|null */ protected $optionsResolver; /** * The token resolver callback. * * @var \Closure|null */ protected $tokenResolver; /** * All of the registered "setUp" process callbacks. * * @var array */ protected $setUpProcessCallbacks = []; /** * All of the registered "setUp" test case callbacks. * * @var array */ protected $setUpTestCaseCallbacks = []; /** * All of the registered "setUp" test database callbacks. * * @var array */ protected $setUpTestDatabaseCallbacks = []; /** * All of the registered "tearDown" process callbacks. * * @var array */ protected $tearDownProcessCallbacks = []; /** * All of the registered "tearDown" test case callbacks. * * @var array */ protected $tearDownTestCaseCallbacks = []; /** * Create a new parallel testing instance. * * @param \Illuminate\Contracts\Container\Container $container * @return void */ public function __construct(Container $container) { $this->container = $container; } /** * Set a callback that should be used when resolving options. * * @param \Closure|null $resolver * @return void */ public function resolveOptionsUsing($resolver) { $this->optionsResolver = $resolver; } /** * Set a callback that should be used when resolving the unique process token. * * @param \Closure|null $resolver * @return void */ public function resolveTokenUsing($resolver) { $this->tokenResolver = $resolver; } /** * Register a "setUp" process callback. * * @param callable $callback * @return void */ public function setUpProcess($callback) { $this->setUpProcessCallbacks[] = $callback; } /** * Register a "setUp" test case callback. * * @param callable $callback * @return void */ public function setUpTestCase($callback) { $this->setUpTestCaseCallbacks[] = $callback; } /** * Register a "setUp" test database callback. * * @param callable $callback * @return void */ public function setUpTestDatabase($callback) { $this->setUpTestDatabaseCallbacks[] = $callback; } /** * Register a "tearDown" process callback. * * @param callable $callback * @return void */ public function tearDownProcess($callback) { $this->tearDownProcessCallbacks[] = $callback; } /** * Register a "tearDown" test case callback. * * @param callable $callback * @return void */ public function tearDownTestCase($callback) { $this->tearDownTestCaseCallbacks[] = $callback; } /** * Call all of the "setUp" process callbacks. * * @return void */ public function callSetUpProcessCallbacks() { $this->whenRunningInParallel(function () { foreach ($this->setUpProcessCallbacks as $callback) { $this->container->call($callback, [ 'token' => $this->token(), ]); } }); } /** * Call all of the "setUp" test case callbacks. * * @param \Illuminate\Foundation\Testing\TestCase $testCase * @return void */ public function callSetUpTestCaseCallbacks($testCase) { $this->whenRunningInParallel(function () use ($testCase) { foreach ($this->setUpTestCaseCallbacks as $callback) { $this->container->call($callback, [ 'testCase' => $testCase, 'token' => $this->token(), ]); } }); } /** * Call all of the "setUp" test database callbacks. * * @param string $database * @return void */ public function callSetUpTestDatabaseCallbacks($database) { $this->whenRunningInParallel(function () use ($database) { foreach ($this->setUpTestDatabaseCallbacks as $callback) { $this->container->call($callback, [ 'database' => $database, 'token' => $this->token(), ]); } }); } /** * Call all of the "tearDown" process callbacks. * * @return void */ public function callTearDownProcessCallbacks() { $this->whenRunningInParallel(function () { foreach ($this->tearDownProcessCallbacks as $callback) { $this->container->call($callback, [ 'token' => $this->token(), ]); } }); } /** * Call all of the "tearDown" test case callbacks. * * @param \Illuminate\Foundation\Testing\TestCase $testCase * @return void */ public function callTearDownTestCaseCallbacks($testCase) { $this->whenRunningInParallel(function () use ($testCase) { foreach ($this->tearDownTestCaseCallbacks as $callback) { $this->container->call($callback, [ 'testCase' => $testCase, 'token' => $this->token(), ]); } }); } /** * Get a parallel testing option. * * @param string $option * @return mixed */ public function option($option) { $optionsResolver = $this->optionsResolver ?: function ($option) { $option = 'LARAVEL_PARALLEL_TESTING_'.Str::upper($option); return $_SERVER[$option] ?? false; }; return $optionsResolver($option); } /** * Gets a unique test token. * * @return string|false */ public function token() { return $this->tokenResolver ? call_user_func($this->tokenResolver) : ($_SERVER['TEST_TOKEN'] ?? false); } /** * Apply the callback if tests are running in parallel. * * @param callable $callback * @return void */ protected function whenRunningInParallel($callback) { if ($this->inParallel()) { $callback(); } } /** * Indicates if the current tests are been run in parallel. * * @return bool */ protected function inParallel() { return ! empty($_SERVER['LARAVEL_PARALLEL_TESTING']) && $this->token(); } }