X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FParser_DiffTest.php;h=be3702cf821c6c253a38fef9b4926d0d29f83416;hb=000f346c1b541bd8643d901990a69b6a66847d1e;hp=e4a9362302175814f0caca34cf6d78aaff7dc47b;hpb=b6dba5bcfd3ee6cc2cee7d3a991a668b68669b47;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/Parser_DiffTest.php b/includes/Parser_DiffTest.php index e4a9362302..be3702cf82 100644 --- a/includes/Parser_DiffTest.php +++ b/includes/Parser_DiffTest.php @@ -1,24 +1,38 @@ conf = $conf; + $this->dtUniqPrefix = "\x7fUNIQ" . Parser::getRandomString(); } function init() { if ( !is_null( $this->parsers ) ) { return; } + + global $wgHooks; + static $doneHook = false; + if ( !$doneHook ) { + $doneHook = true; + $wgHooks['ParserClearState'][] = array( $this, 'onClearState' ); + } + foreach ( $this->conf['parsers'] as $i => $parserConf ) { if ( !is_array( $parserConf ) ) { $class = $parserConf; - $parserconf = array( 'class' => $parserConf ); + $parserConf = array( 'class' => $parserConf ); } else { $class = $parserConf['class']; } @@ -37,8 +51,14 @@ class Parser_DiffTest if ( $first ) { $first = false; } else { - if ( $lastResult !== $currentResult ) { - $mismatch = true; + if ( is_object( $lastResult ) ) { + if ( $lastResult != $currentResult ) { + $mismatch = true; + } + } else { + if ( $lastResult !== $currentResult ) { + $mismatch = true; + } } } $results[$i] = $currentResult; @@ -46,7 +66,7 @@ class Parser_DiffTest } if ( $mismatch ) { throw new MWException( "Parser_DiffTest: results mismatch on call to $name\n" . - 'Arguments: ' . var_export( $args, true ) . "\n" . + 'Arguments: ' . var_export( $args, true ) . "\n" . 'Results: ' . var_export( $results, true ) . "\n" ); } return $lastResult; @@ -58,5 +78,10 @@ class Parser_DiffTest $parser->setFunctionHook( $id, $callback, $flags ); } } -} + function onClearState( &$parser ) { + // hack marker prefixes to get identical output + $parser->mUniqPrefix = $this->dtUniqPrefix; + return true; + } +}