Skip to content

libtest filters should include the test crate's name in the string matched against the filter #141862

Open
@RalfJung

Description

@RalfJung

Let's say I have a whole bunch of .rs files in my tests folder, like:

  • floats/lib.rs
  • time.rs
  • thread.rs
  • ...

Now I want to run just the float tests. Naturally I'll do something like cargo test -- float. Sadly that does not work since this runs the tests that have float as a substring in the name of the test (mod1::mod2::test_fn), but the name of the crate is not included.

This is particularly confusing in the rustc repo itself, where ./x test library/{core,std} -- float will run the float tests in libcore but not the one in libstd: libcore has a single large test crate with a module called floats, while std has a bunch of separate test crates, one of which is called floats.

I think libtest should be changed to put the crate name in the string used for filtering, thus avoiding this confusing and surprising behavior.

@rust-lang/libs-api I've been told the libtest CLI API is in your purview. Is there any chance the behavior of filters could be adjusted? This would lead to strictly more tests being included in any given filter, which at least won't silently reduce test coverage (except when combined with --skip) -- but it could theoretically break a setup where that then includes a test that does not actually work.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-libtestArea: `#[test]` / the `test` libraryC-discussionCategory: Discussion or questions that doesn't represent real issues.T-libs-apiRelevant to the library API team, which will review and decide on the PR/issue.T-testing-devexRelevant to the testing devex team (testing DX), which will review and decide on the PR/issue.

    Type

    No type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions