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