registration: Avoid double slashes in localBasePath

Noticed it in APC usage for ResourceLoader that various keys from
FileContentsHasher contain double slashes. All from extensions that
use the `"localBasePath": ""` trick in extension.json (e.g. Citoid).

Change-Id: I5bac1e2e05e063aa7ff251ce7ffaa965a3451db9
This commit is contained in:
Timo Tijhof 2016-02-16 20:39:34 +00:00 committed by Kunal Mehta
parent 858183e87a
commit 04362aa613
2 changed files with 14 additions and 4 deletions

View file

@ -253,14 +253,24 @@ class ExtensionProcessor implements Processor {
? $info['ResourceFileModulePaths']
: false;
if ( isset( $defaultPaths['localBasePath'] ) ) {
$defaultPaths['localBasePath'] = "$dir/{$defaultPaths['localBasePath']}";
if ( $defaultPaths['localBasePath'] === '' ) {
// Avoid double slashes (e.g. /extensions/Example//path)
$defaultPaths['localBasePath'] = $dir;
} else {
$defaultPaths['localBasePath'] = "$dir/{$defaultPaths['localBasePath']}";
}
}
foreach ( [ 'ResourceModules', 'ResourceModuleSkinStyles' ] as $setting ) {
if ( isset( $info[$setting] ) ) {
foreach ( $info[$setting] as $name => $data ) {
if ( isset( $data['localBasePath'] ) ) {
$data['localBasePath'] = "$dir/{$data['localBasePath']}";
if ( $data['localBasePath'] === '' ) {
// Avoid double slashes (e.g. /extensions/Example//path)
$data['localBasePath'] = $dir;
} else {
$data['localBasePath'] = "$dir/{$data['localBasePath']}";
}
}
if ( $defaultPaths ) {
$data += $defaultPaths;

View file

@ -218,7 +218,7 @@ class ExtensionProcessorTest extends MediaWikiTestCase {
}
public static function provideExtractResourceLoaderModules() {
$dir = __DIR__ . '/FooBar/';
$dir = __DIR__ . '/FooBar';
return [
// Generic module with localBasePath/remoteExtPath specified
[
@ -285,7 +285,7 @@ class ExtensionProcessorTest extends MediaWikiTestCase {
],
'test.bar' => [
'styles' => 'bar.js',
'localBasePath' => $dir . 'subdir',
'localBasePath' => "$dir/subdir",
'remoteExtPath' => 'FooBar/subdir',
],
'test.class' => [