Viewing file: TestFailure.php (3.53 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?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 get_class; use function sprintf; use function trim; use PHPUnit\Framework\Error\Error; use Throwable;
/** * @internal This class is not covered by the backward compatibility promise for PHPUnit */ final class TestFailure { /** * @var null|Test */ private $failedTest;
/** * @var Throwable */ private $thrownException;
/** * @var string */ private $testName;
/** * Returns a description for an exception. */ public static function exceptionToString(Throwable $e): string { if ($e instanceof SelfDescribing) { $buffer = $e->toString();
if ($e instanceof ExpectationFailedException && $e->getComparisonFailure()) { $buffer .= $e->getComparisonFailure()->getDiff(); }
if ($e instanceof PHPTAssertionFailedError) { $buffer .= $e->getDiff(); }
if (!empty($buffer)) { $buffer = trim($buffer) . "\n"; }
return $buffer; }
if ($e instanceof Error) { return $e->getMessage() . "\n"; }
if ($e instanceof ExceptionWrapper) { return $e->getClassName() . ': ' . $e->getMessage() . "\n"; }
return get_class($e) . ': ' . $e->getMessage() . "\n"; }
/** * Constructs a TestFailure with the given test and exception. */ public function __construct(Test $failedTest, Throwable $t) { if ($failedTest instanceof SelfDescribing) { $this->testName = $failedTest->toString(); } else { $this->testName = get_class($failedTest); }
if (!$failedTest instanceof TestCase || !$failedTest->isInIsolation()) { $this->failedTest = $failedTest; }
$this->thrownException = $t; }
/** * Returns a short description of the failure. */ public function toString(): string { return sprintf( '%s: %s', $this->testName, $this->thrownException->getMessage(), ); }
/** * Returns a description for the thrown exception. */ public function getExceptionAsString(): string { return self::exceptionToString($this->thrownException); }
/** * Returns the name of the failing test (including data set, if any). */ public function getTestName(): string { return $this->testName; }
/** * Returns the failing test. * * Note: The test object is not set when the test is executed in process * isolation. * * @see Exception */ public function failedTest(): ?Test { return $this->failedTest; }
/** * Gets the thrown exception. */ public function thrownException(): Throwable { return $this->thrownException; }
/** * Returns the exception's message. */ public function exceptionMessage(): string { return $this->thrownException()->getMessage(); }
/** * Returns true if the thrown exception * is of type AssertionFailedError. */ public function isFailure(): bool { return $this->thrownException() instanceof AssertionFailedError; } }
|