diff options
| author | Melvyn Sopacua <msopacua@php.net> | 2002-10-25 19:17:16 +0000 |
|---|---|---|
| committer | Melvyn Sopacua <msopacua@php.net> | 2002-10-25 19:17:16 +0000 |
| commit | d2f81e2083b716d8f7e074670442de5276737277 (patch) | |
| tree | 3be8a949d42d314e2ec7b9729a23896ae6165c55 | |
| parent | dbc6c32152c4726564ad161d7c4c9d03123e1eeb (diff) | |
| download | php-git-d2f81e2083b716d8f7e074670442de5276737277.tar.gz | |
Tests renamed
Remove dl() from skipif, for potential problems accross platforms and
versions.
| -rw-r--r-- | ext/xslt/tests/bug17791.phpt | 15 | ||||
| -rw-r--r-- | ext/xslt/tests/bug17931.phpt | 32 | ||||
| -rw-r--r-- | ext/xslt/tests/skipif.inc | 4 | ||||
| -rw-r--r-- | ext/xslt/tests/xslt-001.phpt | 21 | ||||
| -rw-r--r-- | ext/xslt/tests/xslt.phpt | 12 | ||||
| -rw-r--r-- | ext/xslt/tests/xslt_process-001.phpt | 60 | ||||
| -rw-r--r-- | ext/xslt/tests/xslt_process-002.phpt | 74 | ||||
| -rw-r--r-- | ext/xslt/tests/xslt_set_object.phpt | 87 | ||||
| -rw-r--r-- | ext/xslt/tests/xslt_set_scheme_handlers-001.phpt | 20 | ||||
| -rw-r--r-- | ext/xslt/tests/xslt_setopt.phpt | 47 |
10 files changed, 368 insertions, 4 deletions
diff --git a/ext/xslt/tests/bug17791.phpt b/ext/xslt/tests/bug17791.phpt new file mode 100644 index 0000000000..0a9446e1b0 --- /dev/null +++ b/ext/xslt/tests/bug17791.phpt @@ -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 diff --git a/ext/xslt/tests/bug17931.phpt b/ext/xslt/tests/bug17931.phpt new file mode 100644 index 0000000000..a85dd0674e --- /dev/null +++ b/ext/xslt/tests/bug17931.phpt @@ -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 diff --git a/ext/xslt/tests/skipif.inc b/ext/xslt/tests/skipif.inc index bd0add9599..0d4b5e0cf2 100644 --- a/ext/xslt/tests/skipif.inc +++ b/ext/xslt/tests/skipif.inc @@ -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"); } diff --git a/ext/xslt/tests/xslt-001.phpt b/ext/xslt/tests/xslt-001.phpt new file mode 100644 index 0000000000..eeb1c6d769 --- /dev/null +++ b/ext/xslt/tests/xslt-001.phpt @@ -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' diff --git a/ext/xslt/tests/xslt.phpt b/ext/xslt/tests/xslt.phpt new file mode 100644 index 0000000000..3270c3f20e --- /dev/null +++ b/ext/xslt/tests/xslt.phpt @@ -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
\ No newline at end of file diff --git a/ext/xslt/tests/xslt_process-001.phpt b/ext/xslt/tests/xslt_process-001.phpt new file mode 100644 index 0000000000..935c7c273d --- /dev/null +++ b/ext/xslt/tests/xslt_process-001.phpt @@ -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® diff --git a/ext/xslt/tests/xslt_process-002.phpt b/ext/xslt/tests/xslt_process-002.phpt new file mode 100644 index 0000000000..7c6f14fa45 --- /dev/null +++ b/ext/xslt/tests/xslt_process-002.phpt @@ -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 diff --git a/ext/xslt/tests/xslt_set_object.phpt b/ext/xslt/tests/xslt_set_object.phpt new file mode 100644 index 0000000000..a7e8b3d6d7 --- /dev/null +++ b/ext/xslt/tests/xslt_set_object.phpt @@ -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 diff --git a/ext/xslt/tests/xslt_set_scheme_handlers-001.phpt b/ext/xslt/tests/xslt_set_scheme_handlers-001.phpt new file mode 100644 index 0000000000..c8b7b236f2 --- /dev/null +++ b/ext/xslt/tests/xslt_set_scheme_handlers-001.phpt @@ -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 diff --git a/ext/xslt/tests/xslt_setopt.phpt b/ext/xslt/tests/xslt_setopt.phpt new file mode 100644 index 0000000000..15371294ea --- /dev/null +++ b/ext/xslt/tests/xslt_setopt.phpt @@ -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 |
