summaryrefslogtreecommitdiff
path: root/vendor/phpunit/php-invoker/src/Invoker.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/phpunit/php-invoker/src/Invoker.php')
-rw-r--r--vendor/phpunit/php-invoker/src/Invoker.php69
1 files changed, 0 insertions, 69 deletions
diff --git a/vendor/phpunit/php-invoker/src/Invoker.php b/vendor/phpunit/php-invoker/src/Invoker.php
deleted file mode 100644
index 656f4180a..000000000
--- a/vendor/phpunit/php-invoker/src/Invoker.php
+++ /dev/null
@@ -1,69 +0,0 @@
-<?php declare(strict_types=1);
-/*
- * This file is part of phpunit/php-invoker.
- *
- * (c) Sebastian Bergmann <sebastian@phpunit.de>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
-namespace SebastianBergmann\Invoker;
-
-use const SIGALRM;
-use function call_user_func_array;
-use function function_exists;
-use function pcntl_alarm;
-use function pcntl_async_signals;
-use function pcntl_signal;
-use function sprintf;
-use Throwable;
-
-final class Invoker
-{
- /**
- * @var int
- */
- private $timeout;
-
- /**
- * @throws Throwable
- */
- public function invoke(callable $callable, array $arguments, int $timeout)
- {
- if (!$this->canInvokeWithTimeout()) {
- throw new ProcessControlExtensionNotLoadedException(
- 'The pcntl (process control) extension for PHP is required'
- );
- }
-
- pcntl_signal(
- SIGALRM,
- function (): void {
- throw new TimeoutException(
- sprintf(
- 'Execution aborted after %d second%s',
- $this->timeout,
- $this->timeout === 1 ? '' : 's'
- )
- );
- },
- true
- );
-
- $this->timeout = $timeout;
-
- pcntl_async_signals(true);
- pcntl_alarm($timeout);
-
- try {
- return call_user_func_array($callable, $arguments);
- } finally {
- pcntl_alarm(0);
- }
- }
-
- public function canInvokeWithTimeout(): bool
- {
- return function_exists('pcntl_signal') && function_exists('pcntl_async_signals') && function_exists('pcntl_alarm');
- }
-}