http://www.mediawiki.org/wiki/Special:Code/MediaWiki/89029

Revision: 89029
Author:   hashar
Date:     2011-05-28 09:58:43 +0000 (Sat, 28 May 2011)
Log Message:
-----------
Handle old libxml when extracting SVG metadata

Mac OS X 10.5.8 comes with libxml 2.6.16, thus some methods of XMLReader
are not availabe (ex: readInnerXML()).
This patch, throw an error if the above method does not exist (only one
use in our code).

Since metadata can comes as string or an XML fragment, I have split the tests
to take care of the two usages and of the exception.

Modified Paths:
--------------
    trunk/phase3/includes/media/SVGMetadataExtractor.php
    trunk/phase3/tests/phpunit/includes/media/SVGMetadataExtractorTest.php

Modified: trunk/phase3/includes/media/SVGMetadataExtractor.php
===================================================================
--- trunk/phase3/includes/media/SVGMetadataExtractor.php        2011-05-28 
09:03:44 UTC (rev 89028)
+++ trunk/phase3/includes/media/SVGMetadataExtractor.php        2011-05-28 
09:58:43 UTC (rev 89029)
@@ -177,7 +177,11 @@
                        return;
                }
                // TODO: find and store type of xml snippet. 
metadata['metadataType'] = "rdf"
-               $this->metadata[$metafield] = trim( 
$this->reader->readInnerXML() );
+               if( method_exists( $this->reader, 'readInnerXML()' ) ) {
+                       $this->metadata[$metafield] = trim( 
$this->reader->readInnerXML() );
+               } else {
+                       throw new MWException( "The PHP XMLReader extension 
does not comes with readInnerXML() method. Your libxml is probably out of date 
(need 2.6.20 or later)." );
+               }
                $this->reader->next();
        }
 

Modified: trunk/phase3/tests/phpunit/includes/media/SVGMetadataExtractorTest.php
===================================================================
--- trunk/phase3/tests/phpunit/includes/media/SVGMetadataExtractorTest.php      
2011-05-28 09:03:44 UTC (rev 89028)
+++ trunk/phase3/tests/phpunit/includes/media/SVGMetadataExtractorTest.php      
2011-05-28 09:58:43 UTC (rev 89029)
@@ -10,6 +10,22 @@
         * @dataProvider providerSvgFiles
         */
        function testGetMetadata( $infile, $expected ) {
+               $this->assertMetadata( $infile, $expected );
+       }
+       
+       /**
+        * @dataProvider providerSvgFilesWithXMLMetadata
+        */
+       function testGetXMLMetadata( $infile, $expected ) {
+               $r = new XMLReader();
+               if( !method_exists( $r, 'readInnerXML()' ) ) {
+                       $this->markTestSkipped( 'XMLReader::readInnerXML() does 
not exist (libxml >2.6.20 needed).' );
+                       return;
+               }
+               $this->assertMetadata( $infile, $expected );
+       }
+
+       function assertMetadata( $infile, $expected ) {
                try {
                        $data = SVGMetadataExtractor::getMetadata( $infile );
                        $this->assertEquals( $expected, $data, 'SVG metadata 
extraction test' );
@@ -46,6 +62,12 @@
                                        'height' => 60
                                )
                        ),
+               );
+       }
+
+       function providerSvgFilesWithXMLMetadata() {
+               $base = dirname( __FILE__ );
+               return array(
                        array(
                                
"$base/US_states_by_total_state_tax_revenue.svg",
                                array(


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to