3 use Wikimedia\TestingAccessWrapper;
4 use Wikimedia\ScopedCallback;
13 $wrap->defaults =
null;
14 $wrap->lazyOptions = [
19 'numberheadings' =>
true,
21 'stubthreshold' =>
true,
34 'wgRenderHashAppend' =>
'',
36 'PageRenderingHash' => [],
56 $this->assertSame( $expect, $popt->isSafeToCache() );
61 'No overrides' => [
true, [] ],
62 'In-key options are ok' => [
true, [
66 'Non-in-key options are not ok' => [
false, [
67 'removeComments' =>
false,
69 'Non-in-key options are not ok (2)' => [
false, [
70 'wrapclass' =>
'foobar',
72 'Canonical override, not default (1)' => [
true, [
75 'Canonical override, not default (2)' => [
false, [
94 $globals[
'wgHooks'] += [
95 'PageRenderingHash' => [],
103 $this->assertSame( $expect, $popt->optionsHash( $usedOptions ) );
107 $used = [
'thumbsize',
'printable' ];
110 $classWrapper->getDefaults();
111 $allUsableOptions = array_diff(
112 array_keys( $classWrapper->inCacheKey ),
113 array_keys( $classWrapper->lazyOptions )
117 'Canonical options, nothing used' => [ [],
'canonical', [] ],
118 'Canonical options, used some options' => [ $used,
'canonical', [] ],
119 'Used some options, non-default values' => [
121 'printable=1!thumbsize=200',
127 'Canonical options, used all non-lazy options' => [ $allUsableOptions,
'canonical', [] ],
128 'Canonical options, nothing used, but with hooks and $wgRenderHashAppend' => [
130 'canonical!wgRenderHashAppend!onPageRenderingHash',
133 'wgRenderHashAppend' =>
'!wgRenderHashAppend',
134 'wgHooks' => [
'PageRenderingHash' => [ [ __CLASS__ .
'::onPageRenderingHash' ] ] ],
141 $confstr .=
'!onPageRenderingHash';
150 $popt->getOption(
'bogus' );
159 $popt->setOption(
'bogus',
true );
164 $oldDefaults = $classWrapper->defaults;
165 $oldLazy = $classWrapper->lazyOptions;
166 $reset =
new ScopedCallback(
function ()
use ( $classWrapper, $oldDefaults, $oldLazy ) {
167 $classWrapper->defaults = $oldDefaults;
168 $classWrapper->lazyOptions = $oldLazy;
173 $this->assertTrue( $popt1->matches( $popt2 ) );
175 $popt1->enableLimitReport(
true );
176 $popt2->enableLimitReport(
false );
177 $this->assertTrue( $popt1->matches( $popt2 ) );
179 $popt2->setTidy( !$popt2->getTidy() );
180 $this->assertFalse( $popt1->matches( $popt2 ) );
183 $classWrapper->defaults += [ __METHOD__ => null ];
184 $classWrapper->lazyOptions += [ __METHOD__ =>
function ()
use ( &$ctr ) {
189 $this->assertFalse( $popt1->matches( $popt2 ) );
191 ScopedCallback::consume( $reset );
198 $wgHooks[
'ParserOptionsRegister'] = [];
200 'dateformat',
'numberheadings',
'printable',
'stubthreshold',
201 'thumbsize',
'userlang'
206 $wgHooks[
'ParserOptionsRegister'][] =
function ( &$defaults, &$inCacheKey ) {
218 'dateformat',
'foo',
'numberheadings',
'printable',
'stubthreshold',
219 'thumbsize',
'userlang'