[
MAINHACK
]
Mail Test
BC
Config Scan
HOME
Create...
New File
New Folder
Viewing / Editing File: TestBuilder.php
<?php declare(strict_types=1); /* * This file is part of PHPUnit. * * (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 PHPUnit\Framework; use function assert; use function count; use function get_class; use function sprintf; use function trim; use PHPUnit\Util\Filter; use PHPUnit\Util\InvalidDataSetException; use PHPUnit\Util\Test as TestUtil; use ReflectionClass; use Throwable; /** * @internal This class is not covered by the backward compatibility promise for PHPUnit */ final class TestBuilder { public function build(ReflectionClass $theClass, string $methodName): Test { $className = $theClass->getName(); if (!$theClass->isInstantiable()) { return new ErrorTestCase( sprintf('Cannot instantiate class "%s".', $className), ); } $backupSettings = TestUtil::getBackupSettings( $className, $methodName, ); $preserveGlobalState = TestUtil::getPreserveGlobalStateSettings( $className, $methodName, ); $runTestInSeparateProcess = TestUtil::getProcessIsolationSettings( $className, $methodName, ); $runClassInSeparateProcess = TestUtil::getClassProcessIsolationSettings( $className, $methodName, ); $constructor = $theClass->getConstructor(); if ($constructor === null) { throw new Exception('No valid test provided.'); } $parameters = $constructor->getParameters(); // TestCase() or TestCase($name) if (count($parameters) < 2) { $test = $this->buildTestWithoutData($className); } // TestCase($name, $data) else { try { $data = TestUtil::getProvidedData( $className, $methodName, ); } catch (IncompleteTestError $e) { $message = sprintf( "Test for %s::%s marked incomplete by data provider\n%s", $className, $methodName, $this->throwableToString($e), ); $data = new IncompleteTestCase($className, $methodName, $message); } catch (SkippedTestError $e) { $message = sprintf( "Test for %s::%s skipped by data provider\n%s", $className, $methodName, $this->throwableToString($e), ); $data = new SkippedTestCase($className, $methodName, $message); } catch (Throwable $t) { $message = sprintf( "The data provider specified for %s::%s is invalid.\n%s", $className, $methodName, $this->throwableToString($t), ); $data = new ErrorTestCase($message); } // Test method with @dataProvider. if (isset($data)) { $test = $this->buildDataProviderTestSuite( $methodName, $className, $data, $runTestInSeparateProcess, $preserveGlobalState, $runClassInSeparateProcess, $backupSettings, ); } else { $test = $this->buildTestWithoutData($className); } } if ($test instanceof TestCase) { $test->setName($methodName); $this->configureTestCase( $test, $runTestInSeparateProcess, $preserveGlobalState, $runClassInSeparateProcess, $backupSettings, ); } return $test; } /** @psalm-param class-string $className */ private function buildTestWithoutData(string $className) { return new $className; } /** @psalm-param class-string $className */ private function buildDataProviderTestSuite( string $methodName, string $className, $data, bool $runTestInSeparateProcess, ?bool $preserveGlobalState, bool $runClassInSeparateProcess, array $backupSettings ): DataProviderTestSuite { $dataProviderTestSuite = new DataProviderTestSuite( $className . '::' . $methodName, ); $groups = TestUtil::getGroups($className, $methodName); if ($data instanceof ErrorTestCase || $data instanceof SkippedTestCase || $data instanceof IncompleteTestCase) { $dataProviderTestSuite->addTest($data, $groups); } else { foreach ($data as $_dataName => $_data) { $_test = new $className($methodName, $_data, $_dataName); assert($_test instanceof TestCase); $this->configureTestCase( $_test, $runTestInSeparateProcess, $preserveGlobalState, $runClassInSeparateProcess, $backupSettings, ); $dataProviderTestSuite->addTest($_test, $groups); } } return $dataProviderTestSuite; } private function configureTestCase( TestCase $test, bool $runTestInSeparateProcess, ?bool $preserveGlobalState, bool $runClassInSeparateProcess, array $backupSettings ): void { if ($runTestInSeparateProcess) { $test->setRunTestInSeparateProcess(true); if ($preserveGlobalState !== null) { $test->setPreserveGlobalState($preserveGlobalState); } } if ($runClassInSeparateProcess) { $test->setRunClassInSeparateProcess(true); if ($preserveGlobalState !== null) { $test->setPreserveGlobalState($preserveGlobalState); } } if ($backupSettings['backupGlobals'] !== null) { $test->setBackupGlobals($backupSettings['backupGlobals']); } if ($backupSettings['backupStaticAttributes'] !== null) { $test->setBackupStaticAttributes( $backupSettings['backupStaticAttributes'], ); } } private function throwableToString(Throwable $t): string { $message = $t->getMessage(); if (empty(trim($message))) { $message = '<no message>'; } if ($t instanceof InvalidDataSetException) { return sprintf( "%s\n%s", $message, Filter::getFilteredStacktrace($t), ); } return sprintf( "%s: %s\n%s", get_class($t), $message, Filter::getFilteredStacktrace($t), ); } }
Save Changes
Cancel / Back
Close ×
Server Info
Hostname: server1.winmanyltd.com
Server IP: 203.161.60.52
PHP Version: 8.3.27
Server Software: Apache
System: Linux server1.winmanyltd.com 4.18.0-553.22.1.el8_10.x86_64 #1 SMP Tue Sep 24 05:16:59 EDT 2024 x86_64
HDD Total: 117.98 GB
HDD Free: 59.8 GB
Domains on IP: N/A (Requires external lookup)
System Features
Safe Mode:
Off
disable_functions:
None
allow_url_fopen:
On
allow_url_include:
Off
magic_quotes_gpc:
Off
register_globals:
Off
open_basedir:
None
cURL:
Enabled
ZipArchive:
Enabled
MySQLi:
Enabled
PDO:
Enabled
wget:
Yes
curl (cmd):
Yes
perl:
Yes
python:
Yes (py3)
gcc:
Yes
pkexec:
Yes
git:
Yes
User Info
Username: eliosofonline
User ID (UID): 1002
Group ID (GID): 1003
Script Owner UID: 1002
Current Dir Owner: 1002