From 821fbb27c4918a1c65d15e0323c95a3d8f6fdd53 Mon Sep 17 00:00:00 2001 From: Antoine Musso Date: Tue, 19 Jun 2018 09:50:12 +0200 Subject: [PATCH] test: Assert that API generators have unique prefixes Signed-off-by: Brad Jorsch Change-Id: I30758f2ac95fd8ae361ef8079abdfb0a82d92e34 --- .../structure/ApiPrefixUniquenessTest.php | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/tests/phpunit/structure/ApiPrefixUniquenessTest.php b/tests/phpunit/structure/ApiPrefixUniquenessTest.php index 0920a64a5d..4f95fbbb3e 100644 --- a/tests/phpunit/structure/ApiPrefixUniquenessTest.php +++ b/tests/phpunit/structure/ApiPrefixUniquenessTest.php @@ -21,10 +21,28 @@ class ApiPrefixUniquenessTest extends MediaWikiTestCase { $class = get_class( $module ); $prefix = $module->getModulePrefix(); - if ( $prefix !== '' && isset( $prefixes[$prefix] ) /* HACK: T196962 */ && $prefix !== 'wbeu' ) { - $this->fail( "Module prefix '{$prefix}' is shared between {$class} and {$prefixes[$prefix]}" ); + if ( $prefix === '' /* HACK: T196962 */ || $prefix === 'wbeu' ) { + continue; + } + + if ( isset( $prefixes[$prefix] ) ) { + $this->fail( + "Module prefix '{$prefix}' is shared between {$class} and {$prefixes[$prefix]}" + ); } $prefixes[$module->getModulePrefix()] = $class; + + if ( $module instanceof ApiQueryGeneratorBase ) { + // namespace with 'g', a generator can share a prefix with a module + $prefix = 'g' . $prefix; + if ( isset( $prefixes[$prefix] ) ) { + $this->fail( + "Module prefix '{$prefix}' is shared between {$class} and {$prefixes[$prefix]}" . + " (as a generator)" + ); + } + $prefixes[$module->getModulePrefix()] = $class; + } } $this->assertTrue( true ); // dummy call to make this test non-incomplete } -- 2.20.1