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