/** * Returns a description for an exception. * * @param Exception $e * @return string * @since Method available since Release 3.2.0 */ public static function exceptionToString(Exception $e) { if ($e instanceof PHPUnit_Framework_SelfDescribing) { $buffer = $e->toString(); if ($e instanceof PHPUnit_Framework_ExpectationFailedException && $e->getComparisonFailure()) { $buffer = $buffer . $e->getComparisonFailure()->getDiff(); } if (!empty($buffer)) { $buffer = trim($buffer) . "\n"; } } elseif ($e instanceof PHPUnit_Framework_Error) { $buffer = $e->getMessage() . "\n"; } elseif ($e instanceof PHPUnit_Framework_ExceptionWrapper) { $buffer = $e->getClassname() . ': ' . $e->getMessage() . "\n"; } else { $buffer = get_class($e) . ': ' . $e->getMessage() . "\n"; } return $buffer; }
/** * @param string $message * @param PHPUnit_Framework_Test $test * @param Exception $e * * @return string */ protected function composeMessage($message, PHPUnit_Framework_Test $test, Exception $e) { $message = "Test {$message} (" . $test->getName() . " in class " . get_class($test) . "): " . $e->getMessage(); if ($e instanceof PHPUnit_Framework_ExpectationFailedException && $e->getComparisonFailure()) { $message .= "\n" . $e->getComparisonFailure()->getDiff(); } return $message; }
/** * This method is called when a test method did not execute successfully. * * @param Exception $e */ protected function onNotSuccessfulTest(Exception $e) { if (!$this->serverRunning) { throw $e; } try { $this->restoreSessionStateAfterFailedTest(); $buffer = ''; if ($this->captureScreenshotOnFailure) { $buffer .= 'Current URL: ' . $this->drivers[0]->getLocation() . "\n"; $screenshotInfo = $this->takeScreenshot(); if ($screenshotInfo != '') { $buffer .= $screenshotInfo; } } $this->stopSession(); } catch (Exception $another) { $buffer = "Issues while capturing the screenshot:\n" . $another->getMessage(); } if ($e instanceof PHPUnit_Framework_ExpectationFailedException && is_object($e->getComparisonFailure())) { $message = $e->getComparisonFailure()->toString(); } else { $message = $e->getMessage(); } $buffer .= "\n" . $message; // gain the screenshot path, lose the stack trace if ($this->captureScreenshotOnFailure) { throw new PHPUnit_Framework_Error($buffer, $e->getCode(), $e->getFile(), $e->getLine(), $e); } // yes to stack trace and everything if ($e instanceof PHPUnit_Framework_IncompleteTestError || $e instanceof PHPUnit_Framework_SkippedTestError || $e instanceof PHPUnit_Framework_AssertionFailedError) { throw $e; } // yes to stack trace, only for F tests // PHPUnit issue 471 prevents getTrace() from being useful throw new PHPUnit_Framework_Error($buffer, $e->getCode(), $e->getFile(), $e->getLine(), $e); }
/** * Returns a description for an exception. * * @param Exception $e * @return string * @since Method available since Release 3.2.0 */ public static function exceptionToString(Exception $e) { if ($e instanceof PHPUnit_Framework_SelfDescribing) { if ($e instanceof PHPUnit_Framework_ExpectationFailedException) { $comparisonFailure = $e->getComparisonFailure(); $description = $e->getDescription(); $message = $e->getCustomMessage(); if ($message == '') { $buffer = ''; } else { $buffer = $message . "\n"; } if ($comparisonFailure !== NULL) { if ($comparisonFailure->identical()) { if ($comparisonFailure instanceof PHPUnit_Framework_ComparisonFailure_Object) { $buffer .= 'Failed asserting that two variables ' . "reference the same object.\n"; } else { $buffer .= $comparisonFailure->toString() . "\n"; } } else { if ($comparisonFailure instanceof PHPUnit_Framework_ComparisonFailure_Scalar) { $buffer .= sprintf("Failed asserting that %s matches expected %s.\n", PHPUnit_Util_Type::toString($comparisonFailure->getActual()), PHPUnit_Util_Type::toString($comparisonFailure->getExpected())); } else { if ($comparisonFailure instanceof PHPUnit_Framework_ComparisonFailure_Array || $comparisonFailure instanceof PHPUnit_Framework_ComparisonFailure_Object || $comparisonFailure instanceof PHPUnit_Framework_ComparisonFailure_String) { $buffer .= sprintf("Failed asserting that two %ss are equal.\n%s\n", strtolower(substr(get_class($comparisonFailure), 36)), $comparisonFailure->toString()); } } } } else { $buffer .= $e->toString(); if (!empty($buffer)) { $buffer .= "\n"; } if (strpos($buffer, $description) === FALSE) { $buffer .= $description . "\n"; } } } else { $buffer = $e->toString(); if (!empty($buffer)) { $buffer .= "\n"; } } } else { if ($e instanceof PHPUnit_Framework_Error) { $buffer = $e->getMessage() . "\n"; } else { $buffer = get_class($e) . ': ' . $e->getMessage() . "\n"; } } return $buffer; }
/** * This method is called when a test method did not execute successfully. * * @param Exception $e */ protected function onNotSuccessfulTest(Exception $e) { if ($e instanceof PHPUnit_Framework_ExpectationFailedException) { $buffer = 'Current URL: ' . $this->drivers[0]->getLocation() . "\n"; if ($this->captureScreenshotOnFailure && !empty($this->screenshotPath) && !empty($this->screenshotUrl)) { $filename = $this->getScreenshotPath() . $this->testId . '.png'; $this->drivers[0]->captureEntirePageScreenshot($filename); $buffer .= 'Screenshot: ' . $this->screenshotUrl . '/' . $this->testId . ".png\n"; } } $this->stopSession(); self::$sessionId = NULL; if ($e instanceof PHPUnit_Framework_ExpectationFailedException) { if (is_object($e->getComparisonFailure())) { $message = $e->getComparisonFailure()->toString(); } else { $message = $e->getMessage(); } $buffer .= "\n" . $message; throw new PHPUnit_Framework_ExpectationFailedException($buffer); } throw $e; }