https://www.mediawiki.org/wiki/Special:Code/MediaWiki/108360

Revision: 108360
Author:   demon
Date:     2012-01-08 17:32:39 +0000 (Sun, 08 Jan 2012)
Log Message:
-----------
Followup r108358, bring back DelayedParserTest

Modified Paths:
--------------
    trunk/phase3/tests/testHelpers.inc

Modified: trunk/phase3/tests/testHelpers.inc
===================================================================
--- trunk/phase3/tests/testHelpers.inc  2012-01-08 17:29:20 UTC (rev 108359)
+++ trunk/phase3/tests/testHelpers.inc  2012-01-08 17:32:39 UTC (rev 108360)
@@ -226,3 +226,72 @@
                return true;
        }
 }
+
+/**
+ * A class to delay execution of a parser test hooks. 
+ */
+class DelayedParserTest {
+
+       /** Initialized on construction */
+       private $hooks;
+       private $fnHooks;
+
+       public function __construct() {
+               $this->reset();
+       }
+
+       /**
+        * Init/reset or forgot about the current delayed test.
+        * Call to this will erase any hooks function that were pending.
+        */
+       public function reset() {
+               $this->hooks   = array();
+               $this->fnHooks = array();
+       }
+
+       /**
+        * Called whenever we actually want to run the hook.
+        * Should be the case if we found the parserTest is not disabled 
+        */
+       public function unleash( &$parserTest ) {
+               if( !($parserTest instanceof ParserTest || $parserTest 
instanceof NewParserTest
+               ) ) {
+                       throw new MWException( __METHOD__ . " must be passed an 
instance of ParserTest or NewParserTest classes\n" );
+               }
+
+               # Trigger delayed hooks. Any failure will make us abort
+               foreach( $this->hooks as $hook ) {
+                       $ret = $parserTest->requireHook( $hook );
+                       if( !$ret ) {
+                               return false;
+                       }
+               }
+
+               # Trigger delayed function hooks. Any failure will make us abort
+               foreach( $this->fnHooks as $fnHook ) {
+                       $ret = $parserTest->requireFunctionHook( $fnHook );
+                       if( !$ret ) {
+                               return false;
+                       }
+               }
+
+               # Delayed execution was successful.
+               return true;
+       }
+
+       /**
+        * Similar to ParserTest object but does not run anything
+        * Use unleash() to really execute the hook
+        */
+       public function requireHook( $hook ) {
+               $this->hooks[] = $hook;
+       }
+       /**
+        * Similar to ParserTest object but does not run anything
+        * Use unleash() to really execute the hook function
+        */
+       public function requireFunctionHook( $fnHook ) {
+               $this->fnHooks[] = $fnHook;
+       }
+
+}
\ No newline at end of file


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

Reply via email to