Tests renamed

Remove dl() from skipif, for potential problems accross platforms and
versions.
This commit is contained in:
Melvyn Sopacua 2002-10-25 19:17:16 +00:00
parent dbc6c32152
commit d2f81e2083
10 changed files with 368 additions and 4 deletions

View File

@ -0,0 +1,15 @@
--TEST--
Pass long string to 'file' argument, bug #17791
--SKIPIF--
<?php include("skipif.inc"); ?>
--FILE--
<?php
$xmlstring = str_repeat('x', 512);
$xslstring = 'x';
$xh = xslt_create();
$result = @xslt_process($xh, $xmlstring, $xslstring);
@xslt_free($xh);
echo("OK");
?>
--EXPECT--
OK

View File

@ -0,0 +1,32 @@
--TEST--
Pass object for xslt_error_handler, bug #17931
--SKIPIF--
<?php include("skipif.inc"); ?>
--FILE--
<?php
class xsl {
function xsl() {
$this->_parser = xslt_create();
}
function set_error() {
xslt_set_error_handler($this->_parser, array($this, 'xslt_trap_error'));
echo "OK";
}
function xslt_trap_error($parser, $errorno, $level, $fields) {
return TRUE;
}
function clean() {
xslt_free($this->_parser);
}
}
$x = new xsl;
// work-around for possible '$this does not exist' bug in constructor
$x->set_error();
$x->clean();
?>
--EXPECT--
OK

View File

@ -1,8 +1,4 @@
<?php
if(!extension_loaded("xslt") && ini_get("enable_dl")) {
$dlext = (substr(PHP_OS, 0, 4) == "WIN") ? ".dll" : ".so";
@dl("xlst$dlext");
}
if(!extension_loaded("xslt")) {
die("skip\n");
}

View File

@ -0,0 +1,21 @@
--TEST--
Memoryleak in error printing
--SKIPIF--
<?php include("skipif.inc"); ?>
--INI--
error_reporting=2047
display_errors=0
track_errors=1
--FILE--
<?php
$xmlfile = 'ext/xslt/tests/non-existent.xml';
$xslfile = 'ext/xslt/tests/non-existent.xsl';
$xh = xslt_create();
$result = xslt_process($xh, $xmlfile, $xslfile, NULL);
xslt_free($xh);
echo $php_errormsg."\n";
?>
--EXPECTF--
Sablotron error on line none: cannot open file '%s/ext/xslt/tests/non-existent.xsl'

12
ext/xslt/tests/xslt.phpt Normal file
View File

@ -0,0 +1,12 @@
--TEST--
Check for xslt presence
--SKIPIF--
<?php if (!extension_loaded("xslt")) print "skip"; ?>
--POST--
--GET--
--FILE--
<?php
echo "xslt extension is available";
?>
--EXPECT--
xslt extension is available

View File

@ -0,0 +1,60 @@
--TEST--
Various ways to provide xml and xslt arguments and params
--SKIPIF--
<?php
include("skipif.inc");
if(!function_exists('utf8_encode')) {
die("skip\n");
}
?>
--FILE--
<?php
error_reporting(E_ALL);
$xmlfile = 'ext/xslt/tests/test.xml';
$xslfile = 'ext/xslt/tests/args.xsl';
$xmldata = @implode('', @file($xmlfile));
$xslsheet = @implode('', @file($xslfile));
$xh = xslt_create();
$result = xslt_process($xh, $xmlfile, $xslfile);
print "$result\n";
$result = xslt_process($xh, 'arg:/_xml', $xslfile, NULL, array('/_xml' => $xmldata));
print "$result\n";
$result = xslt_process($xh, $xmlfile, 'arg:/_xsl', NULL, array('/_xsl' => $xslsheet));
print "$result\n";
$result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, array('/_xml' => $xmldata, '/_xsl' => $xslsheet));
print "$result\n";
// The same, with params
$xslfile = 'ext/xslt/tests/param.xsl';
$xslsheet = implode('', file($xslfile));
$params = array("Test has passed", "PHP QA®");
foreach($params AS $val)
{
$val = utf8_encode($val);
$result = xslt_process($xh, $xmlfile, $xslfile, NULL, NULL, array('insertion' => $val));
print "$result\n";
$result = xslt_process($xh, 'arg:/_xml', $xslfile, NULL, array('/_xml' => $xmldata), array('insertion' => $val));
print "$result\n";
$result = xslt_process($xh, $xmlfile, 'arg:/_xsl', NULL, array('/_xsl' => $xslsheet), array('insertion' => $val));
print "$result\n";
$result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, array('/_xml' => $xmldata, '/_xsl' => $xslsheet), array('insertion' => $val));
print "$result\n";
}
xslt_free($xh);
?>
--EXPECT--
Test has passed
Test has passed
Test has passed
Test has passed
Test has passed
Test has passed
Test has passed
Test has passed
PHP QA®
PHP QA®
PHP QA®
PHP QA®

