Skip to content

Commit 4071138

Browse files
committed
Add some logic to configurationForEntryPoint(from:) to filter by tags using a special tag: prefix
1 parent b986343 commit 4071138

1 file changed

Lines changed: 33 additions & 2 deletions

File tree

Sources/Testing/ABI/EntryPoints/EntryPoint.swift

Lines changed: 33 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -634,8 +634,39 @@ public func configurationForEntryPoint(from args: __CommandLineArguments_v0) thr
634634
}
635635
return try Configuration.TestFilter(membership: membership, matchingAnyOf: regexes)
636636
}
637-
filters.append(try testFilter(forRegularExpressions: args.filter, label: "--filter", membership: .including))
638-
filters.append(try testFilter(forRegularExpressions: args.skip, label: "--skip", membership: .excluding))
637+
638+
// Extract any filters or skips without the `tag:` prefix; those will be treated as normal regexes.
639+
let tagPrefix = "tag:"
640+
let escapedTagPrefix = "tag\\:"
641+
var nonTagFilterRegexes: [String] = []
642+
var nonTagSkipRegexes: [String] = []
643+
644+
for var filter in args.filter ?? [] {
645+
if filter.hasPrefix(tagPrefix) {
646+
filters.append(Configuration.TestFilter(includingAnyOf: [Tag(userProvidedStringValue: String(filter.dropFirst(4)))]))
647+
} else {
648+
// If we run into the escaped tag prefix, we need to to remove the escape character before adding it as a regex filter
649+
if filter.hasPrefix(escapedTagPrefix) {
650+
filter.replaceSubrange(escapedTagPrefix.startIndex..<escapedTagPrefix.endIndex, with: tagPrefix)
651+
}
652+
nonTagFilterRegexes.append(filter)
653+
}
654+
}
655+
656+
for var skip in args.skip ?? [] {
657+
if skip.hasPrefix(tagPrefix) {
658+
filters.append(Configuration.TestFilter(includingAnyOf: [Tag(userProvidedStringValue: String(skip.dropFirst(4)))]))
659+
} else {
660+
// If we run into the escaped tag prefix, we need to to remove the escape character before adding it as a regex filter
661+
if skip.hasPrefix(escapedTagPrefix) {
662+
skip.replaceSubrange(escapedTagPrefix.startIndex..<escapedTagPrefix.endIndex, with: tagPrefix)
663+
}
664+
nonTagSkipRegexes.append(skip)
665+
}
666+
}
667+
668+
filters.append(try testFilter(forRegularExpressions: nonTagFilterRegexes, label: "--filter", membership: .including))
669+
filters.append(try testFilter(forRegularExpressions: nonTagSkipRegexes, label: "--skip", membership: .excluding))
639670

640671
configuration.testFilter = filters.reduce(.unfiltered) { $0.combining(with: $1) }
641672
if args.includeHiddenTests == true {

0 commit comments

Comments
 (0)