Figures out which diff class to use for the input types then
instantiates that class and returns the object.
public static diffEqual ( mixed $expected, mixed $actual, string $message = '' ) : PHPUnit_Framework_ComparisonFailure | ||
$expected | mixed | Expected value retrieved. |
$actual | mixed | Actual value retrieved. |
$message | string | A string which is prefixed on all returned lines in the difference output. |
리턴 | PHPUnit_Framework_ComparisonFailure |
/** * Send a command to the Selenium RC server (via curl). * * @param string $command * @param array $arguments * @return string * @author Seth Casana <*****@*****.**> */ protected function doCommand($command, array $arguments = array()) { $url = sprintf('http://%s:%s/selenium-server/driver/?cmd=%s', $this->host, $this->port, urlencode($command)); $numArguments = count($arguments); for ($i = 0; $i < $numArguments; $i++) { $argNum = strval($i + 1); $url .= sprintf('&%s=%s', $argNum, urlencode(trim($arguments[$i]))); } if (isset($this->sessionId)) { $url .= sprintf('&%s=%s', 'sessionId', $this->sessionId); } $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HEADER, 0); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 60); $response = curl_exec($curl); $info = curl_getinfo($curl); if (!$response) { throw new RuntimeException(curl_error($curl)); } curl_close($curl); if ($info['http_code'] != 200) { $this->stop(); throw new RuntimeException('The response from the Selenium RC server is invalid: ' . $response); } if (!preg_match('/^OK/', $response)) { throw new PHPUnit_Framework_ExpectationFailedException('Non-Ok response from Selenium RC server was received', PHPUnit_Framework_ComparisonFailure::diffEqual('OK', $response), sprintf("Response from Selenium RC server for %s(%s).\n%s.\n", $command, implode(', ', $arguments), $response)); } return $response; }
/** * @param mixed $other The value passed to evaluate() which failed the * constraint check. * @param string $description A string with extra description of what was * going on while the evaluation failed. * @param boolean $not Flag to indicate negation. * @throws PHPUnit_Framework_ExpectationFailedException */ public function fail($other, $description, $not = FALSE) { $failureDescription = $this->failureDescription($other, $description, $not); if (!$not) { if ($this->value instanceof DOMDocument) { $value = $this->domToText($this->value); } else { $value = $this->value; } if ($other instanceof DOMDocument) { $other = $this->domToText($other); } throw new PHPUnit_Framework_ExpectationFailedException($failureDescription, PHPUnit_Framework_ComparisonFailure::diffEqual($value, $other), $description); } else { throw new PHPUnit_Framework_ExpectationFailedException($failureDescription, NULL); } }
/** * Runs a test and collects its result in a TestResult instance. * * @param PHPUnit_Framework_TestResult $result * @param array $options Array with ini settings for the php instance run, * key being the name if the setting, value the ini value. * @return PHPUnit_Framework_TestResult * @access public */ public function run(PHPUnit_Framework_TestResult $result = NULL, $options = array()) { if (!class_exists('PEAR_RunTest', FALSE)) { throw new RuntimeException('Class PEAR_RunTest not found.'); } if ($result === NULL) { $result = new PHPUnit_Framework_TestResult(); } if (!is_array($options)) { throw new InvalidArgumentException(); } $options = array_merge($options, $this->options); $coverage = $result->getCollectCodeCoverageInformation(); if ($coverage) { $options = array('coverage' => TRUE); } else { $options = array(); } $runner = new PEAR_RunTest(new PHPUnit_Extensions_PhptTestCase_Logger(), $options); if ($coverage) { $runner->xdebug_loaded = TRUE; } else { $runner->xdebug_loaded = FALSE; } $result->startTest($this); PHPUnit_Util_Timer::start(); $buffer = $runner->run($this->filename, $options); $time = PHPUnit_Util_Timer::stop(); $base = basename($this->filename); $path = dirname($this->filename); $coverageFile = $path . DIRECTORY_SEPARATOR . str_replace('.phpt', '.xdebug', $base); $diffFile = $path . DIRECTORY_SEPARATOR . str_replace('.phpt', '.diff', $base); $expFile = $path . DIRECTORY_SEPARATOR . str_replace('.phpt', '.exp', $base); $logFile = $path . DIRECTORY_SEPARATOR . str_replace('.phpt', '.log', $base); $outFile = $path . DIRECTORY_SEPARATOR . str_replace('.phpt', '.out', $base); $phpFile = $path . DIRECTORY_SEPARATOR . str_replace('.phpt', '.php', $base); if (is_object($buffer) && $buffer instanceof PEAR_Error) { $result->addError($this, new RuntimeException($buffer->getMessage()), $time); } else { if ($buffer == 'SKIPPED') { $result->addFailure($this, new PHPUnit_Framework_SkippedTestError(), 0); } else { if ($buffer != 'PASSED') { $result->addFailure($this, PHPUnit_Framework_ComparisonFailure::diffEqual(file_get_contents($expFile), file_get_contents($outFile), FALSE, $this->getName()), $time); } } } foreach (array($diffFile, $expFile, $logFile, $phpFile, $outFile) as $file) { if (file_exists($file)) { unlink($file); } } if ($coverage) { eval('$coverageData = ' . file_get_contents($coverageFile) . ';'); unset($coverageData[$phpFile]); $codeCoverageInformation = array('test' => $this, 'files' => $coverageData); $result->appendCodeCoverageInformation($this, $codeCoverageInformation); unlink($coverageFile); } $result->endTest($this, $time); return $result; }
/** * Runs a test and collects its result in a TestResult instance. * * @param PHPUnit_Framework_TestResult $result * @param array $options * @return PHPUnit_Framework_TestResult */ public function run(PHPUnit_Framework_TestResult $result = NULL, array $options = array()) { if (!class_exists('PEAR_RunTest', FALSE)) { throw new PHPUnit_Framework_Exception('Class PEAR_RunTest not found.'); } if (isset($GLOBALS['_PEAR_destructor_object_list']) && is_array($GLOBALS['_PEAR_destructor_object_list']) && !empty($GLOBALS['_PEAR_destructor_object_list'])) { $pearDestructorObjectListCount = count($GLOBALS['_PEAR_destructor_object_list']); } else { $pearDestructorObjectListCount = 0; } if ($result === NULL) { $result = new PHPUnit_Framework_TestResult(); } $coverage = $result->getCollectCodeCoverageInformation(); $options = array_merge($options, $this->options); if (!isset($options['include_path'])) { $options['include_path'] = get_include_path(); } if ($coverage) { $options['coverage'] = TRUE; } else { $options['coverage'] = FALSE; } $currentErrorReporting = error_reporting(E_ERROR | E_WARNING | E_PARSE); $runner = new PEAR_RunTest(new PHPUnit_Extensions_PhptTestCase_Logger(), $options); if ($coverage) { $runner->xdebug_loaded = TRUE; } else { $runner->xdebug_loaded = FALSE; } $result->startTest($this); PHP_Timer::start(); $buffer = $runner->run($this->filename, $options); $time = PHP_Timer::stop(); error_reporting($currentErrorReporting); $base = basename($this->filename); $path = dirname($this->filename); $coverageFile = $path . DIRECTORY_SEPARATOR . str_replace('.phpt', '.xdebug', $base); $diffFile = $path . DIRECTORY_SEPARATOR . str_replace('.phpt', '.diff', $base); $expFile = $path . DIRECTORY_SEPARATOR . str_replace('.phpt', '.exp', $base); $logFile = $path . DIRECTORY_SEPARATOR . str_replace('.phpt', '.log', $base); $outFile = $path . DIRECTORY_SEPARATOR . str_replace('.phpt', '.out', $base); $phpFile = $path . DIRECTORY_SEPARATOR . str_replace('.phpt', '.php', $base); if (file_exists($phpFile)) { PHP_CodeCoverage_Filter::getInstance()->addFileToBlacklist($phpFile, 'TESTS'); } if (is_object($buffer) && $buffer instanceof PEAR_Error) { $result->addError($this, new RuntimeException($buffer->getMessage()), $time); } else { if ($buffer == 'SKIPPED') { $result->addFailure($this, new PHPUnit_Framework_SkippedTestError(), 0); } else { if ($buffer != 'PASSED') { $result->addFailure($this, PHPUnit_Framework_ComparisonFailure::diffEqual(file_get_contents($expFile), file_get_contents($outFile)), $time); } } } foreach (array($diffFile, $expFile, $logFile, $phpFile, $outFile) as $file) { if (file_exists($file)) { unlink($file); } } if ($coverage && file_exists($coverageFile)) { eval('$coverageData = ' . file_get_contents($coverageFile) . ';'); unset($coverageData[$phpFile]); $result->getCodeCoverage()->append($coverageData, $this); unlink($coverageFile); } $result->endTest($this, $time); // Do not invoke PEAR's destructor mechanism for PHP 4 // as it raises an E_STRICT. if ($pearDestructorObjectListCount == 0) { unset($GLOBALS['_PEAR_destructor_object_list']); } else { $count = count($GLOBALS['_PEAR_destructor_object_list']) - $pearDestructorObjectListCount; for ($i = 0; $i < $count; $i++) { array_pop($GLOBALS['_PEAR_destructor_object_list']); } } return $result; }
/** * Creates the appropriate exception for the constraint which can be caught * by the unit test system. This can be called if a call to evaluate() * fails. * * @param mixed $other The value passed to evaluate() which failed the * constraint check. * @param string $description A string with extra description of what was * going on while the evaluation failed. * @param boolean $not Flag to indicate negation. * @throws PHPUnit_Framework_ExpectationFailedException */ public function fail($other, $description, $not = FALSE) { $failureDescription = $this->failureDescription($other, $description, $not); if (!$not) { throw new PHPUnit_Framework_ExpectationFailedException($failureDescription, PHPUnit_Framework_ComparisonFailure::diffEqual($this->string, $other), $description); } else { throw new PHPUnit_Framework_ExpectationFailedException($failureDescription, NULL); } }
/** * Creates the appropriate exception for the constraint which can be caught * by the unit test system. This can be called if a call to evaluate() fails. * * @param mixed $other The value passed to evaluate() which failed the * constraint check. * @param string $description A string with extra description of what was * going on while the evaluation failed. * @param boolean $not Flag to indicate negation. * @throws PHPUnit_Framework_ExpectationFailedException */ public function fail($other, $description, $not = false) { $failureDescription = sprintf('Failed asserting that image "%s" is similar to image "%s".', $other, $this->filename); if ($not) { $failureDescription = self::negate($failureDescription); } if (!empty($description)) { $failureDescription = $description . "\n" . $failureDescription; } if (!$not) { throw new PHPUnit_Framework_ExpectationFailedException($failureDescription, PHPUnit_Framework_ComparisonFailure::diffEqual($this->delta, $this->difference)); } else { throw new PHPUnit_Framework_ExpectationFailedException($failureDescription); } }
public function testComparisonErrorOverlapingMatches2() { $failure = PHPUnit_Framework_ComparisonFailure::diffEqual('abcdde', 'abcde'); $this->assertEquals("expected string <abcdde>\ndifference < x?>\ngot string <abcde>", $failure->toString()); }
/** * @covers PHPUnit_Framework_ComparisonFailure::diffEqual */ public function testComparisonErrorOverlapingMatches2() { $failure = PHPUnit_Framework_ComparisonFailure::diffEqual('abcdde', 'abcde'); $this->assertEquals("--- Expected\n+++ Actual\n@@ @@\n-abcdde\n+abcde", $failure->toString()); }