@@ -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