Mercurial > hg > isophonics-drupal-site
diff vendor/pear/archive_tar/tests/phpt_test.php.inc @ 18:af1871eacc83
Update to Drupal core 8.7.1
author | Chris Cannam |
---|---|
date | Thu, 09 May 2019 15:33:08 +0100 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vendor/pear/archive_tar/tests/phpt_test.php.inc Thu May 09 15:33:08 2019 +0100 @@ -0,0 +1,414 @@ +<?php +@include_once 'Text/Diff.php'; +@include_once 'Text/Diff/Renderer.php'; +@include_once 'Text/Diff/Renderer/unified.php'; +require_once 'PEAR/ErrorStack.php'; +require_once 'PEAR.php'; +class PEAR_PHPTest +{ + var $_diffonly; + var $_errors; + function PEAR_PHPTest($diffonly = false, $noStackCatch = false) + { + $this->_diffonly = $diffonly; + $this->_errors = array(); + PEAR::setErrorHandling(PEAR_ERROR_CALLBACK, array($this, 'pearerrorCallback')); + if (!$noStackCatch) { + PEAR_ErrorStack::setDefaultCallback(array($this, 'pearerrorstackCallback')); + } + } + + function pearerrorCallback($err) + { + PEAR_ErrorStack::staticPush('PEAR_Error', -1, 'error', array('obj' => $err), + $err->getMessage()); + } + + function pearerrorstackCallback($err) + { + $this->_errors[] = $err; + } + + function assertPEARError($err, $message) + { + if (is_a($err, 'PEAR_Error')) { + return true; + } + $this->_failTest(debug_backtrace(), $message); + echo "Not a PEAR_Error\n"; + return false; + } + + function assertNoErrors($message, $trace = null) + { + if (count($this->_errors) == 0) { + return true; + } + if ($trace === null) { + $trace = debug_backtrace(); + } + $this->_failTest($trace, $message); + foreach ($this->_errors as $err) { + if ($err['package'] == 'PEAR_Error') { + echo "Unexpected PEAR_Error:\n"; + echo 'message "' . $err['message'] . "\"\n"; + } else { + echo "Unexpected PEAR_ErrorStack error:\n"; + echo 'package "' . $err['package'] . "\"\n"; + echo 'message "' . $err['message'] . "\"\n"; + } + } + $this->_errors = array(); + return false; + } + + function assertErrors($errors, $message, $trace = null) + { + if (!count($this->_errors)) { + if ($trace === null) { + $trace = debug_backtrace(); + } + $this->_failTest($trace, $message); + echo "No errors caught, but errors were expected\n"; + return false; + } + if (!isset($errors[0])) { + $errors = array($errors); + } + $failed = false; + foreach ($errors as $err) { + $found = false; + foreach ($this->_errors as $i => $caughterror) { + if ($caughterror['package'] == $err['package']) { + if ($caughterror['message'] == $err['message']) { + $found = true; + break; + } + } + } + if ($found) { + unset($this->_errors[$i]); + continue; + } + if (!$failed) { + if ($trace === null) { + $trace = debug_backtrace(); + } + $failed = true; + $this->_failTest($trace, $message); + } + echo "Unthrown error:\n"; + if ($err['package'] == 'PEAR_Error') { + echo "PEAR_Error:\n"; + } else { + echo "error package: \"$err[package]\"\n"; + } + echo "message: \"$err[message]\"\n"; + } + if (count($this->_errors)) { + if (!$failed) { + if ($trace === null) { + $trace = debug_backtrace(); + } + $failed = true; + $this->_failTest($trace, $message); + } + foreach ($this->_errors as $err) { + echo "Unexpected error:\n"; + if ($err['package'] == 'PEAR_Error') { + echo "PEAR_Error:\n"; + } else { + echo "error package: \"$err[package]\"\n"; + } + echo "message: \"$err[message]\"\n"; + } + } + $this->_errors = array(); + return !$failed; + } + + function assertTrue($test, $message) + { + $this->assertNoErrors($message, debug_backtrace()); + if ($test === true) { + return true; + } + $this->_failTest(debug_backtrace(), $message); + echo "Unexpected non-true value: \n"; + var_export($test); + echo "\n'$message'\n"; + return false; + } + + function assertIsa($control, $test, $message) + { + $this->assertNoErrors($message, debug_backtrace()); + if (is_a($test, $control)) { + return true; + } + $this->_failTest(debug_backtrace(), $message); + echo "Unexpected non-$control object: \n"; + var_export($test); + echo "\n'$message'\n"; + return false; + } + + function assertNull($test, $message) + { + $this->assertNoErrors($message, debug_backtrace()); + if ($test === null) { + return true; + } + $this->_failTest(debug_backtrace(), $message); + echo "Unexpected non-null value: \n"; + var_export($test); + echo "\n'$message'\n"; + return false; + } + + function assertNotNull($test, $message) + { + $this->assertNoErrors($message, debug_backtrace()); + if ($test !== null) { + return true; + } + $this->_failTest(debug_backtrace(), $message); + echo "Unexpected null: \n"; + var_export($test); + echo "\n'$message'\n"; + return false; + } + + function assertSame($test, $test1, $message) + { + $this->assertNoErrors($message, debug_backtrace()); + if ($test === $test1) { + return true; + } + $this->_failTest(debug_backtrace(), $message); + echo "Unexpectedly two vars are not the same thing: \n"; + echo "\n'$message'\n"; + return false; + } + + function assertNotSame($test, $test1, $message) + { + $this->assertNoErrors($message, debug_backtrace()); + if ($test !== $test1) { + return true; + } + $this->_failTest(debug_backtrace(), $message); + echo "Unexpectedly two vars are the same thing: \n"; + echo "\n'$message'\n"; + return false; + } + + function assertFalse($test, $message) + { + $this->assertNoErrors($message, debug_backtrace()); + if ($test === false) { + return true; + } + $this->_failTest(debug_backtrace(), $message); + echo "Unexpected non-false value: \n"; + var_export($test); + echo "\n'$message'\n"; + return false; + } + + function assertNotTrue($test, $message) + { + $this->assertNoErrors($message, debug_backtrace()); + if (!$test) { + return true; + } + $this->_failTest(debug_backtrace(), $message); + echo "Unexpected loose true value: \n"; + var_export($test); + echo "\n'$message'\n"; + return false; + } + + function assertNotFalse($test, $message) + { + $this->assertNoErrors($message, debug_backtrace()); + if ($test) { + return true; + } + $this->_failTest(debug_backtrace(), $message); + echo "Unexpected loose false value: \n"; + var_export($test); + echo "\n'$message'\n"; + return false; + } + + function assertEquals($control, $test, $message) + { + $this->assertNoErrors($message, debug_backtrace()); + if (str_replace(array("\r", "\n"), array('', ''), + var_export($control, true)) != str_replace(array("\r", "\n"), array('', ''), + var_export($test, true))) { + $this->_failTest(debug_backtrace(), $message); + if (class_exists('Text_Diff')) { + echo "Diff of expecting/received:\n"; + $diff = new Text_Diff( + explode("\n", var_export($control, true)), + explode("\n", var_export($test, true))); + + // Output the diff in unified format. + $renderer = new Text_Diff_Renderer_unified(); + echo $renderer->render($diff); + if ($this->_diffonly) { + return false; + } + } + echo "Expecting:\n"; + var_export($control); + echo "\nReceived:\n"; + var_export($test); + echo "\n"; + return false; + } + return true; + } + + function assertFileExists($fname, $message) + { + $this->assertNoErrors($message, debug_backtrace()); + if (!@file_exists($fname)) { + $this->_failTest(debug_backtrace(), $message); + echo "File '$fname' does not exist, and should\n"; + return false; + } + return true; + } + + function assertFileNotExists($fname, $message) + { + $this->assertNoErrors($message, debug_backtrace()); + if (@file_exists($fname)) { + $this->_failTest(debug_backtrace(), $message); + echo "File '$fname' exists, and should not\n"; + return false; + } + return true; + } + + function assertRegEquals($dump, &$reg, $message) + { + $actualdump = var_export(trim($this->dumpReg($reg)), true); + $testdump = var_export(trim($dump), true); + return $this->assertEquals($testdump, $actualdump, $message); + } + + function assertPackageInfoEquals($control, $test, $message) + { + $this->assertNoErrors($message, debug_backtrace()); + if (isset($control[0])) { + if (!isset($test[0]) || (count($control) != count($test))) { + echo "Invalid packageInfo\n"; + $ret = $this->assertEquals($control, $test, $message); + } + $ret = true; + foreach ($control as $i => $packageinfo) { + $ret = $ret && + $this->assertPackageInfoEquals($packageinfo, $test[$i], $message . $i); + } + return $ret; + } + if (isset($control['_lastmodified'])) { + if (!isset($test['_lastmodified'])) { + echo "_lastmodified is not set in packageInfo() output\n"; + $this->_failTest(debug_backtrace(), $message); + return false; + } + } + $savecontrol = sort($control); + $savetest = sort($test); + unset($control['_lastmodified']); + unset($test['_lastmodified']); + if (var_export($control, true) != var_export($test, true)) { + $this->_failTest(debug_backtrace(), $message); + if (class_exists('Text_Diff')) { + echo "Diff of expecting/received:\n"; + $diff = new Text_Diff( + explode("\n", var_export($control, true)), + explode("\n", var_export($test, true))); + + // Output the diff in unified format. + $renderer = new Text_Diff_Renderer_unified(); + echo $renderer->render($diff); + if ($this->_diffonly) { + return false; + } + } + echo "Expecting:\n"; + var_export($savecontrol); + echo "\nReceived:\n"; + var_export($savetest); + return false; + } + return true; + } + + function _sortRegEntries($a, $b) + { + return strnatcasecmp($a['name'], $b['name']); + } + + function dumpReg(&$reg) + { + ob_start(); + print "dumping registry...\n"; + $infos = $reg->packageInfo(null, null, null); + ksort($infos); + foreach ($infos as $channel => $info) { + echo "channel $channel:\n"; + usort($info, array($this, '_sortRegEntries')); + foreach ($info as $pkg) { + print $pkg["name"] . ":"; + unset($pkg["name"]); + foreach ($pkg as $k => $v) { + if ($k == '_lastmodified') { + print " _lastmodified is set"; + continue; + } + if (is_array($v) && $k == 'filelist') { + print " $k=array("; + $i = 0; + foreach ($v as $k2 => $v2) { + if ($i++ > 0) print ","; + print "{$k2}["; + $j = 0; + foreach ($v2 as $k3 => $v3) { + if ($j++ > 0) print ","; + print "$k3=$v3"; + } + print "]"; + } + print ")"; + } else { + print " $k=\"$v\""; + } + } + print "\n"; + } + } + print "dump done\n"; + $ret = ob_get_contents(); + ob_end_clean(); + return $ret; + } + + function _failTest($trace, $message) + { + echo 'Test Failure: "' . $message . "\"\n in " . $trace[0]['file'] . ' line ' . + $trace[0]['line'] . "\n"; + } + + function showAll() + { + $this->_diffonly = false; + } +} +?> \ No newline at end of file