Implement rust-analyzer feature configuration to tests.

This commit is contained in:
daxpedda 2020-07-02 16:13:24 +02:00
parent 57ed622ec4
commit eb75a644a1
No known key found for this signature in database
GPG key ID: 43D62A3EA388E46F
2 changed files with 17 additions and 8 deletions

View file

@ -21,6 +21,7 @@ pub(crate) struct CargoTargetSpec {
impl CargoTargetSpec {
pub(crate) fn runnable_args(
snap: &GlobalStateSnapshot,
spec: Option<CargoTargetSpec>,
kind: &RunnableKind,
cfgs: &[CfgExpr],
@ -78,13 +79,21 @@ impl CargoTargetSpec {
}
}
let mut features = Vec::new();
for cfg in cfgs {
required_features(cfg, &mut features);
}
for feature in features {
args.push("--features".to_string());
args.push(feature);
if snap.config.cargo.all_features {
args.push("--all-features".to_string());
} else {
let mut features = Vec::new();
for cfg in cfgs {
required_features(cfg, &mut features);
}
for feature in &snap.config.cargo.features {
features.push(feature.clone());
}
features.dedup();
for feature in features {
args.push("--features".to_string());
args.push(feature);
}
}
Ok((args, extra_args))

View file

@ -666,7 +666,7 @@ pub(crate) fn runnable(
let workspace_root = spec.as_ref().map(|it| it.workspace_root.clone());
let target = spec.as_ref().map(|s| s.target.clone());
let (cargo_args, executable_args) =
CargoTargetSpec::runnable_args(spec, &runnable.kind, &runnable.cfg_exprs)?;
CargoTargetSpec::runnable_args(snap, spec, &runnable.kind, &runnable.cfg_exprs)?;
let label = runnable.label(target);
let location = location_link(snap, None, runnable.nav)?;