From c2a096b3fa956caac4d3b9c584ba991661630de9 Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Wed, 29 Mar 2023 18:17:55 -0700 Subject: [PATCH] (REF) Testing - Extract class-file "TAP7" --- Civi/Test/TAP.php | 229 +----------------------------------------- Civi/Test/TAP7.php | 245 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 246 insertions(+), 228 deletions(-) create mode 100644 Civi/Test/TAP7.php diff --git a/Civi/Test/TAP.php b/Civi/Test/TAP.php index e7bcd88555..585a7d01fa 100644 --- a/Civi/Test/TAP.php +++ b/Civi/Test/TAP.php @@ -16,232 +16,5 @@ if (version_compare(\PHPUnit\Runner\Version::id(), '7.0.0', '<')) { class_alias('Civi\Test\TAPLegacy', 'Civi\Test\TAP'); } else { - class TAP extends \PHPUnit\Util\Printer implements \PHPUnit\Framework\TestListener { - - /** - * @var int - */ - protected $testNumber = 0; - - /** - * @var int - */ - protected $testSuiteLevel = 0; - - /** - * @var bool - */ - protected $testSuccessful = TRUE; - - /** - * Constructor. - * - * @param mixed $out - * - * @throws \PHPUnit\Framework\Exception - * - * @since Method available since Release 3.3.4 - */ - public function __construct($out = NULL) { - parent::__construct($out); - $this - ->write("TAP version 13\n"); - } - - /** - * An error occurred. - * - * @param \PHPUnit\Framework\Test $test - * @param \Throwable $t - * @param float $time - */ - public function addError(\PHPUnit\Framework\Test $test, \Throwable $t, float $time): void { - $this - ->writeNotOk($test, 'Error'); - } - - /** - * A failure occurred. - * - * @param \PHPUnit\Framework\Test $test - * @param \PHPUnit\Framework\AssertionFailedError $e - * @param float $time - */ - public function addFailure(\PHPUnit\Framework\Test $test, \PHPUnit\Framework\AssertionFailedError $e, float $time): void { - $this - ->writeNotOk($test, 'Failure'); - $message = explode("\n", \PHPUnit\Framework\TestFailure::exceptionToString($e)); - $diagnostic = array( - 'message' => $message[0], - 'severity' => 'fail', - ); - if ($e instanceof \PHPUnit\Framework\ExpectationFailedException) { - $cf = $e - ->getComparisonFailure(); - if ($cf !== NULL) { - $diagnostic['data'] = array( - 'got' => $cf - ->getActual(), - 'expected' => $cf - ->getExpected(), - ); - } - } - - if (function_exists('yaml_emit')) { - $content = \yaml_emit($diagnostic, YAML_UTF8_ENCODING); - $content = ' ' . strtr($content, ["\n" => "\n "]); - } - else { - // Any valid JSON document is a valid YAML document. - $content = json_encode($diagnostic, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); - // For closest match, drop outermost {}'s. Realign indentation. - $content = substr($content, 0, strrpos($content, "}")) . ' }'; - $content = ' ' . ltrim($content); - $content = sprintf(" ---\n%s\n ...\n", $content); - } - - $this->write($content); - } - - /** - * Incomplete test. - * - * @param \PHPUnit\Framework\Test $test - * @param \Throwable $t - * @param float $time - */ - public function addIncompleteTest(\PHPUnit\Framework\Test $test, \Throwable $t, float $time): void { - $this - ->writeNotOk($test, '', 'TODO Incomplete Test'); - } - - /** - * Risky test. - * - * @param \PHPUnit\Framework\Test $test - * @param \Throwable $t - * @param float $time - * - * @since Method available since Release 4.0.0 - */ - public function addRiskyTest(\PHPUnit\Framework\Test $test, \Throwable $t, float $time): void { - $this - ->write(sprintf("ok %d - # RISKY%s\n", $this->testNumber, $t - ->getMessage() != '' ? ' ' . $t - ->getMessage() : '')); - $this->testSuccessful = FALSE; - } - - /** - * Skipped test. - * - * @param \PHPUnit\Framework\Test $test - * @param \Throwable $t - * @param float $time - * - * @since Method available since Release 3.0.0 - */ - public function addSkippedTest(\PHPUnit\Framework\Test $test, \Throwable $t, float $time): void { - $this - ->write(sprintf("ok %d - # SKIP%s\n", $this->testNumber, $t - ->getMessage() != '' ? ' ' . $t - ->getMessage() : '')); - $this->testSuccessful = FALSE; - } - - /** - * Warning test. - * - * @param \PHPUnit\Framework\Test $test - * @param \PHPUnit\Framework\Warning $e - * @param float $time - * - * @since Method available since Release 3.0.0 - */ - public function addWarning(\PHPUnit\Framework\Test $test, \PHPUnit\Framework\Warning $e, float $time): void { - $this - ->write(sprintf("ok %d - # Warning%s\n", $this->testNumber, $e - ->getMessage() != '' ? ' ' . $e - ->getMessage() : '')); - $this->testSuccessful = FALSE; - } - - /** - * A testsuite started. - * - * @param \PHPUnit\Framework\TestSuite $suite - */ - public function startTestSuite(\PHPUnit\Framework\TestSuite $suite): void { - $this->testSuiteLevel++; - } - - /** - * A testsuite ended. - * - * @param \PHPUnit\Framework\TestSuite $suite - */ - public function endTestSuite(\PHPUnit\Framework\TestSuite $suite): void { - $this->testSuiteLevel--; - if ($this->testSuiteLevel == 0) { - $this - ->write(sprintf("1..%d\n", $this->testNumber)); - } - } - - /** - * A test started. - * - * @param \PHPUnit\Framework\Test $test - */ - public function startTest(\PHPUnit\Framework\Test $test): void { - $this->testNumber++; - $this->testSuccessful = TRUE; - } - - /** - * A test ended. - * - * @param \PHPUnit\Framework\Test $test - * @param float $time - */ - public function endTest(\PHPUnit\Framework\Test $test, float $time): void { - if ($this->testSuccessful === TRUE) { - $this - ->write(sprintf("ok %d - %s\n", $this->testNumber, \PHPUnit\Util\Test::describeAsString($test))); - } - $this - ->writeDiagnostics($test); - } - - /** - * @param \PHPUnit\Framework\Test $test - * @param string $prefix - * @param string $directive - */ - protected function writeNotOk(\PHPUnit\Framework\Test $test, $prefix = '', $directive = ''): void { - $this - ->write(sprintf("not ok %d - %s%s%s\n", $this->testNumber, $prefix != '' ? $prefix . ': ' : '', \PHPUnit\Util\Test::describeAsString($test), $directive != '' ? ' # ' . $directive : '')); - $this->testSuccessful = FALSE; - } - - /** - * @param \PHPUnit\Framework\Test $test - */ - private function writeDiagnostics(\PHPUnit\Framework\Test $test): void { - if (!$test instanceof \PHPUnit\Framework\TestCase) { - return; - } - if (!$test - ->hasOutput()) { - return; - } - foreach (explode("\n", trim($test - ->getActualOutput())) as $line) { - $this - ->write(sprintf("# %s\n", $line)); - } - } - - } + class_alias('Civi\Test\TAP7', 'Civi\Test\TAP'); } diff --git a/Civi/Test/TAP7.php b/Civi/Test/TAP7.php new file mode 100644 index 0000000000..3497167e02 --- /dev/null +++ b/Civi/Test/TAP7.php @@ -0,0 +1,245 @@ +write("TAP version 13\n"); + } + + /** + * An error occurred. + * + * @param \PHPUnit\Framework\Test $test + * @param \Throwable $t + * @param float $time + */ + public function addError(\PHPUnit\Framework\Test $test, \Throwable $t, float $time): void { + $this + ->writeNotOk($test, 'Error'); + } + + /** + * A failure occurred. + * + * @param \PHPUnit\Framework\Test $test + * @param \PHPUnit\Framework\AssertionFailedError $e + * @param float $time + */ + public function addFailure(\PHPUnit\Framework\Test $test, \PHPUnit\Framework\AssertionFailedError $e, float $time): void { + $this + ->writeNotOk($test, 'Failure'); + $message = explode("\n", \PHPUnit\Framework\TestFailure::exceptionToString($e)); + $diagnostic = array( + 'message' => $message[0], + 'severity' => 'fail', + ); + if ($e instanceof \PHPUnit\Framework\ExpectationFailedException) { + $cf = $e + ->getComparisonFailure(); + if ($cf !== NULL) { + $diagnostic['data'] = array( + 'got' => $cf + ->getActual(), + 'expected' => $cf + ->getExpected(), + ); + } + } + + if (function_exists('yaml_emit')) { + $content = \yaml_emit($diagnostic, YAML_UTF8_ENCODING); + $content = ' ' . strtr($content, ["\n" => "\n "]); + } + else { + // Any valid JSON document is a valid YAML document. + $content = json_encode($diagnostic, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES); + // For closest match, drop outermost {}'s. Realign indentation. + $content = substr($content, 0, strrpos($content, "}")) . ' }'; + $content = ' ' . ltrim($content); + $content = sprintf(" ---\n%s\n ...\n", $content); + } + + $this->write($content); + } + + /** + * Incomplete test. + * + * @param \PHPUnit\Framework\Test $test + * @param \Throwable $t + * @param float $time + */ + public function addIncompleteTest(\PHPUnit\Framework\Test $test, \Throwable $t, float $time): void { + $this + ->writeNotOk($test, '', 'TODO Incomplete Test'); + } + + /** + * Risky test. + * + * @param \PHPUnit\Framework\Test $test + * @param \Throwable $t + * @param float $time + * + * @since Method available since Release 4.0.0 + */ + public function addRiskyTest(\PHPUnit\Framework\Test $test, \Throwable $t, float $time): void { + $this + ->write(sprintf("ok %d - # RISKY%s\n", $this->testNumber, $t + ->getMessage() != '' ? ' ' . $t + ->getMessage() : '')); + $this->testSuccessful = FALSE; + } + + /** + * Skipped test. + * + * @param \PHPUnit\Framework\Test $test + * @param \Throwable $t + * @param float $time + * + * @since Method available since Release 3.0.0 + */ + public function addSkippedTest(\PHPUnit\Framework\Test $test, \Throwable $t, float $time): void { + $this + ->write(sprintf("ok %d - # SKIP%s\n", $this->testNumber, $t + ->getMessage() != '' ? ' ' . $t + ->getMessage() : '')); + $this->testSuccessful = FALSE; + } + + /** + * Warning test. + * + * @param \PHPUnit\Framework\Test $test + * @param \PHPUnit\Framework\Warning $e + * @param float $time + * + * @since Method available since Release 3.0.0 + */ + public function addWarning(\PHPUnit\Framework\Test $test, \PHPUnit\Framework\Warning $e, float $time): void { + $this + ->write(sprintf("ok %d - # Warning%s\n", $this->testNumber, $e + ->getMessage() != '' ? ' ' . $e + ->getMessage() : '')); + $this->testSuccessful = FALSE; + } + + /** + * A testsuite started. + * + * @param \PHPUnit\Framework\TestSuite $suite + */ + public function startTestSuite(\PHPUnit\Framework\TestSuite $suite): void { + $this->testSuiteLevel++; + } + + /** + * A testsuite ended. + * + * @param \PHPUnit\Framework\TestSuite $suite + */ + public function endTestSuite(\PHPUnit\Framework\TestSuite $suite): void { + $this->testSuiteLevel--; + if ($this->testSuiteLevel == 0) { + $this + ->write(sprintf("1..%d\n", $this->testNumber)); + } + } + + /** + * A test started. + * + * @param \PHPUnit\Framework\Test $test + */ + public function startTest(\PHPUnit\Framework\Test $test): void { + $this->testNumber++; + $this->testSuccessful = TRUE; + } + + /** + * A test ended. + * + * @param \PHPUnit\Framework\Test $test + * @param float $time + */ + public function endTest(\PHPUnit\Framework\Test $test, float $time): void { + if ($this->testSuccessful === TRUE) { + $this + ->write(sprintf("ok %d - %s\n", $this->testNumber, \PHPUnit\Util\Test::describeAsString($test))); + } + $this + ->writeDiagnostics($test); + } + + /** + * @param \PHPUnit\Framework\Test $test + * @param string $prefix + * @param string $directive + */ + protected function writeNotOk(\PHPUnit\Framework\Test $test, $prefix = '', $directive = ''): void { + $this + ->write(sprintf("not ok %d - %s%s%s\n", $this->testNumber, $prefix != '' ? $prefix . ': ' : '', \PHPUnit\Util\Test::describeAsString($test), $directive != '' ? ' # ' . $directive : '')); + $this->testSuccessful = FALSE; + } + + /** + * @param \PHPUnit\Framework\Test $test + */ + private function writeDiagnostics(\PHPUnit\Framework\Test $test): void { + if (!$test instanceof \PHPUnit\Framework\TestCase) { + return; + } + if (!$test + ->hasOutput()) { + return; + } + foreach (explode("\n", trim($test + ->getActualOutput())) as $line) { + $this + ->write(sprintf("# %s\n", $line)); + } + } + +} -- 2.25.1