mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
- More and more missing svn:ignore entries.
This commit is contained in:
@@ -1,216 +0,0 @@
|
||||
<?php
|
||||
/* This file is part of PHP test framework for ext/sybase_ct
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
// {{{ class PHPTExpectancy
|
||||
// Abstract base class for expectancies
|
||||
class PHPTExpectancy {
|
||||
var
|
||||
$expected = '';
|
||||
|
||||
function PHPTExpectancy($expected) {
|
||||
$this->expected= $expected;
|
||||
}
|
||||
|
||||
function matches($output) { }
|
||||
}
|
||||
// }}}
|
||||
|
||||
// {{{ class PHPTRegexExpectancy
|
||||
// Expectancy class for regular expressions
|
||||
class PHPTRegexExpectancy extends PHPTExpectancy {
|
||||
|
||||
function matches($output) {
|
||||
return preg_match('°^'.strtr(preg_quote(rtrim($this->expected), '°'), array(
|
||||
'%s' => '(.+)',
|
||||
'%d' => '([0-9]+)'
|
||||
)).'°', $output);
|
||||
}
|
||||
}
|
||||
// }}}
|
||||
|
||||
// {{{ class PHPTTest
|
||||
// Represents a single .phpt-style test
|
||||
class PHPTTest {
|
||||
var
|
||||
$name = '',
|
||||
$description = '',
|
||||
$skipif = '',
|
||||
$code = '',
|
||||
$expectancy = NULL,
|
||||
$output = '';
|
||||
|
||||
function &fromFile($filename) {
|
||||
$fd= fopen($filename, 'r');
|
||||
|
||||
$sections= array();
|
||||
$current= NULL;
|
||||
while (!feof($fd)) {
|
||||
$line= fgets($fd, 0xFFFF);
|
||||
if (1 == sscanf($line, '--%[^-]--', $section)) {
|
||||
$sections[$section]= '';
|
||||
$current= $section;
|
||||
continue;
|
||||
}
|
||||
$sections[$current].= $line;
|
||||
}
|
||||
fclose($fd);
|
||||
|
||||
// Create instance from read data and return it
|
||||
$t= &new PHPTTest(); {
|
||||
$t->name= substr(realpath($filename), 0, -1);
|
||||
$t->description= rtrim($sections['TEST']);
|
||||
$t->skipif= $sections['SKIPIF'];
|
||||
$t->code= $sections['FILE'];
|
||||
|
||||
if (isset($sections['EXPECTF'])) {
|
||||
$t->expectancy= &new PHPTRegexExpectancy($sections['EXPECTF']);
|
||||
} else {
|
||||
// XXX TBI XXX
|
||||
}
|
||||
}
|
||||
return $t;
|
||||
}
|
||||
|
||||
function onError($errno, $errstr, $errfile, $errline) {
|
||||
static $names= array(
|
||||
E_NOTICE => 'Notice',
|
||||
E_WARNING => 'Warning'
|
||||
);
|
||||
|
||||
if (!(error_reporting() & $errno)) return;
|
||||
printf(
|
||||
"\n%s: %s in %s on line %d\n",
|
||||
$names[$errno],
|
||||
$errstr,
|
||||
strstr($errfile, 'eval()\'d code') ? $this->name : $errfile,
|
||||
$errline
|
||||
);
|
||||
}
|
||||
|
||||
function run() {
|
||||
|
||||
// Precondition check - will die if test needs to be skipped
|
||||
eval('?>'.$this->skipif);
|
||||
|
||||
set_error_handler(array(&$this, 'onError')); {
|
||||
error_reporting(E_ALL);
|
||||
|
||||
ob_start();
|
||||
eval('?>'.$this->code);
|
||||
$this->output= rtrim(ob_get_contents());
|
||||
ob_end_clean();
|
||||
} restore_error_handler();
|
||||
|
||||
return $this->expectancy->matches($this->output);
|
||||
}
|
||||
}
|
||||
// }}}
|
||||
|
||||
// {{{ main
|
||||
if (isset($_GET['phpinfo'])) {
|
||||
phpinfo((int)$_GET['phpinfo']);
|
||||
|
||||
echo '<a href="?">Home</a>';
|
||||
exit();
|
||||
}
|
||||
|
||||
echo <<<__
|
||||
<html>
|
||||
<head>
|
||||
<title>PHPT Test</title>
|
||||
<style type="text/css">
|
||||
body {
|
||||
background-color: #ffffff;
|
||||
color: #000000;
|
||||
font-size: 75%;
|
||||
}
|
||||
body, td, th, h1, h2 {
|
||||
font-family: sans-serif;
|
||||
}
|
||||
h1 {
|
||||
font-size: 150%;
|
||||
}
|
||||
h2 {
|
||||
font-size: 125%;
|
||||
}
|
||||
.header {
|
||||
background: url(?=PHPE9568F34-D428-11d2-A769-00AA001ACF42);
|
||||
background-position: right center;
|
||||
background-repeat: no-repeat;
|
||||
min-height: 70px;
|
||||
background-color: #9999cc;
|
||||
padding: 4px;
|
||||
padding-right: 120px;
|
||||
border: 1px solid #000000;
|
||||
}
|
||||
hr {
|
||||
width: 600px;
|
||||
background-color: #cccccc;
|
||||
border: 0px;
|
||||
height: 1px;
|
||||
color: #000000;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
__;
|
||||
|
||||
$test= basename($_SERVER['QUERY_STRING']);
|
||||
if ($test && file_exists($test)) {
|
||||
$t= &PHPTTest::fromFile($test);
|
||||
echo '<div class="header"><h1>'.basename($t->name), ': ', $t->description.'</h1></div>';
|
||||
echo '<a href="?">Back to test suite</a>';
|
||||
flush();
|
||||
|
||||
// Run the test
|
||||
$result= $t->run();
|
||||
|
||||
// Evaluate results
|
||||
if ($result) {
|
||||
echo '<h2>Passed</h2>';
|
||||
} else {
|
||||
echo '<h2>Failed</h2><hr/>';
|
||||
|
||||
echo '<h3>Actual output</h3>';
|
||||
echo '<xmp>', $t->output, '</xmp><hr/>';
|
||||
|
||||
echo '<h3>Expectancy</h3>';
|
||||
echo '<xmp>', $t->expectancy->expected, '</xmp>';
|
||||
}
|
||||
|
||||
echo '<hr/>';
|
||||
exit();
|
||||
}
|
||||
|
||||
echo '<div class="header"><h1>Test suite</h1></div>';
|
||||
|
||||
// phpinfo() links
|
||||
echo 'phpinfo(): ';
|
||||
foreach (array(
|
||||
1 => 'General',
|
||||
4 => 'Configuration',
|
||||
8 => 'Modules'
|
||||
) as $const => $name) {
|
||||
printf('<a href="?phpinfo=%d">%s</a> | ', $const, $name);
|
||||
}
|
||||
echo '<a href="?phpinfo=-1">(All)</a>';
|
||||
|
||||
echo '<h2>Select one to run</h2>';
|
||||
echo '<ul>';
|
||||
$d= dir(dirname(__FILE__));
|
||||
while ($entry= $d->read()) {
|
||||
if ('.phpt' != substr($entry, -5)) continue;
|
||||
echo '<li><a href="?'.$entry.'">'.$entry.'</a></li>';
|
||||
}
|
||||
$d->close();
|
||||
echo '</ul><hr/>';
|
||||
|
||||
echo <<<__
|
||||
</body>
|
||||
</html>
|
||||
__;
|
||||
// }}}
|
||||
?>
|
||||
Reference in New Issue
Block a user