/** * Do any required setup which is dependent on test options. * * @see staticSetup() for more information about setup/teardown * * @param array $test Test info supplied by TestFileReader * @param callable|null $nextTeardown * @return ScopedCallback */ public function perTestSetup($test, $nextTeardown = null) { $teardown = []; $this->checkSetupDone('setupDatabase', 'setDatabase'); $teardown[] = $this->markSetupDone('perTestSetup'); $opts = $this->parseOptions($test['options']); $config = $test['config']; // Find out values for some special options. $langCode = self::getOptionValue('language', $opts, 'en'); $variant = self::getOptionValue('variant', $opts, false); $maxtoclevel = self::getOptionValue('wgMaxTocLevel', $opts, 999); $linkHolderBatchSize = self::getOptionValue('wgLinkHolderBatchSize', $opts, 1000); $setup = ['wgEnableUploads' => self::getOptionValue('wgEnableUploads', $opts, true), 'wgLanguageCode' => $langCode, 'wgRawHtml' => self::getOptionValue('wgRawHtml', $opts, false), 'wgNamespacesWithSubpages' => [0 => isset($opts['subpage'])], 'wgMaxTocLevel' => $maxtoclevel, 'wgAllowExternalImages' => self::getOptionValue('wgAllowExternalImages', $opts, true), 'wgThumbLimits' => [self::getOptionValue('thumbsize', $opts, 180)], 'wgDefaultLanguageVariant' => $variant, 'wgLinkHolderBatchSize' => $linkHolderBatchSize, 'wgEnableMagicLinks' => self::getOptionValue('wgEnableMagicLinks', $opts, []) + ['ISBN' => true, 'PMID' => true, 'RFC' => true]]; if ($config) { $configLines = explode("\n", $config); foreach ($configLines as $line) { list($var, $value) = explode('=', $line, 2); $setup[$var] = eval("return {$value};"); } } /** @since 1.20 */ Hooks::run('ParserTestGlobals', [&$setup]); // Create tidy driver if (isset($opts['tidy'])) { // Cache a driver instance if ($this->tidyDriver === null) { $this->tidyDriver = MWTidy::factory($this->tidySupport->getConfig()); } $tidy = $this->tidyDriver; } else { $tidy = false; } MWTidy::setInstance($tidy); $teardown[] = function () { MWTidy::destroySingleton(); }; // Set content language. This invalidates the magic word cache and title services $lang = Language::factory($langCode); $setup['wgContLang'] = $lang; $reset = function () { MagicWord::clearCache(); $this->resetTitleServices(); }; $setup[] = $reset; $teardown[] = $reset; // Make a user object with the same language $user = new User(); $user->setOption('language', $langCode); $setup['wgLang'] = $lang; // We (re)set $wgThumbLimits to a single-element array above. $user->setOption('thumbsize', 0); $setup['wgUser'] = $user; // And put both user and language into the context $context = RequestContext::getMain(); $context->setUser($user); $context->setLanguage($lang); $teardown[] = function () use($context) { // Reset context to the restored globals $context->setUser($GLOBALS['wgUser']); $context->setLanguage($GLOBALS['wgContLang']); }; $teardown[] = $this->executeSetupSnippets($setup); return $this->createTeardownObject($teardown, $nextTeardown); }
/** * @dataProvider dataRemoveHTMLtags * @covers Sanitizer::removeHTMLtags */ public function testRemoveHTMLtags($input, $output, $msg = null) { MWTidy::setInstance(false); $this->assertEquals($output, Sanitizer::removeHTMLtags($input), $msg); }