Merge "Warn if stateful ParserOutput transforms are used"
[lhc/web/wiklou.git] / tests / parser / fuzzTest.php
index ddf839e..9a2a9c9 100644 (file)
@@ -1,5 +1,7 @@
 <?php
 
+use Wikimedia\ScopedCallback;
+
 require __DIR__ . '/../../maintenance/Maintenance.php';
 
 // Make RequestContext::resetMain() happy
@@ -22,13 +24,16 @@ class ParserFuzzTest extends Maintenance {
        }
 
        function finalSetup() {
-               require_once __DIR__ . '/../common/TestsAutoLoader.php';
+               self::requireTestsAutoloader();
+               TestSetup::applyInitialConfig();
        }
 
        function execute() {
                $files = $this->getOption( 'file', [ __DIR__ . '/parserTests.txt' ] );
                $this->seed = intval( $this->getOption( 'seed', 1 ) ) - 1;
-               $this->parserTest = new ParserTestRunner;
+               $this->parserTest = new ParserTestRunner(
+                       new MultiTestRecorder,
+                       [] );
                $this->fuzzTest( $files );
        }
 
@@ -38,11 +43,23 @@ class ParserFuzzTest extends Maintenance {
         * @param array $filenames
         */
        function fuzzTest( $filenames ) {
-               $GLOBALS['wgContLang'] = Language::factory( 'en' );
                $dict = $this->getFuzzInput( $filenames );
                $dictSize = strlen( $dict );
                $logMaxLength = log( $this->maxFuzzTestLength );
-               $this->parserTest->setupDatabase();
+
+               $teardown = $this->parserTest->staticSetup();
+               $teardown = $this->parserTest->setupDatabase( $teardown );
+               $teardown = $this->parserTest->setupUploads( $teardown );
+
+               $fakeTest = [
+                       'test' => '',
+                       'desc' => '',
+                       'input' => '',
+                       'result' => '',
+                       'options' => '',
+                       'config' => ''
+               ];
+
                ini_set( 'memory_limit', $this->memoryLimit * 1048576 * 2 );
 
                $numTotal = 0;
@@ -64,7 +81,7 @@ class ParserFuzzTest extends Maintenance {
                                $input .= substr( $dict, $offset, $hairLength );
                        }
 
-                       $this->parserTest->setupGlobals();
+                       $perTestTeardown = $this->parserTest->perTestSetup( $fakeTest );
                        $parser = $this->parserTest->getParser();
 
                        // Run the test
@@ -85,8 +102,7 @@ class ParserFuzzTest extends Maintenance {
                        }
 
                        $numTotal++;
-                       $this->parserTest->teardownGlobals();
-                       $parser->__destruct();
+                       ScopedCallback::consume( $perTestTeardown );
 
                        if ( $numTotal % 100 == 0 ) {
                                $usage = intval( memory_get_usage( true ) / $this->memoryLimit / 1048576 * 100 );