* Add a parser test for parser hooks inside comments which are currently
authorÆvar Arnfjörð Bjarmason <avar@users.mediawiki.org>
Mon, 27 Feb 2006 02:53:03 +0000 (02:53 +0000)
committerÆvar Arnfjörð Bjarmason <avar@users.mediawiki.org>
Mon, 27 Feb 2006 02:53:03 +0000 (02:53 +0000)
  parsed (called) by the parser but shouldn't, the following will output
  "hello, world" in the <statictag> hook:
    <!-- <statictag>hello, world</statictag> -->
<statictag action=flush/>

maintenance/parserTests.inc
maintenance/parserTests.txt
maintenance/parserTestsStaticParserHook.php [new file with mode: 0644]

index 7de93eb..e461050 100644 (file)
@@ -34,6 +34,7 @@ require_once( "$IP/includes/BagOStuff.php" );
 require_once( "$IP/languages/LanguageUtf8.php" );
 require_once( "$IP/includes/Hooks.php" );
 require_once( "$IP/maintenance/parserTestsParserHook.php" );
+require_once( "$IP/maintenance/parserTestsStaticParserHook.php" );
 require_once( "$IP/maintenance/parserTestsParserTime.php" );
 
 /**
index 5e90909..eeefcaa 100644 (file)
@@ -3456,6 +3456,30 @@ array(4) {
 </p>
 !! end
 
+###
+### (see maintenance/parserTestsStaticParserHook.php for the <statictag> extension)
+###
+
+!! test
+Parser hook: static parser hook not inside a comment
+!! input
+<statictag>hello, world</statictag>
+<statictag action=flush/>
+!! result
+<p>hello, world
+</p>
+!! end
+
+
+!! test
+Parser hook: static parser hook inside a comment
+!! input
+<!-- <statictag>hello, world</statictag> -->
+<statictag action=flush/>
+!! result
+<p><br />
+</p>
+!! end
 
 # Nested template calls; this case was broken by Parser.php rev 1.506,
 # since reverted.
diff --git a/maintenance/parserTestsStaticParserHook.php b/maintenance/parserTestsStaticParserHook.php
new file mode 100644 (file)
index 0000000..820a06f
--- /dev/null
@@ -0,0 +1,41 @@
+<?php
+if ( ! defined( 'MEDIAWIKI' ) )
+       die( -1 );
+/**
+ * A basic extension that's used by the parser tests to test whether the parser
+ * calls extensions when they're called inside comments, it shouldn't do that
+ *
+ * @package MediaWiki
+ * @subpackage Maintenance
+ *
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ * @copyright Copyright © 2005, 2006 Ævar Arnfjörð Bjarmason
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ */
+
+$wgHooks['ParserTestParser'][] = 'wfParserTestStaticParserHookSetup';
+
+function wfParserTestStaticParserHookSetup( &$parser ) {
+       $parser->setHook( 'statictag', 'wfParserTestStaticParserHookHook' );
+
+       return true;
+}
+
+function wfParserTestStaticParserHookHook( $in, $argv ) {
+       static $buf = null;
+       
+       if ( ! count( $argv ) ) {
+               $buf = $in;
+               return '';
+       } else if ( count( $argv ) === 1 && $argv['action'] === 'flush' && $in === null ) {
+               // Clear the buffer, we probably don't need to
+               $tmp = $buf;
+               $buf = null;
+               return $tmp;
+       } else
+               // wtf?
+               die(
+                       "\nCall this extension as <statictag>string</statictag> or as" .
+                       " <statictag action=flush/>, not in any other way.\n"
+               );
+}