You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Feature Requst: Add regex support to test filters #53278
I'd like to filter my tests based on a more complex pattern than just substring.
The current behavior of rust tests is that when a pattern is specified, then only tests that contain that pattern as a substring are run.
cargo test -- foo will run only tests that contain the substring foo.
I propose to amend this to allow for a regex syntax.
cargo test -- /regex/ which will run tests that match the regex regex.
This is "technically" a breaking change because it's possible that people are already using filters with slashes in them, but since test names can't contain slashes these invocations would always be running 0 tests.
Misc
Let me know if this should be an RFC. The feature seems pretty small, but I'd understand if it should be more speced out.
I'd be happy to implement this if people are interested.
I came to this issue while trying to run only one test in a test suite with several tests sharing the same base name. Coming from Go I wanted to run a test with foo$ for instance.
However reading this comment on Cargo, I discovered the --exact option that perfectly suite my needs.
While I believe this feature request would be a plus, I recognize that the substring feature is enough for me so far.
This looks like useful functionality, and I would like to take a stab at trying to implement it. Using a --regex flag seems like a good idea.
@kennytm You said that making libtest depend on regex might be an issue. Do you have any idea on who to ping to find out if this is a big issue or not? The dev guide just has a TODO there, and while the regex crate is approved I'd like to get some clarification on that.
This is currently blocked on rust-lang/regex#476, due to the fact that regex requires std which isn't available when building libtest. See also the following zulipchat conversation.
However, adding a new dependency to the standard library is still a big deal. regex is approved for use in the compiler but that does not mean it can be used in the standard library. I am not sure what the process for that looks like.
Activity
ririsoft commentedon Oct 11, 2019
Hello,
I came to this issue while trying to run only one test in a test suite with several tests sharing the same base name. Coming from Go I wanted to run a test with
foo$for instance.However reading this comment on Cargo, I discovered the
--exactoption that perfectly suite my needs.While I believe this feature request would be a plus, I recognize that the substring feature is enough for me so far.
kennytm commentedon Sep 24, 2020
We could make it truly backward-compatible by introducing a
--regexflag like the existing--exactflag (#38181)One potential issue is that this makes
libtestdepends onregex.chore(ci): Add transforms-metric_to_log transform dependency to sink-…
chore(ci): Add transforms-metric_to_log transform dependency to sink-…
chore(ci): Add transforms-metric_to_log transform dependency to sink-…
Jasonoro commentedon Nov 25, 2020
This looks like useful functionality, and I would like to take a stab at trying to implement it. Using a
--regexflag seems like a good idea.@kennytm You said that making
libtestdepend onregexmight be an issue. Do you have any idea on who to ping to find out if this is a big issue or not? The dev guide just has aTODOthere, and while theregexcrate is approved I'd like to get some clarification on that.@rustbot claim
chore(ci): Add transforms-metric_to_log transform dependency to sink-…
Jasonoro commentedon Feb 7, 2021
This is currently blocked on rust-lang/regex#476, due to the fact that
regexrequiresstdwhich isn't available when buildinglibtest. See also the following zulipchat conversation.Jasonoro commentedon Feb 15, 2021
Some more discussion has been started in this conversation. I'll update the issue when a conclusion has been reached.
RalfJung commentedon Aug 11, 2022
/filter/seems nice because it lets one mix regex and non-regex filters.libtest itself depends on std, so it should be okay for its dependencies to depend on std.
RalfJung commentedon Aug 11, 2022
I think all that needs to happen on the regex side is that it needs to depend on
rustc-std-workspace-std; see https://github.com/rust-lang/rust/tree/master/library/rustc-std-workspace-core for how to use that dependency.This should probably be enabled by a
rustc-dep-of-stdfeature similar to libc.RalfJung commentedon Aug 11, 2022
However, adding a new dependency to the standard library is still a big deal. regex is approved for use in the compiler but that does not mean it can be used in the standard library. I am not sure what the process for that looks like.
futurist commentedon Nov 22, 2024
+1, any update for this feature?