summaryrefslogtreecommitdiff
path: root/www/wiki/tests/phpunit/includes/api/PrefixUniquenessTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/tests/phpunit/includes/api/PrefixUniquenessTest.php')
-rw-r--r--www/wiki/tests/phpunit/includes/api/PrefixUniquenessTest.php30
1 files changed, 30 insertions, 0 deletions
diff --git a/www/wiki/tests/phpunit/includes/api/PrefixUniquenessTest.php b/www/wiki/tests/phpunit/includes/api/PrefixUniquenessTest.php
new file mode 100644
index 00000000..d125a7d5
--- /dev/null
+++ b/www/wiki/tests/phpunit/includes/api/PrefixUniquenessTest.php
@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * Checks that all API query modules, core and extensions, have unique prefixes.
+ *
+ * @group API
+ */
+class PrefixUniquenessTest extends MediaWikiTestCase {
+
+ public function testPrefixes() {
+ $main = new ApiMain( new FauxRequest() );
+ $query = new ApiQuery( $main, 'foo', 'bar' );
+ $moduleManager = $query->getModuleManager();
+
+ $modules = $moduleManager->getNames();
+ $prefixes = [];
+
+ foreach ( $modules as $name ) {
+ $module = $moduleManager->getModule( $name );
+ $class = get_class( $module );
+
+ $prefix = $module->getModulePrefix();
+ if ( $prefix !== '' && isset( $prefixes[$prefix] ) ) {
+ $this->fail( "Module prefix '{$prefix}' is shared between {$class} and {$prefixes[$prefix]}" );
+ }
+ $prefixes[$module->getModulePrefix()] = $class;
+ }
+ $this->assertTrue( true ); // dummy call to make this test non-incomplete
+ }
+}