* @coversNothing
*/
public function testServiceWiring() {
- $this->overrideMwServices();
-
$ranHook = 0;
$this->setMwGlobals( 'wgHooks', [
'ResourceLoaderRegisterModules' => [
'wrap' => true,
'styles' => [], 'templates' => [], 'messages' => new XmlJsCode( '{}' ), 'packageFiles' => [],
];
- ResourceLoader::clearCache();
- $this->setMwGlobals( 'wgResourceLoaderDebug', true );
-
$rl = TestingAccessWrapper::newFromClass( ResourceLoader::class );
+ $context = new ResourceLoaderContext( new EmptyResourceLoader(), new FauxRequest( [
+ 'debug' => 'true',
+ ] ) );
$this->assertEquals(
$case['expected'],
$rl->makeLoaderImplementScript(
+ $context,
$case['name'],
( $case['wrap'] && is_string( $case['scripts'] ) )
? new XmlJsCode( $case['scripts'] )
public function testMakeLoaderImplementScriptInvalid() {
$this->setExpectedException( MWException::class, 'Invalid scripts error' );
$rl = TestingAccessWrapper::newFromClass( ResourceLoader::class );
+ $context = new ResourceLoaderContext( new EmptyResourceLoader(), new FauxRequest() );
$rl->makeLoaderImplementScript(
+ $context,
'test', // name
123, // scripts
null, // styles
* @covers ResourceLoader::makeLoaderRegisterScript
*/
public function testMakeLoaderRegisterScript() {
+ $context = new ResourceLoaderContext( new EmptyResourceLoader(), new FauxRequest( [
+ 'debug' => 'true',
+ ] ) );
$this->assertEquals(
'mw.loader.register([
[
"1234567"
]
]);',
- ResourceLoader::makeLoaderRegisterScript( [
+ ResourceLoader::makeLoaderRegisterScript( $context, [
[ 'test.name', '1234567' ],
] ),
'Nested array parameter'
"return true;"
]
]);',
- ResourceLoader::makeLoaderRegisterScript( [
+ ResourceLoader::makeLoaderRegisterScript( $context, [
[ 'test.foo', '100' , [], null, null ],
[ 'test.bar', '200', [ 'test.unknown' ], null ],
[ 'test.baz', '300', [ 'test.quux', 'test.foo' ], null ],
* @covers ResourceLoader::makeLoaderSourcesScript
*/
public function testMakeLoaderSourcesScript() {
+ $context = new ResourceLoaderContext( new EmptyResourceLoader(), new FauxRequest( [
+ 'debug' => 'true',
+ ] ) );
$this->assertEquals(
'mw.loader.addSource({
"local": "/w/load.php"
});',
- ResourceLoader::makeLoaderSourcesScript( 'local', '/w/load.php' )
- );
- $this->assertEquals(
- 'mw.loader.addSource({
- "local": "/w/load.php"
-});',
- ResourceLoader::makeLoaderSourcesScript( [ 'local' => '/w/load.php' ] )
+ ResourceLoader::makeLoaderSourcesScript( $context, [ 'local' => '/w/load.php' ] )
);
$this->assertEquals(
'mw.loader.addSource({
"local": "/w/load.php",
"example": "https://example.org/w/load.php"
});',
- ResourceLoader::makeLoaderSourcesScript( [
+ ResourceLoader::makeLoaderSourcesScript( $context, [
'local' => '/w/load.php',
'example' => 'https://example.org/w/load.php'
] )
);
$this->assertEquals(
'mw.loader.addSource([]);',
- ResourceLoader::makeLoaderSourcesScript( [] )
+ ResourceLoader::makeLoaderSourcesScript( $context, [] )
);
}
] );
$context = $this->getResourceLoaderContext( [], $rl );
- $this->assertEquals(
+ $this->assertSame(
'',
$rl->getCombinedVersion( $context, [] ),
'empty list'
);
$this->assertEquals(
- ResourceLoader::makeHash( self::BLANK_VERSION ),
+ self::BLANK_COMBI,
$rl->getCombinedVersion( $context, [ 'foo' ] ),
'compute foo'
);
$rl->respond( $context );
}
+ /**
+ * Refuse requests for private modules.
+ *
+ * @covers ResourceLoader::respond
+ */
+ public function testRespondErrorPrivate() {
+ $rl = $this->getMockBuilder( EmptyResourceLoader::class )
+ ->setMethods( [
+ 'measureResponseTime',
+ 'tryRespondNotModified',
+ 'sendResponseHeaders',
+ ] )
+ ->getMock();
+ $rl->register( [
+ 'foo' => [ 'class' => ResourceLoaderTestModule::class ],
+ 'bar' => [ 'class' => ResourceLoaderTestModule::class, 'group' => 'private' ],
+ ] );
+ $context = $this->getResourceLoaderContext(
+ [ 'modules' => 'foo|bar', 'only' => null ],
+ $rl
+ );
+
+ $this->expectOutputRegex( '/^\/\*.+Cannot build private module/s' );
+ $rl->respond( $context );
+ }
+
/**
* @covers ResourceLoader::respond
*/