View File

@ -0,0 +1,74 @@
--TEST--
Crash xslt_process with reused handler (this test may take a while)
--SKIPIF--
<?php
include("skipif.inc");
if(!function_exists('utf8_encode')) {
die("skip\n");
}
?>
--FILE--
<?php
error_reporting(E_ALL);
$xmlfile = 'ext/xslt/tests/test.xml';
$xslfile = 'ext/xslt/tests/param.xsl';
$xmldata = @implode('', @file($xmlfile));
$xslsheet = @implode('', @file($xslfile));
/*
* Tested on a Cyrix 200MMX/128MB took 2 secs. Should be a reasonable margin.
*
* It's not meant as an actual speed test, but if it's slower than this,
* there must be something significantly off in the php/sablot/expat trio.
* Emulation OS's come to mind...
*/
$want_time = 6;
function make_param()
{
$ret_val = '';
$numchars = mt_rand(2,16);
$illegal = array(0,256,512);
for($i=0;$i<$numchars;$i++)
{
$char=0;
while(in_array($char, $illegal))
{
$char .= mt_rand(32, 512);
}
$ret_val .= chr($char);
}
return utf8_encode($ret_val);
}
function decode($string)
{
$ret_val = '';
for($i=0; $i<strlen($string);$i++)
{
$ret_val .= ord(substr($string,$i,1)) . " ";
}
return $ret_val;
}
$xh = xslt_create();
$t1 = time();
for ($i=0; $i<50; $i++)
{
$val = make_param();
$result = xslt_process($xh, $xmlfile, $xslfile, NULL, NULL, array('insertion' => $val));
if(!$result or $result != utf8_decode($val))
print "Failed $i / ".utf8_decode($val).": $result\n\tDecode: " . decode(utf8_decode($val)) . "\n" ;
}
print "OK\n";
xslt_free($xh);
$t2 = time();
$op_time = $t2 - $t1;
if($op_time > $want_time)
print "This test took more than $want_time seconds. Either you have a very slow / busy machine, or there's something very wrong with the speed. Your time: $op_time";
?>
--EXPECT--
OK

View File

