Annotation of embedaddon/php/ext/libxml/tests/libxml_set_external_entity_loader_variation1.phpt, revision 1.1.1.1

1.1       misho       1: --TEST--
                      2: libxml_set_external_entity_loader() variation: resolve externals and entities
                      3: --SKIPIF--
                      4: <?php if (!extension_loaded('dom')) die('skip'); ?>
                      5: --FILE--
                      6: <?php
                      7: chdir(__DIR__);
                      8: $xml = <<<XML
                      9: <!DOCTYPE foo PUBLIC "-//FOO/BAR" "http://example.com/foobar">
                     10: <foo>bar&fooz;</foo>
                     11: XML;
                     12: 
                     13: $dtd = <<<DTD
                     14: <!ELEMENT foo (#PCDATA)>
                     15: <!ENTITY % fooentity PUBLIC
                     16:    "-//FOO/ENTITY"
                     17:    "fooentity.ent">
                     18: %fooentity;
                     19: DTD;
                     20: 
                     21: $entity = <<<ENT
                     22: <!ENTITY fooz "baz">
                     23: ENT;
                     24: 
                     25: libxml_set_external_entity_loader(
                     26:        function ($public, $system, $context) use($dtd,$entity){
                     27:                static $first = true;
                     28:                var_dump($public);
                     29:                var_dump($system);
                     30:                var_dump($context);
                     31:                $f = fopen("php://temp", "r+");
                     32:                fwrite($f, $first ? $dtd : $entity);
                     33:                $first = false;
                     34:                rewind($f);
                     35:                return $f;
                     36:        }
                     37: );
                     38: 
                     39: $dd = new DOMDocument;
                     40: $dd->resolveExternals = true;
                     41: $r = $dd->loadXML($xml);
                     42: var_dump($dd->validate());
                     43: 
                     44: echo "Done.\n";
                     45: 
                     46: --EXPECTF--
                     47: string(10) "-//FOO/BAR"
                     48: string(25) "http://example.com/foobar"
                     49: array(4) {
                     50:   ["directory"]=>
                     51:   string(%d) "%s"
                     52:   ["intSubName"]=>
                     53:   string(3) "foo"
                     54:   ["extSubURI"]=>
                     55:   string(25) "http://example.com/foobar"
                     56:   ["extSubSystem"]=>
                     57:   string(10) "-//FOO/BAR"
                     58: }
                     59: string(13) "-//FOO/ENTITY"
                     60: string(32) "http://example.com/fooentity.ent"
                     61: array(4) {
                     62:   ["directory"]=>
                     63:   string(%d) "%s"
                     64:   ["intSubName"]=>
                     65:   string(3) "foo"
                     66:   ["extSubURI"]=>
                     67:   string(25) "http://example.com/foobar"
                     68:   ["extSubSystem"]=>
                     69:   string(10) "-//FOO/BAR"
                     70: }
                     71: bool(true)
                     72: Done.

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>