From 8d15db586004dc2b1704897a9dacc7a55bce4195 Mon Sep 17 00:00:00 2001 From: Paul Tarjan Date: Mon, 22 Apr 2013 18:29:10 -0700 Subject: [PATCH] import zend libxml tests only 1 good test? *sigh* --- hphp/test/zend/bad/ext-libxml/001.php | 14 +++++ hphp/test/zend/bad/ext-libxml/001.php.expectf | 10 ++++ hphp/test/zend/bad/ext-libxml/002.php | 56 +++++++++++++++++++ hphp/test/zend/bad/ext-libxml/002.php.expectf | 25 +++++++++ hphp/test/zend/bad/ext-libxml/004.php | 23 ++++++++ hphp/test/zend/bad/ext-libxml/004.php.expectf | 23 ++++++++ hphp/test/zend/bad/ext-libxml/bug42112.php | 23 ++++++++ .../zend/bad/ext-libxml/bug42112.php.expectf | 2 + hphp/test/zend/bad/ext-libxml/bug54440.php | 29 ++++++++++ .../zend/bad/ext-libxml/bug54440.php.expectf | 16 ++++++ hphp/test/zend/bad/ext-libxml/bug63389.php | 6 ++ .../zend/bad/ext-libxml/bug63389.php.expectf | 2 + ...ibxml_set_external_entity_loader_basic.php | 27 +++++++++ ...t_external_entity_loader_basic.php.expectf | 14 +++++ ...bxml_set_external_entity_loader_error1.php | 17 ++++++ ..._external_entity_loader_error1.php.expectf | 11 ++++ ..._set_external_entity_loader_variation1.php | 39 +++++++++++++ ...ernal_entity_loader_variation1.php.expectf | 26 +++++++++ ..._set_external_entity_loader_variation2.php | 30 ++++++++++ ...ernal_entity_loader_variation2.php.expectf | 6 ++ hphp/test/zend/good/ext-libxml/003.php | 19 +++++++ .../test/zend/good/ext-libxml/003.php.expectf | 3 + hphp/tools/import_zend_test.py | 1 - 23 files changed, 421 insertions(+), 1 deletion(-) create mode 100644 hphp/test/zend/bad/ext-libxml/001.php create mode 100644 hphp/test/zend/bad/ext-libxml/001.php.expectf create mode 100644 hphp/test/zend/bad/ext-libxml/002.php create mode 100644 hphp/test/zend/bad/ext-libxml/002.php.expectf create mode 100644 hphp/test/zend/bad/ext-libxml/004.php create mode 100644 hphp/test/zend/bad/ext-libxml/004.php.expectf create mode 100644 hphp/test/zend/bad/ext-libxml/bug42112.php create mode 100644 hphp/test/zend/bad/ext-libxml/bug42112.php.expectf create mode 100644 hphp/test/zend/bad/ext-libxml/bug54440.php create mode 100644 hphp/test/zend/bad/ext-libxml/bug54440.php.expectf create mode 100644 hphp/test/zend/bad/ext-libxml/bug63389.php create mode 100644 hphp/test/zend/bad/ext-libxml/bug63389.php.expectf create mode 100644 hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_basic.php create mode 100644 hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_basic.php.expectf create mode 100644 hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_error1.php create mode 100644 hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_error1.php.expectf create mode 100644 hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_variation1.php create mode 100644 hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_variation1.php.expectf create mode 100644 hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_variation2.php create mode 100644 hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_variation2.php.expectf create mode 100644 hphp/test/zend/good/ext-libxml/003.php create mode 100644 hphp/test/zend/good/ext-libxml/003.php.expectf diff --git a/hphp/test/zend/bad/ext-libxml/001.php b/hphp/test/zend/bad/ext-libxml/001.php new file mode 100644 index 000000000..4ca4119a1 --- /dev/null +++ b/hphp/test/zend/bad/ext-libxml/001.php @@ -0,0 +1,14 @@ + \ No newline at end of file diff --git a/hphp/test/zend/bad/ext-libxml/001.php.expectf b/hphp/test/zend/bad/ext-libxml/001.php.expectf new file mode 100644 index 000000000..fc9ea2c4a --- /dev/null +++ b/hphp/test/zend/bad/ext-libxml/001.php.expectf @@ -0,0 +1,10 @@ +bool(false) +bool(false) +bool(true) +HipHop Warning: %a +NULL +array(0) { +} +bool(false) +NULL +Done \ No newline at end of file diff --git a/hphp/test/zend/bad/ext-libxml/002.php b/hphp/test/zend/bad/ext-libxml/002.php new file mode 100644 index 000000000..018babd7a --- /dev/null +++ b/hphp/test/zend/bad/ext-libxml/002.php @@ -0,0 +1,56 @@ + + + + PHP: Behind the Parser + + +XML; + +$doc = simplexml_load_string($xmlstr); +$xml = explode("\n", $xmlstr); + +if (!$doc) { + $errors = libxml_get_errors(); + + foreach ($errors as $error) { + echo display_xml_error($error, $xml); + } + + var_dump(libxml_get_last_error()); +} + + +function display_xml_error($error, $xml) +{ + $return = $xml[$error->line - 1] . "\n"; + $return .= str_repeat('-', $error->column) . "^\n"; + + switch ($error->level) { + case LIBXML_ERR_WARNING: + $return .= "Warning $error->code: "; + break; + case LIBXML_ERR_ERROR: + $return .= "Error $error->code: "; + break; + case LIBXML_ERR_FATAL: + $return .= "Fatal Error $error->code: "; + break; + } + + $return .= trim($error->message) . "\n Line: $error->line" . "\n Column: $error->column"; + + if ($error->file) { + $return .= "\n File: $error->file"; + } + + return "$return\n\n--------------------------------------------\n\n"; +} + + +echo "Done\n"; +?> \ No newline at end of file diff --git a/hphp/test/zend/bad/ext-libxml/002.php.expectf b/hphp/test/zend/bad/ext-libxml/002.php.expectf new file mode 100644 index 000000000..1ceedb757 --- /dev/null +++ b/hphp/test/zend/bad/ext-libxml/002.php.expectf @@ -0,0 +1,25 @@ +bool(false) + PHP: Behind the Parser +%s +Fatal Error 76: Opening and ending tag mismatch: titles line 4 and title + Line: 4 + Column: %d + +-------------------------------------------- + +object(LibXMLError)#%d (6) { + ["level"]=> + int(3) + ["code"]=> + int(76) + ["column"]=> + int(%d) + ["message"]=> + string(57) "Opening and ending tag mismatch: titles line 4 and title +" + ["file"]=> + string(0) "" + ["line"]=> + int(4) +} +Done \ No newline at end of file diff --git a/hphp/test/zend/bad/ext-libxml/004.php b/hphp/test/zend/bad/ext-libxml/004.php new file mode 100644 index 000000000..beb04b9ba --- /dev/null +++ b/hphp/test/zend/bad/ext-libxml/004.php @@ -0,0 +1,23 @@ + array('some_opt' => 'aaa'))) +); + + +foreach ($ctxs as $ctx) { + var_dump(libxml_set_streams_context($ctx)); + $dom = new DOMDocument(); + var_dump($dom->load(dirname(__FILE__).'/test.xml')); +} + +echo "Done\n"; + +?> \ No newline at end of file diff --git a/hphp/test/zend/bad/ext-libxml/004.php.expectf b/hphp/test/zend/bad/ext-libxml/004.php.expectf new file mode 100644 index 000000000..9470d7d99 --- /dev/null +++ b/hphp/test/zend/bad/ext-libxml/004.php.expectf @@ -0,0 +1,23 @@ +HipHop Warning: %a +HipHop Warning: %a +NULL +bool(true) +HipHop Warning: %a +NULL +bool(true) +HipHop Warning: %a +NULL +bool(true) +HipHop Warning: %a +NULL +bool(true) +HipHop Warning: %a +NULL +bool(true) +NULL +bool(true) +NULL +bool(true) +NULL +bool(true) +Done \ No newline at end of file diff --git a/hphp/test/zend/bad/ext-libxml/bug42112.php b/hphp/test/zend/bad/ext-libxml/bug42112.php new file mode 100644 index 000000000..665ba6667 --- /dev/null +++ b/hphp/test/zend/bad/ext-libxml/bug42112.php @@ -0,0 +1,23 @@ +baz +EOXML; + +function remove_node($doc) { + $node = $doc->getElementById( 'id1' ); + print 'Deleting Node: '.$node->nodeName."\n"; + $node->parentNode->removeChild( $node ); +} + +$doc = new DOMDocument(); +$doc->loadXML($xml); + +remove_node($doc); + +$node = $doc->getElementById( 'id1' ); +if ($node) { + print 'Found Node: '.$node->nodeName."\n"; +} +$root = $doc->documentElement; +print 'Root Node: '.$root->nodeName."\n"; +?> \ No newline at end of file diff --git a/hphp/test/zend/bad/ext-libxml/bug42112.php.expectf b/hphp/test/zend/bad/ext-libxml/bug42112.php.expectf new file mode 100644 index 000000000..a030a251b --- /dev/null +++ b/hphp/test/zend/bad/ext-libxml/bug42112.php.expectf @@ -0,0 +1,2 @@ +Deleting Node: child +Root Node: root \ No newline at end of file diff --git a/hphp/test/zend/bad/ext-libxml/bug54440.php b/hphp/test/zend/bad/ext-libxml/bug54440.php new file mode 100644 index 000000000..fd93c4581 --- /dev/null +++ b/hphp/test/zend/bad/ext-libxml/bug54440.php @@ -0,0 +1,29 @@ +context) + print_r(stream_context_get_options($this->context)); + return false; +} + +function url_stat($path, $flags) +{ +return array(); +} + +} + +stream_wrapper_register("test", "TestWrapper") + or die("Failed to register protocol"); + +$ctx1 = stream_context_create(array('test'=>array('test'=>'test 1'))); +$ctx2 = stream_context_create(array('test'=>array('test'=>'test 2'))); + +stream_context_set_default(stream_context_get_options($ctx1)); +@simplexml_load_file('test://sdfsdf'); + +libxml_set_streams_context($ctx2); +@simplexml_load_file('test://sdfsdf'); \ No newline at end of file diff --git a/hphp/test/zend/bad/ext-libxml/bug54440.php.expectf b/hphp/test/zend/bad/ext-libxml/bug54440.php.expectf new file mode 100644 index 000000000..55d1f4a07 --- /dev/null +++ b/hphp/test/zend/bad/ext-libxml/bug54440.php.expectf @@ -0,0 +1,16 @@ +Array +( + [test] => Array + ( + [test] => test 1 + ) + +) +Array +( + [test] => Array + ( + [test] => test 2 + ) + +) \ No newline at end of file diff --git a/hphp/test/zend/bad/ext-libxml/bug63389.php b/hphp/test/zend/bad/ext-libxml/bug63389.php new file mode 100644 index 000000000..0652e124e --- /dev/null +++ b/hphp/test/zend/bad/ext-libxml/bug63389.php @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/hphp/test/zend/bad/ext-libxml/bug63389.php.expectf b/hphp/test/zend/bad/ext-libxml/bug63389.php.expectf new file mode 100644 index 000000000..6d484dec4 --- /dev/null +++ b/hphp/test/zend/bad/ext-libxml/bug63389.php.expectf @@ -0,0 +1,2 @@ +HipHop Warning: %a +okey \ No newline at end of file diff --git a/hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_basic.php b/hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_basic.php new file mode 100644 index 000000000..a82415cc0 --- /dev/null +++ b/hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_basic.php @@ -0,0 +1,27 @@ + +bar +XML; + +$dtd = << +DTD; + +libxml_set_external_entity_loader( + function ($public, $system, $context) use($dtd){ + var_dump($public); + var_dump($system); + var_dump($context); + $f = fopen("php://temp", "r+"); + fwrite($f, $dtd); + rewind($f); + return $f; + } +); + +$dd = new DOMDocument; +$r = $dd->loadXML($xml); +var_dump($dd->validate()); + +echo "Done.\n"; diff --git a/hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_basic.php.expectf b/hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_basic.php.expectf new file mode 100644 index 000000000..91176e161 --- /dev/null +++ b/hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_basic.php.expectf @@ -0,0 +1,14 @@ +string(10) "-//FOO/BAR" +string(25) "http://example.com/foobar" +array(4) { + ["directory"]=> + NULL + ["intSubName"]=> + NULL + ["extSubURI"]=> + NULL + ["extSubSystem"]=> + NULL +} +bool(true) +Done. \ No newline at end of file diff --git a/hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_error1.php b/hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_error1.php new file mode 100644 index 000000000..15f6e68ac --- /dev/null +++ b/hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_error1.php @@ -0,0 +1,17 @@ + +bar +XML; + +$dd = new DOMDocument; +$r = $dd->loadXML($xml); + +var_dump(libxml_set_external_entity_loader([])); +var_dump(libxml_set_external_entity_loader()); +var_dump(libxml_set_external_entity_loader(function() {}, 2)); + +var_dump(libxml_set_external_entity_loader(function($a, $b, $c, $d) {})); +var_dump($dd->validate()); + +echo "Done.\n"; diff --git a/hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_error1.php.expectf b/hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_error1.php.expectf new file mode 100644 index 000000000..6d6e4f2a7 --- /dev/null +++ b/hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_error1.php.expectf @@ -0,0 +1,11 @@ +HipHop Warning: %a +NULL +HipHop Warning: %a +NULL +HipHop Warning: %a +NULL +bool(true) +HipHop Warning: %a +HipHop Warning: %a +bool(false) +Done. \ No newline at end of file diff --git a/hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_variation1.php b/hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_variation1.php new file mode 100644 index 000000000..72331cae1 --- /dev/null +++ b/hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_variation1.php @@ -0,0 +1,39 @@ + +bar&fooz; +XML; + +$dtd = << + +%fooentity; +DTD; + +$entity = << +ENT; + +libxml_set_external_entity_loader( + function ($public, $system, $context) use($dtd,$entity){ + static $first = true; + var_dump($public); + var_dump($system); + var_dump($context); + $f = fopen("php://temp", "r+"); + fwrite($f, $first ? $dtd : $entity); + $first = false; + rewind($f); + return $f; + } +); + +$dd = new DOMDocument; +$dd->resolveExternals = true; +$r = $dd->loadXML($xml); +var_dump($dd->validate()); + +echo "Done.\n"; diff --git a/hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_variation1.php.expectf b/hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_variation1.php.expectf new file mode 100644 index 000000000..7e6e46c6b --- /dev/null +++ b/hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_variation1.php.expectf @@ -0,0 +1,26 @@ +string(10) "-//FOO/BAR" +string(25) "http://example.com/foobar" +array(4) { + ["directory"]=> + string(%d) "%s" + ["intSubName"]=> + string(3) "foo" + ["extSubURI"]=> + string(25) "http://example.com/foobar" + ["extSubSystem"]=> + string(10) "-//FOO/BAR" +} +string(13) "-//FOO/ENTITY" +string(32) "http://example.com/fooentity.ent" +array(4) { + ["directory"]=> + string(%d) "%s" + ["intSubName"]=> + string(3) "foo" + ["extSubURI"]=> + string(25) "http://example.com/foobar" + ["extSubSystem"]=> + string(10) "-//FOO/BAR" +} +bool(true) +Done. \ No newline at end of file diff --git a/hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_variation2.php b/hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_variation2.php new file mode 100644 index 000000000..3b3040deb --- /dev/null +++ b/hphp/test/zend/bad/ext-libxml/libxml_set_external_entity_loader_variation2.php @@ -0,0 +1,30 @@ + +bar +XML; + +$dtd = << +DTD; + + +libxml_set_external_entity_loader( + function ($public, $system, $context) { + var_dump($public,$system); + return null; + } +); + +$dd = new DOMDocument; +$r = $dd->loadXML($xml); +var_dump($dd->validate()); + +libxml_set_external_entity_loader(NULL); +file_put_contents(__DIR__ . "/foobar.dtd", $dtd); +var_dump($dd->validate()); + +echo "Done.\n"; + + + + PHP: Behind the Parser + + +XML; + +simplexml_load_string($xmlstr); + +// test memleaks here +var_dump(libxml_use_internal_errors(false)); + +echo "Done\n"; +?> \ No newline at end of file diff --git a/hphp/test/zend/good/ext-libxml/003.php.expectf b/hphp/test/zend/good/ext-libxml/003.php.expectf new file mode 100644 index 000000000..7dae9f911 --- /dev/null +++ b/hphp/test/zend/good/ext-libxml/003.php.expectf @@ -0,0 +1,3 @@ +bool(false) +bool(true) +Done \ No newline at end of file diff --git a/hphp/tools/import_zend_test.py b/hphp/tools/import_zend_test.py index 0ff8669ee..276274ff5 100755 --- a/hphp/tools/import_zend_test.py +++ b/hphp/tools/import_zend_test.py @@ -106,7 +106,6 @@ no_import = ( '/ext/imap', '/ext/intl', '/ext/ldap', - '/ext/libxml', '/ext/mbstring', '/ext/standard', '/ext/mcrypt',