%PDF- %PDF-
| Direktori : /www/varak.net/wiki.varak.net/extensions/Mantle/includes/ |
| Current File : /www/varak.net/wiki.varak.net/extensions/Mantle/includes/Hooks.php |
<?php
/**
* Hook handlers for MobileFrontend extension
*
* Hook handler method names should be in the form of:
* on<HookName>()
* For intance, the hook handler for the 'RequestContextCreateSkin' would be called:
* onRequestContextCreateSkin()
*/
class MantleHooks {
/**
* UnitTestsList hook handler
* @see https://www.mediawiki.org/wiki/Manual:Hooks/UnitTestsList
*
* @param array $files
* @return bool
*/
public static function onUnitTestsList( &$files ) {
$dir = dirname( dirname( __FILE__ ) ) . '/tests';
$callback = function( $file ) use ( $dir ) {
return "$dir/$file";
};
$files = array_merge( $files,
array_map( $callback,
array(
'ResourceLoaderTemplateModuleTest.php',
)
)
);
return true;
}
/**
* ResourceLoaderTestModules hook handler
* @see https://www.mediawiki.org/wiki/Manual:Hooks/ResourceLoaderTestModules
*
* @param array $testModules
* @param ResourceLoader $resourceLoader
* @return bool
*/
public static function onResourceLoaderTestModules( array &$testModules,
ResourceLoader &$resourceLoader
) {
global $wgResourceModules;
$testModuleBoilerplate = array(
'localBasePath' => dirname( __DIR__ ),
'remoteExtPath' => 'Mantle',
'targets' => array( 'desktop', 'mobile' ),
);
// find test files for every RL module
foreach ( $wgResourceModules as $key => $module ) {
if ( substr( $key, 0, 10 ) === 'ext.mantle' && isset( $module['scripts'] ) ) {
$testFiles = array();
foreach ( $module['scripts'] as $script ) {
$testFile = 'tests/' . dirname( $script ) . '/test_' . basename( $script );
// if a test file exists for a given JS file, add it
if ( file_exists( $testModuleBoilerplate['localBasePath'] . '/' . $testFile ) ) {
$testFiles[] = $testFile;
}
}
// if test files exist for given module, create a corresponding test module
if ( !empty( $testFiles ) ) {
$testModules['qunit']["$key.tests"] = $testModuleBoilerplate + array(
'dependencies' => array( $key ),
'scripts' => $testFiles,
);
}
}
}
return true;
}
}