tests: Remove intermediary suites concept from /tests/qunit
I don't recall why I added this. Possibly in a confused effort to match /tests/phpunit, except /tests/phpunit/suites is not where test cases live, they live under /tests/phpunit/* directly, mostly /tests/phpunit/includes named after the source directory. The correct equivalent to that is /tests/qunit/resources for JS. While at it, also remove mention of this concept from various other places where it doesn't add value. It's one more word/concept to learn, process, understand, or translate mentally. They're just tests, or for the one or two places where we care about how they are internally transmitted, a "test module". Bug: T250045 Change-Id: I5ea22e4965d190357aa69883f29f9049ee8ebf13
This commit is contained in:
parent
b24c10445a
commit
68d4fe68b9
65 changed files with 88 additions and 82 deletions
|
|
@ -5955,7 +5955,7 @@ config-schema:
|
|||
@deprecated since 1.30
|
||||
EnableJavaScriptTest:
|
||||
default: false
|
||||
description: 'Allow running of javascript test suites via [[Special:JavaScriptTest]] (such as QUnit).'
|
||||
description: 'Allow running of QUnit tests via [[Special:JavaScriptTest]].'
|
||||
CachePrefix:
|
||||
default: false
|
||||
description: |-
|
||||
|
|
|
|||
|
|
@ -9564,7 +9564,7 @@ class MainConfigSchema {
|
|||
];
|
||||
|
||||
/**
|
||||
* Allow running of javascript test suites via [[Special:JavaScriptTest]] (such as QUnit).
|
||||
* Allow running of QUnit tests via [[Special:JavaScriptTest]].
|
||||
*/
|
||||
public const EnableJavaScriptTest = [
|
||||
'default' => false,
|
||||
|
|
|
|||
|
|
@ -13,20 +13,26 @@ use MediaWiki\ResourceLoader\ResourceLoader;
|
|||
*/
|
||||
interface ResourceLoaderTestModulesHook {
|
||||
/**
|
||||
* Use this hook to register ResourceLoader modules that are only available
|
||||
* when $wgEnableJavaScriptTest is true. Use this for test suites and
|
||||
* other test-only resources.
|
||||
* Register QUnit tests to load on [[Special:JavaScriptTest]].
|
||||
*
|
||||
* @since 1.35
|
||||
* @param array &$testModules One array of modules per test framework.
|
||||
* The modules array follows the same format as `$wgResourceModules`.
|
||||
* For example:
|
||||
* $testModules['qunit']['ext.Example.test'] = [
|
||||
* The tests files take the form of a ResourceLoader module that will only be registered
|
||||
* when $wgEnableJavaScriptTest is true, and automatically discovered and loaded when
|
||||
* visiting [[Special:JavaScriptTest]].
|
||||
*
|
||||
* The `$testModules` array follows the same format as $wgResourceModules, and is additionally
|
||||
* keyed by test framework.
|
||||
*
|
||||
* For example:
|
||||
*
|
||||
* $testModules['qunit']['test.Example'] = [
|
||||
* 'localBasePath' => __DIR__ . '/tests/qunit',
|
||||
* 'remoteExtPath' => 'Example/tests/qunit',
|
||||
* 'script' => [ 'tests/qunit/foo.js' ],
|
||||
* 'script' => [ 'tests/qunit/foo.test.js' ],
|
||||
* 'dependencies' => [ 'ext.Example.foo' ]
|
||||
* ];
|
||||
*
|
||||
* @since 1.35
|
||||
* @param array &$testModules
|
||||
* @param ResourceLoader $rl
|
||||
* @return void This hook must not abort, it must return no value
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -138,8 +138,8 @@ class ResourceLoader implements LoggerAwareInterface {
|
|||
private $modules = [];
|
||||
/** @var array[] Map of (module name => associative info array) */
|
||||
private $moduleInfos = [];
|
||||
/** @var string[] List of module names that contain QUnit test suites */
|
||||
private $testSuiteModuleNames = [];
|
||||
/** @var string[] List of module names that contain QUnit tests */
|
||||
private $testModuleNames = [];
|
||||
/** @var string[] Map of (source => path); E.g. [ 'source-id' => 'http://.../load.php' ] */
|
||||
private $sources = [];
|
||||
/** @var array Errors accumulated during a respond() call. Exposed for testing. */
|
||||
|
|
@ -320,26 +320,26 @@ class ResourceLoader implements LoggerAwareInterface {
|
|||
$testModules = $testModulesMeta['qunit']
|
||||
+ $extRegistry->getAttribute( 'QUnitTestModules' );
|
||||
|
||||
$testSuiteModuleNames = [];
|
||||
$testModuleNames = [];
|
||||
foreach ( $testModules as $name => &$module ) {
|
||||
// Turn any single-module dependency into an array
|
||||
if ( isset( $module['dependencies'] ) && is_string( $module['dependencies'] ) ) {
|
||||
$module['dependencies'] = [ $module['dependencies'] ];
|
||||
}
|
||||
|
||||
// Ensure the testrunner loads before any test suites
|
||||
// Ensure the testrunner loads before any tests
|
||||
$module['dependencies'][] = 'mediawiki.qunit-testrunner';
|
||||
|
||||
// Keep track of the test suites to load on SpecialJavaScriptTest
|
||||
$testSuiteModuleNames[] = $name;
|
||||
// Keep track of the modules to load on SpecialJavaScriptTest
|
||||
$testModuleNames[] = $name;
|
||||
}
|
||||
|
||||
// Core test suites (their names have further precedence).
|
||||
// Core test modules (their names have further precedence).
|
||||
$testModules = ( include MW_INSTALL_PATH . '/tests/qunit/QUnitTestResources.php' ) + $testModules;
|
||||
$testSuiteModuleNames[] = 'test.MediaWiki';
|
||||
$testModuleNames[] = 'test.MediaWiki';
|
||||
|
||||
$this->register( $testModules );
|
||||
$this->testSuiteModuleNames = $testSuiteModuleNames;
|
||||
$this->testModuleNames = $testModuleNames;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -382,14 +382,14 @@ class ResourceLoader implements LoggerAwareInterface {
|
|||
}
|
||||
|
||||
/**
|
||||
* Get a list of module names with QUnit test suites.
|
||||
* Get a list of modules with QUnit tests.
|
||||
*
|
||||
* @internal For use by SpecialJavaScriptTest only
|
||||
* @return string[]
|
||||
* @codeCoverageIgnore
|
||||
*/
|
||||
public function getTestSuiteModuleNames() {
|
||||
return $this->testSuiteModuleNames;
|
||||
return $this->testModuleNames;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ class SpecialJavaScriptTest extends SpecialPage {
|
|||
. $rl->makeModuleResponse( $embedContext, [
|
||||
'user.options' => $rl->getModule( 'user.options' ),
|
||||
] )
|
||||
// Load all the test suites
|
||||
// Load all the test modules
|
||||
. Xml::encodeJsCall( 'mw.loader.load', [ $modules ] )
|
||||
);
|
||||
$encModules = Xml::encodeJsVar( $modules );
|
||||
|
|
|
|||
|
|
@ -44,65 +44,65 @@ return [
|
|||
|
||||
'test.MediaWiki' => [
|
||||
'scripts' => [
|
||||
'tests/qunit/suites/resources/startup/startup.test.js',
|
||||
'tests/qunit/suites/resources/startup/mediawiki.test.js',
|
||||
'tests/qunit/suites/resources/startup/mw.Map.test.js',
|
||||
'tests/qunit/suites/resources/startup/mw.loader.test.js',
|
||||
'tests/qunit/suites/resources/startup/mw.requestIdleCallback.test.js',
|
||||
'tests/qunit/suites/resources/jquery/jquery.accessKeyLabel.test.js',
|
||||
'tests/qunit/suites/resources/jquery/jquery.color.test.js',
|
||||
'tests/qunit/suites/resources/jquery/jquery.colorUtil.test.js',
|
||||
'tests/qunit/suites/resources/jquery/jquery.highlightText.test.js',
|
||||
'tests/qunit/suites/resources/jquery/jquery.lengthLimit.test.js',
|
||||
'tests/qunit/suites/resources/jquery/jquery.makeCollapsible.test.js',
|
||||
'tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js',
|
||||
'tests/qunit/suites/resources/jquery/jquery.tablesorter.parsers.test.js',
|
||||
'tests/qunit/suites/resources/jquery/jquery.textSelection.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.errorLogger.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.jscompat.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.messagePoster.factory.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.String.byteLength.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.String.charAt.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.String.lcFirst.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.String.ucFirst.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.String.trimByteLength.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.storage.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.template.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.template.mustache.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.base.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.html.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.inspect.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.toc.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.track.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.Uri.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.user.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki.api/mediawiki.api.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki.api/mediawiki.api.category.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki.api/mediawiki.api.edit.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki.api/mediawiki.api.messages.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki.api/mediawiki.api.options.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki.api/mediawiki.api.parse.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki.api/mediawiki.api.upload.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki.api/mediawiki.api.watch.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki.api/mediawiki.rest.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki.ForeignApi/mediawiki.ForeignApi.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki.ForeignApi/mediawiki.ForeignRest.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki.rcfilters/dm.FilterItem.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki.rcfilters/dm.SavedQueryItemModel.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki.rcfilters/dm.SavedQueriesModel.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki.rcfilters/UriProcessor.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki.widgets/MediaSearch/mediawiki.widgets.APIResultsQueue.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki.widgets/Table/mediawiki.widgets.TableWidget.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.language.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.cldr.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.cookie.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.deflate.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.experiments.test.js',
|
||||
'tests/qunit/suites/resources/mediawiki/mediawiki.visibleTimeout.test.js',
|
||||
'tests/qunit/resources/startup/startup.test.js',
|
||||
'tests/qunit/resources/startup/mediawiki.test.js',
|
||||
'tests/qunit/resources/startup/mw.Map.test.js',
|
||||
'tests/qunit/resources/startup/mw.loader.test.js',
|
||||
'tests/qunit/resources/startup/mw.requestIdleCallback.test.js',
|
||||
'tests/qunit/resources/jquery/jquery.accessKeyLabel.test.js',
|
||||
'tests/qunit/resources/jquery/jquery.color.test.js',
|
||||
'tests/qunit/resources/jquery/jquery.colorUtil.test.js',
|
||||
'tests/qunit/resources/jquery/jquery.highlightText.test.js',
|
||||
'tests/qunit/resources/jquery/jquery.lengthLimit.test.js',
|
||||
'tests/qunit/resources/jquery/jquery.makeCollapsible.test.js',
|
||||
'tests/qunit/resources/jquery/jquery.tablesorter.test.js',
|
||||
'tests/qunit/resources/jquery/jquery.tablesorter.parsers.test.js',
|
||||
'tests/qunit/resources/jquery/jquery.textSelection.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.errorLogger.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.jqueryMsg.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.jscompat.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.messagePoster.factory.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.String.byteLength.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.String.charAt.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.String.lcFirst.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.String.ucFirst.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.String.trimByteLength.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.storage.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.template.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.template.mustache.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.base.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.html.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.inspect.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.Title.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.toc.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.track.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.Uri.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.user.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.util.test.js',
|
||||
'tests/qunit/resources/mediawiki.api/mediawiki.api.test.js',
|
||||
'tests/qunit/resources/mediawiki.api/mediawiki.api.category.test.js',
|
||||
'tests/qunit/resources/mediawiki.api/mediawiki.api.edit.test.js',
|
||||
'tests/qunit/resources/mediawiki.api/mediawiki.api.messages.test.js',
|
||||
'tests/qunit/resources/mediawiki.api/mediawiki.api.options.test.js',
|
||||
'tests/qunit/resources/mediawiki.api/mediawiki.api.parse.test.js',
|
||||
'tests/qunit/resources/mediawiki.api/mediawiki.api.upload.test.js',
|
||||
'tests/qunit/resources/mediawiki.api/mediawiki.api.watch.test.js',
|
||||
'tests/qunit/resources/mediawiki.api/mediawiki.rest.test.js',
|
||||
'tests/qunit/resources/mediawiki.ForeignApi/mediawiki.ForeignApi.test.js',
|
||||
'tests/qunit/resources/mediawiki.ForeignApi/mediawiki.ForeignRest.test.js',
|
||||
'tests/qunit/resources/mediawiki.rcfilters/dm.FiltersViewModel.test.js',
|
||||
'tests/qunit/resources/mediawiki.rcfilters/dm.FilterItem.test.js',
|
||||
'tests/qunit/resources/mediawiki.rcfilters/dm.SavedQueryItemModel.test.js',
|
||||
'tests/qunit/resources/mediawiki.rcfilters/dm.SavedQueriesModel.test.js',
|
||||
'tests/qunit/resources/mediawiki.rcfilters/UriProcessor.test.js',
|
||||
'tests/qunit/resources/mediawiki.widgets/MediaSearch/mediawiki.widgets.APIResultsQueue.test.js',
|
||||
'tests/qunit/resources/mediawiki.widgets/Table/mediawiki.widgets.TableWidget.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.language.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.cldr.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.cookie.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.deflate.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.experiments.test.js',
|
||||
'tests/qunit/resources/mediawiki/mediawiki.visibleTimeout.test.js',
|
||||
],
|
||||
'dependencies' => [
|
||||
'jquery.color',
|
||||
|
|
|
|||
Loading…
Reference in a new issue