parent::setUp();
$this->setMwGlobals( [
- 'wgResourceLoaderLESSImportPaths' => [
- dirname( dirname( __DIR__ ) ) . '/data/less/common',
- ],
+ 'wgResourceLoaderLESSImportPaths' => [],
'wgResourceLoaderLESSVars' => [
'foo' => '2px',
'Foo' => '#eeeeee',
*/
public function testRegisterInvalidName() {
$resourceLoader = new EmptyResourceLoader();
- $this->setExpectedException( 'MWException', "name 'test!invalid' is invalid" );
+ $this->setExpectedException( MWException::class, "name 'test!invalid' is invalid" );
$resourceLoader->register( 'test!invalid', new ResourceLoaderTestModule() );
}
*/
public function testRegisterInvalidType() {
$resourceLoader = new EmptyResourceLoader();
- $this->setExpectedException( 'MWException', 'ResourceLoader module info type error' );
+ $this->setExpectedException( MWException::class, 'ResourceLoader module info type error' );
$resourceLoader->register( 'test', new stdClass() );
}
+ /**
+ * @covers ResourceLoader::register
+ */
+ public function testRegisterDuplicate() {
+ $logger = $this->getMockBuilder( Psr\Log\LoggerInterface::class )->getMock();
+ $logger->expects( $this->once() )
+ ->method( 'warning' );
+ $resourceLoader = new EmptyResourceLoader( null, $logger );
+
+ $module1 = new ResourceLoaderTestModule();
+ $module2 = new ResourceLoaderTestModule();
+ $resourceLoader->register( 'test', $module1 );
+ $resourceLoader->register( 'test', $module2 );
+ $this->assertSame( $module2, $resourceLoader->getModule( 'test' ) );
+ }
+
/**
* @covers ResourceLoader::getModuleNames
*/
$this->assertStringEqualsFile( $basePath . '/styles.css', $styles['all'] );
}
+ /**
+ * @covers ResourceLoader::getLessCompiler
+ */
+ public function testLessImportDirs() {
+ $rl = new EmptyResourceLoader();
+ $lc = $rl->getLessCompiler();
+ $basePath = dirname( dirname( __DIR__ ) ) . '/data/less';
+ $lc->SetImportDirs( [
+ "$basePath/common" => '',
+ ] );
+ $css = $lc->parseFile( "$basePath/module/use-import-dir.less" )->getCss();
+ $this->assertStringEqualsFile( "$basePath/module/styles.css", $css );
+ }
+
public static function providePackedModules() {
return [
[
'jquery.foo,bar|jquery.ui.baz,quux',
],
[
- 'Regression fixed in r88706 with dotless names',
+ 'Regression fixed in r87497 (7fee86c38e) with dotless names',
[ 'foo', 'bar', 'baz' ],
'foo,bar,baz',
],
*/
public function testAddSourceDupe() {
$rl = new ResourceLoader;
- $this->setExpectedException( 'MWException', 'ResourceLoader duplicate source addition error' );
+ $this->setExpectedException(
+ MWException::class, 'ResourceLoader duplicate source addition error'
+ );
$rl->addSource( 'foo', 'https://example.org/w/load.php' );
$rl->addSource( 'foo', 'https://example.com/w/load.php' );
}
*/
public function testAddSourceInvalid() {
$rl = new ResourceLoader;
- $this->setExpectedException( 'MWException', 'with no "loadScript" key' );
+ $this->setExpectedException( MWException::class, 'with no "loadScript" key' );
$rl->addSource( 'foo', [ 'x' => 'https://example.org/w/load.php' ] );
}
ResourceLoader::clearCache();
$this->setMwGlobals( 'wgResourceLoaderDebug', true );
- $rl = TestingAccessWrapper::newFromClass( 'ResourceLoader' );
+ $rl = TestingAccessWrapper::newFromClass( ResourceLoader::class );
$this->assertEquals(
$case['expected'],
$rl->makeLoaderImplementScript(
* @covers ResourceLoader::makeLoaderImplementScript
*/
public function testMakeLoaderImplementScriptInvalid() {
- $this->setExpectedException( 'MWException', 'Invalid scripts error' );
- $rl = TestingAccessWrapper::newFromClass( 'ResourceLoader' );
+ $this->setExpectedException( MWException::class, 'Invalid scripts error' );
+ $rl = TestingAccessWrapper::newFromClass( ResourceLoader::class );
$rl->makeLoaderImplementScript(
'test', // name
123, // scripts
'foo' => self::getSimpleModuleMock( 'foo();' ),
'ferry' => self::getFailFerryMock(),
'bar' => self::getSimpleModuleMock( 'bar();' ),
- 'startup' => [ 'class' => 'ResourceLoaderStartUpModule' ],
+ 'startup' => [ 'class' => ResourceLoaderStartUpModule::class ],
] );
$context = $this->getResourceLoaderContext(
[