Skip to content

Commit 923cb99

Browse files
Provide an config option to not set cfg(test)
1 parent 46fe025 commit 923cb99

File tree

16 files changed

+73
-15
lines changed

16 files changed

+73
-15
lines changed

src/tools/rust-analyzer/crates/load-cargo/src/lib.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ pub struct LoadCargoConfig {
3030
pub load_out_dirs_from_check: bool,
3131
pub with_proc_macro_server: ProcMacroServerChoice,
3232
pub prefill_caches: bool,
33+
pub set_test: bool,
3334
}
3435

3536
#[derive(Debug, Clone, PartialEq, Eq)]
@@ -99,6 +100,7 @@ pub fn load_workspace(
99100
vfs.file_id(&path)
100101
},
101102
extra_env,
103+
load_config.set_test,
102104
);
103105
let proc_macros = {
104106
let proc_macro_server = match &proc_macro_server {
@@ -531,6 +533,7 @@ mod tests {
531533
load_out_dirs_from_check: false,
532534
with_proc_macro_server: ProcMacroServerChoice::None,
533535
prefill_caches: false,
536+
set_test: true,
534537
};
535538
let (db, _vfs, _proc_macro) =
536539
load_workspace_at(path, &cargo_config, &load_cargo_config, &|_| {}).unwrap();

src/tools/rust-analyzer/crates/project-model/src/tests.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ fn to_crate_graph(project_workspace: ProjectWorkspace) -> (CrateGraph, ProcMacro
136136
}
137137
},
138138
&Default::default(),
139+
true,
139140
)
140141
}
141142

@@ -257,5 +258,6 @@ fn smoke_test_real_sysroot_cargo() {
257258
}
258259
},
259260
&Default::default(),
261+
true,
260262
);
261263
}

