Skip to content

cargo test --all don't honor --no-default-features for member project #7160

Open
@BusyJay

Description

@BusyJay

Project layout looks like

a/
  Cargo.toml
  b/
    Cargo.toml

a/Cargo.toml looks like

[package]
name = "a"
version = "0.1.0"
edition = "2018"

[features]
default = ["feature-a"]
feature-a = []
feature-b = []

[workspace]
members = ["b"]

b/Cargo.toml looks like

[package]
name = "b"
version = "0.1.0"
edition = "2018"


[features]
default = ["feature-a"]
feature-a = ["a/feature-a"]
feature-b = ["a/feature-b"]

[dependencies]
a = { path = "..", default-features = false }

And cargo test --all will not honor the --no-default-features flag.

 % cargo test --all --no-default-features --features feature-b --verbose
   Compiling a v0.1.0 (/tmp/a)
     Running `rustc --edition=2018 --crate-name a src/lib.rs --color always --crate-type lib --emit=dep-info,metadata,link -C debuginfo=2 --cfg 'feature="feature-a"' --cfg 'feature="feature-b"' -C metadata=09792cb50711fca8 -C extra-filename=-09792cb50711fca8 --out-dir /tmp/a/target/debug/deps -C incremental=/tmp/a/target/debug/incremental -L dependency=/tmp/a/target/debug/deps`
     Running `rustc --edition=2018 --crate-name a src/lib.rs --color always --emit=dep-info,metadata,link -C debuginfo=2 --test --cfg 'feature="feature-a"' --cfg 'feature="feature-b"' -C metadata=7aec07bce955fd6c -C extra-filename=-7aec07bce955fd6c --out-dir /tmp/a/target/debug/deps -C incremental=/tmp/a/target/debug/incremental -L dependency=/tmp/a/target/debug/deps`
   Compiling b v0.1.0 (/tmp/a/b)
     Running `rustc --edition=2018 --crate-name b b/src/lib.rs --color always --crate-type lib --emit=dep-info,metadata,link -C debuginfo=2 --cfg 'feature="a"' --cfg 'feature="default"' --cfg 'feature="feature-a"' -C metadata=f8a1d0b2c22c9971 -C extra-filename=-f8a1d0b2c22c9971 --out-dir /tmp/a/target/debug/deps -C incremental=/tmp/a/target/debug/incremental -L dependency=/tmp/a/target/debug/deps --extern a=/tmp/a/target/debug/deps/liba-09792cb50711fca8.rlib`
     Running `rustc --edition=2018 --crate-name b b/src/lib.rs --color always --emit=dep-info,metadata,link -C debuginfo=2 --test --cfg 'feature="a"' --cfg 'feature="default"' --cfg 'feature="feature-a"' -C metadata=4af8985939a1dfde -C extra-filename=-4af8985939a1dfde --out-dir /tmp/a/target/debug/deps -C incremental=/tmp/a/target/debug/incremental -L dependency=/tmp/a/target/debug/deps --extern a=/tmp/a/target/debug/deps/liba-09792cb50711fca8.rlib`
     Running `rustc --edition=2018 --crate-name tests b/tests/tests.rs --color always --emit=dep-info,link -C debuginfo=2 --test --cfg 'feature="a"' --cfg 'feature="default"' --cfg 'feature="feature-a"' -C metadata=e05b77e250661b9b -C extra-filename=-e05b77e250661b9b --out-dir /tmp/a/target/debug/deps -C incremental=/tmp/a/target/debug/incremental -L dependency=/tmp/a/target/debug/deps --extern a=/tmp/a/target/debug/deps/liba-09792cb50711fca8.rlib --extern b=/tmp/a/target/debug/deps/libb-f8a1d0b2c22c9971.rlib`
    Finished dev [unoptimized + debuginfo] target(s) in 0.36s

b will be compiled with default features hence enable a's feature-a.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-featuresArea: features — conditional compilationC-bugCategory: bugS-triageStatus: This issue is waiting on initial triage.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions