@@ -441,13 +441,13 @@ fileprivate extension Array<AnnotatedTestItem> {
441
441
// as the root item.
442
442
if rootItem. isExtension && !item. isExtension {
443
443
var newItem = item
444
- newItem. testItem. children = ( newItem. testItem. children + rootItem. testItem. children) . deduplicateIds ( )
444
+ newItem. testItem. children = ( newItem. testItem. children + rootItem. testItem. children) . deduplicatingIds ( )
445
445
rootItem = newItem
446
446
} else if rootItem. testItem. children. isEmpty && item. testItem. children. isEmpty {
447
447
itemDict [ item. testItem. ambiguousTestDifferentiator] = item
448
448
continue
449
449
} else {
450
- rootItem. testItem. children = ( rootItem. testItem. children + item. testItem. children) . deduplicateIds ( )
450
+ rootItem. testItem. children = ( rootItem. testItem. children + item. testItem. children) . deduplicatingIds ( )
451
451
}
452
452
453
453
itemDict [ id] = rootItem
@@ -487,7 +487,7 @@ fileprivate extension Array<AnnotatedTestItem> {
487
487
. mergingTestsInExtensions ( )
488
488
return newItem
489
489
}
490
- return result. deduplicateIds ( )
490
+ return result. deduplicatingIds ( )
491
491
}
492
492
493
493
func prefixTestsWithModuleName( workspace: Workspace ) async -> Self {
@@ -518,16 +518,25 @@ fileprivate extension Array<TestItem> {
518
518
///
519
519
/// If we encounter one of these cases, we need to deduplicate the ID
520
520
/// by appending `/filename:filename:lineNumber`.
521
- func deduplicateIds ( ) -> [ TestItem ] {
521
+ func deduplicatingIds ( ) -> [ TestItem ] {
522
522
var idCounts : [ String : Int ] = [ : ]
523
523
var result : [ TestItem ] = [ ]
524
+ var hasDuplicates = false
525
+ result. reserveCapacity ( self . count)
524
526
525
527
for element in self where element. children. isEmpty {
526
528
idCounts [ element. id, default: 0 ] += 1
529
+ if idCounts [ element. id, default: 0 ] > 1 {
530
+ hasDuplicates = true
531
+ }
532
+ }
533
+
534
+ if !hasDuplicates {
535
+ return self
527
536
}
528
537
529
538
for element in self {
530
- if idCounts [ element. id] ?? 0 > 1 {
539
+ if idCounts [ element. id, default : 0 ] > 1 {
531
540
var newItem = element
532
541
newItem. id = newItem. ambiguousTestDifferentiator
533
542
result. append ( newItem)
0 commit comments