@ -0,0 +1,87 @@
--TEST--
xslt_set_object function
--SKIPIF--
<?php
include("skipif.inc");
if(!function_exists('xslt_set_object')) {
die("skip\n");
}
?>
--FILE--
<?php
error_reporting(E_ALL);
class XSLTTester
{
var $_success = false;
var $_success2 = false;
function XSLTTester()
{}
// this function will register this object as the
// callback object.
function test1($xmlfile,$xslfile)
{
$xh = xslt_create();
xslt_set_object($xh,$this);
$handlers = array('get_all'=> 'handle_getall');
xslt_set_scheme_handlers($xh,$handlers);
$res = xslt_process($xh,$xmlfile,$xslfile);
xslt_free($xh);
return 1;
}
// this function will pass this object as in set_scheme_handler
function test2($xmlfile,$xslfile)
{
$xh = xslt_create();
$handlers = array('get_all'=> array(&$this,'handle_getall2'));
xslt_set_scheme_handlers($xh,$handlers);
$res = xslt_process($xh,$xmlfile,$xslfile);
xslt_free($xh);
return 1;
}
function handle_getall($xh,$scheme,$rest)
{
$this->_success = true;
$rest = substr($rest,2);
return implode('', file('ext/xslt/tests/'.$rest));
}
function handle_getall2($xh,$scheme,$rest)
{
$this->_success2 = true;
$rest = substr($rest,2);
return implode('', file('ext/xslt/tests/'.$rest));
}
function testSucceeded()
{
return $this->_success;
}
function test2Succeeded()
{
return $this->_success2;
}
}
$xmlfile = 'ext/xslt/tests/test.xml';
$xslfile = 'ext/xslt/tests/xslt_set_object.xsl';
$testobj = new XSLTTester();
$testobj->test1($xmlfile,$xslfile);
$testobj->test2($xmlfile,$xslfile);
if ($testobj->testSucceeded())
print "OK\n";
else
print "FAILED\n";
if ($testobj->test2Succeeded())
print "OK\n";
else
print "FAILED\n";
?>
--EXPECT--
OK
OK

View File

@ -0,0 +1,20 @@
--TEST--
Set a non-existing scheme handler
--SKIPIF--
<?php include("skipif.inc"); ?>
--FILE--
<?php
function bar()
{
return 1;
}
$xh = xslt_create();
$xmlstring = '<foo><barred /></foo>';
$xslstring = '<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/1999/XSL/Transform"><xsl:for-each select="/"><xsl:value-of select="document(\'bogus://foo\')" /></xsl:for-each></xsl:stylesheet>';
xslt_set_scheme_handlers($xh, array('get_all' => 'foo'));
$result = xslt_process($xh, 'arg:/_xml', 'arg:/_xsl', NULL, array('/_xml' => $xmlstring, '/_xsl' => $xslstring));
xslt_free($xh);
echo("OK");
?>
--EXPECT--
OK

View File

@ -0,0 +1,47 @@
--TEST--
xslt_set_opt function and public entities
--SKIPIF--
<?php
include("skipif.inc");
if(!function_exists('xslt_setopt')) {
die("skip\n");
}
?>
--FILE--
<?php
error_reporting(E_ALL);
$xmlfile = 'ext/xslt/tests/public.xml';
$xslfile = 'ext/xslt/tests/args.xsl';
$xh = xslt_create();
// Tell Sablotron to process public entities
xslt_setopt($xh, XSLT_SABOPT_PARSE_PUBLIC_ENTITIES);
$result = xslt_process($xh, $xmlfile, $xslfile);
print "$result\n";
$xslstring = implode('', file($xslfile));
$xslstring = str_replace('method="text"', 'method="html"', $xslstring);
$xslstring = str_replace('<xsl:value-of select="." />', '<html><head><title>foo</title></head><body><p><xsl:value-of select="." /></p></body></html>', $xslstring);
// DEBUG: print $xslstring;
xslt_setopt($xh, XSLT_SABOPT_PARSE_PUBLIC_ENTITIES | XSLT_SABOPT_DISABLE_ADDING_META);
$result_nometa = xslt_process($xh, $xmlfile, 'arg:/_xsl', NULL, array('/_xsl' => $xslstring));
// DEBUG: print "$result_nometa\n";
xslt_setopt($xh, XSLT_SABOPT_PARSE_PUBLIC_ENTITIES);
$result_meta = xslt_process($xh, $xmlfile, 'arg:/_xsl', NULL, array('/_xsl' => $xslstring));
// DEBUG: print "$result_meta\n";
/* Also test if they're equal. That would mean, that disable-adding-meta is set to off
at compile time and our call to xslt_setopt failed to reset that */
if($result_meta != $result_nometa && FALSE === stristr($result_nometa, '<meta http-equiv="Content-Type"'))
{
print "OK\n";
}
xslt_free($xh);
?>
--EXPECT--
PHP QA®
OK