src/tools/rust-analyzer/crates/project-model/src/workspace.rs

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -728,6 +728,7 @@ impl ProjectWorkspace {
728728
&self,
729729
load: FileLoader<'_>,
730730
extra_env: &FxHashMap<String, String>,
731+
set_test: bool,
731732
) -> (CrateGraph, ProcMacroPaths) {
732733
let _p = tracing::info_span!("ProjectWorkspace::to_crate_graph").entered();
733734

@@ -741,6 +742,7 @@ impl ProjectWorkspace {
741742
sysroot,
742743
extra_env,
743744
cfg_overrides,
745+
set_test,
744746
),
745747
sysroot,
746748
),
@@ -759,6 +761,7 @@ impl ProjectWorkspace {
759761
rustc_cfg.clone(),
760762
cfg_overrides,
761763
build_scripts,
764+
set_test,
762765
),
763766
sysroot,
764767
),
@@ -772,6 +775,7 @@ impl ProjectWorkspace {
772775
rustc_cfg.clone(),
773776
cfg_overrides,
774777
build_scripts,
778+
set_test,
775779
)
776780
} else {
777781
detached_file_to_crate_graph(
@@ -780,6 +784,7 @@ impl ProjectWorkspace {
780784
file,
781785
sysroot,
782786
cfg_overrides,
787+
set_test,
783788
)
784789
},
785790
sysroot,
@@ -870,11 +875,12 @@ fn project_json_to_crate_graph(
870875
sysroot: &Sysroot,
871876
extra_env: &FxHashMap<String, String>,
872877
override_cfg: &CfgOverrides,
878+
set_test: bool,
873879
) -> (CrateGraph, ProcMacroPaths) {
874880
let mut res = (CrateGraph::default(), ProcMacroPaths::default());
875881
let (crate_graph, proc_macros) = &mut res;
876882
let (public_deps, libproc_macro) =
877-
sysroot_to_crate_graph(crate_graph, sysroot, rustc_cfg.clone(), load);
883+
sysroot_to_crate_graph(crate_graph, sysroot, rustc_cfg.clone(), load, set_test);
878884

879885
let r_a_cfg_flag = CfgAtom::Flag(sym::rust_analyzer.clone());
880886
let mut cfg_cache: FxHashMap<&str, Vec<CfgAtom>> = FxHashMap::default();
@@ -987,13 +993,14 @@ fn cargo_to_crate_graph(
987993
rustc_cfg: Vec<CfgAtom>,
988994
override_cfg: &CfgOverrides,
989995
build_scripts: &WorkspaceBuildScripts,
996+
set_test: bool,
990997
) -> (CrateGraph, ProcMacroPaths) {
991998
let _p = tracing::info_span!("cargo_to_crate_graph").entered();
992999
let mut res = (CrateGraph::default(), ProcMacroPaths::default());
9931000
let crate_graph = &mut res.0;
9941001
let proc_macros = &mut res.1;
9951002
let (public_deps, libproc_macro) =
996-
sysroot_to_crate_graph(crate_graph, sysroot, rustc_cfg.clone(), load);
1003+
sysroot_to_crate_graph(crate_graph, sysroot, rustc_cfg.clone(), load, set_test);
9971004

9981005
let cfg_options = CfgOptions::from_iter(rustc_cfg);
9991006

@@ -1011,8 +1018,10 @@ fn cargo_to_crate_graph(
10111018
let mut cfg_options = cfg_options.clone();
10121019

10131020
if cargo[pkg].is_local {
1014-
// Add test cfg for local crates
1015-
cfg_options.insert_atom(sym::test.clone());
1021+
if set_test {
1022+
// Add test cfg for local crates
1023+
cfg_options.insert_atom(sym::test.clone());
1024+
}
10161025
cfg_options.insert_atom(sym::rust_analyzer.clone());
10171026
}
10181027

@@ -1173,14 +1182,17 @@ fn detached_file_to_crate_graph(
11731182
detached_file: &ManifestPath,
11741183
sysroot: &Sysroot,
11751184
override_cfg: &CfgOverrides,
1185+
set_test: bool,
11761186
) -> (CrateGraph, ProcMacroPaths) {
11771187
let _p = tracing::info_span!("detached_file_to_crate_graph").entered();
11781188
let mut crate_graph = CrateGraph::default();
11791189
let (public_deps, _libproc_macro) =
1180-
sysroot_to_crate_graph(&mut crate_graph, sysroot, rustc_cfg.clone(), load);
1190+
sysroot_to_crate_graph(&mut crate_graph, sysroot, rustc_cfg.clone(), load, set_test);
11811191

11821192
let mut cfg_options = CfgOptions::from_iter(rustc_cfg);
1183-
cfg_options.insert_atom(sym::test.clone());
1193+
if set_test {
1194+
cfg_options.insert_atom(sym::test.clone());
1195+
}
11841196
cfg_options.insert_atom(sym::rust_analyzer.clone());
11851197
override_cfg.apply(&mut cfg_options, "");
11861198
let cfg_options = Arc::new(cfg_options);
@@ -1404,6 +1416,7 @@ fn sysroot_to_crate_graph(
14041416
sysroot: &Sysroot,
14051417
rustc_cfg: Vec<CfgAtom>,
14061418
load: FileLoader<'_>,
1419+
set_test: bool,
14071420
) -> (SysrootPublicDeps, Option<CrateId>) {
14081421
let _p = tracing::info_span!("sysroot_to_crate_graph").entered();
14091422
match sysroot.mode() {
@@ -1426,6 +1439,7 @@ fn sysroot_to_crate_graph(
14261439
..Default::default()
14271440
},
14281441
&WorkspaceBuildScripts::default(),
1442+
set_test,
14291443
);
14301444

14311445
let mut pub_deps = vec![];

src/tools/rust-analyzer/crates/rust-analyzer/src/cli/analysis_stats.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ impl flags::AnalysisStats {
8484
ProcMacroServerChoice::Sysroot
8585
},
8686
prefill_caches: false,
87+
set_test: true,
8788
};
8889

8990
let build_scripts_time = if self.disable_build_scripts {

src/tools/rust-analyzer/crates/rust-analyzer/src/cli/diagnostics.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ impl flags::Diagnostics {
3939
load_out_dirs_from_check: !self.disable_build_scripts,
4040
with_proc_macro_server,
4141
prefill_caches: false,
42+
// We don't pass `--all-targets` so we also set `cfg(test)` to false.
43+
set_test: false,
4244
};
4345
let (db, _vfs, _proc_macro) =
4446
load_workspace_at(&self.path, &cargo_config, &load_cargo_config, &|_| {})?;

src/tools/rust-analyzer/crates/rust-analyzer/src/cli/lsif.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,7 @@ impl flags::Lsif {
284284
load_out_dirs_from_check: true,
285285
with_proc_macro_server: ProcMacroServerChoice::Sysroot,
286286
prefill_caches: false,
287+
set_test: true,
287288
};
288289
let path = AbsPathBuf::assert_utf8(env::current_dir()?.join(self.path));
289290
let root = ProjectManifest::discover_single(&path)?;

src/tools/rust-analyzer/crates/rust-analyzer/src/cli/run_tests.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ impl flags::RunTests {
2222
load_out_dirs_from_check: true,
2323
with_proc_macro_server: ProcMacroServerChoice::Sysroot,
2424
prefill_caches: false,
25+
set_test: true,
2526
};
2627
let (ref db, _vfs, _proc_macro) =
2728
load_workspace_at(&self.path, &cargo_config, &load_cargo_config, &|_| {})?;

src/tools/rust-analyzer/crates/rust-analyzer/src/cli/rustc_tests.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ impl Tester {
9696
load_out_dirs_from_check: false,
9797
with_proc_macro_server: ProcMacroServerChoice::Sysroot,
9898
prefill_caches: false,
99+
set_test: true,
99100
};
100101
let (db, _vfs, _proc_macro) =
101102
load_workspace(workspace, &cargo_config.extra_env, &load_cargo_config)?;

src/tools/rust-analyzer/crates/rust-analyzer/src/cli/scip.rs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,6 @@ impl flags::Scip {
2424
let now = Instant::now();
2525

2626
let no_progress = &|s| (eprintln!("rust-analyzer: Loading {s}"));
27-
let load_cargo_config = LoadCargoConfig {
28-
load_out_dirs_from_check: true,
29-
with_proc_macro_server: ProcMacroServerChoice::Sysroot,
30-
prefill_caches: true,
31-
};
3227
let root =
3328
vfs::AbsPathBuf::assert_utf8(std::env::current_dir()?.join(&self.path)).normalize();
3429

@@ -51,6 +46,12 @@ impl flags::Scip {
5146
// FIXME @alibektas : What happens to errors without logging?
5247
error!(?error_sink, "Config Error(s)");
5348
}
49+
let load_cargo_config = LoadCargoConfig {
50+
load_out_dirs_from_check: true,
51+
with_proc_macro_server: ProcMacroServerChoice::Sysroot,
52+
prefill_caches: true,
53+
set_test: config.cfg_set_test(None),
54+
};
5455
let cargo_config = config.cargo(None);
5556
let (db, vfs, _) = load_workspace_at(
5657
root.as_path().as_ref(),

src/tools/rust-analyzer/crates/rust-analyzer/src/cli/ssr.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ impl flags::Ssr {
1919
load_out_dirs_from_check: true,
2020
with_proc_macro_server: ProcMacroServerChoice::Sysroot,
2121
prefill_caches: false,
22+
set_test: true,
2223
};
2324
let (ref db, vfs, _proc_macro) = load_workspace_at(
2425
&std::env::current_dir()?,
@@ -50,11 +51,12 @@ impl flags::Search {
5051
pub fn run(self) -> anyhow::Result<()> {
5152
use ide_db::base_db::SourceRootDatabase;
5253
use ide_db::symbol_index::SymbolsDatabase;
53-
let cargo_config = CargoConfig::default();
54+
let cargo_config = CargoConfig { all_targets: true, ..CargoConfig::default() };
5455
let load_cargo_config = LoadCargoConfig {
5556
load_out_dirs_from_check: true,
5657
with_proc_macro_server: ProcMacroServerChoice::Sysroot,
5758
prefill_caches: false,
59+
set_test: true,
5860
};
5961
let (ref db, _vfs, _proc_macro) = load_workspace_at(
6062
&std::env::current_dir()?,

0 commit comments

Comments
 (0)