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