Skip to content

Commit 5c90401

Browse files
committed
Add test for duplicate spec names
1 parent f12781f commit 5c90401

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

tests/AutoReview/SpecificationConformanceTest.php

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -388,6 +388,7 @@ private static function loadSourceClasses(): void
388388
),
389389
);
390390
$sourceClasses = [];
391+
$classesWithDuplicateSpecNames = [];
391392

392393
/** @var \SplFileInfo $file */
393394
foreach ($iterator as $file) {
@@ -410,7 +411,26 @@ private static function loadSourceClasses(): void
410411
$basename = str_replace('JsonRpc', 'JSONRPC', $basename);
411412
}
412413

413-
$sourceClasses[$basename] = $sourceClass;
414+
if (! \array_key_exists($basename, $sourceClasses)) {
415+
$sourceClasses[$basename] = $sourceClass;
416+
} else {
417+
$classesWithDuplicateSpecNames[$basename] = $sourceClass;
418+
}
419+
}
420+
421+
if ([] !== $classesWithDuplicateSpecNames) {
422+
self::fail(\sprintf(
423+
"The following classes have duplicate spec names:\n%s",
424+
implode("\n", array_map(
425+
static fn(string $class, string $sourceClass): string => \sprintf(
426+
'* %s (%s)',
427+
$class,
428+
addslashes($sourceClass),
429+
),
430+
array_keys($classesWithDuplicateSpecNames),
431+
$classesWithDuplicateSpecNames,
432+
)),
433+
));
414434
}
415435

416436
ksort($sourceClasses);

0 commit comments

Comments
 (0)