@@ -78,6 +78,7 @@ pub enum ProjectWorkspaceKind {
7878rustc : Result < Box < ( CargoWorkspace , WorkspaceBuildScripts ) > , Option < String > > ,
7979/// Environment variables set in the `.cargo/config` file.
8080cargo_config_extra_env : FxHashMap < String , String > ,
81+ set_test : bool ,
8182} ,
8283/// Project workspace was specified using a `rust-project.json` file.
8384Json ( ProjectJson ) ,
@@ -98,6 +99,7 @@ pub enum ProjectWorkspaceKind {
9899cargo : Option < ( CargoWorkspace , WorkspaceBuildScripts , Option < Arc < anyhow:: Error > > ) > ,
99100/// Environment variables set in the `.cargo/config` file.
100101cargo_config_extra_env : FxHashMap < String , String > ,
102+ set_test : bool ,
101103} ,
102104}
103105
@@ -112,6 +114,7 @@ impl fmt::Debug for ProjectWorkspace {
112114 build_scripts,
113115 rustc,
114116 cargo_config_extra_env,
117+ set_test,
115118} => f
116119. debug_struct ( "Cargo" )
117120. field ( "root" , & cargo. workspace_root ( ) . file_name ( ) )
@@ -126,6 +129,7 @@ impl fmt::Debug for ProjectWorkspace {
126129. field ( "toolchain" , & toolchain)
127130. field ( "data_layout" , & target_layout)
128131. field ( "cargo_config_extra_env" , & cargo_config_extra_env)
132+ . field ( "set_test" , set_test)
129133. field ( "build_scripts" , & build_scripts. error ( ) . unwrap_or ( "ok" ) )
130134. finish ( ) ,
131135ProjectWorkspaceKind :: Json ( project) => {
@@ -137,12 +141,14 @@ impl fmt::Debug for ProjectWorkspace {
137141. field ( "toolchain" , & toolchain)
138142. field ( "data_layout" , & target_layout)
139143. field ( "n_cfg_overrides" , & cfg_overrides. len ( ) ) ;
144+
140145 debug_struct. finish ( )
141146}
142147ProjectWorkspaceKind :: DetachedFile {
143148 file,
144149cargo : cargo_script,
145150 cargo_config_extra_env,
151+ set_test,
146152} => f
147153. debug_struct ( "DetachedFiles" )
148154. field ( "file" , & file)
@@ -154,6 +160,7 @@ impl fmt::Debug for ProjectWorkspace {
154160. field ( "data_layout" , & target_layout)
155161. field ( "n_cfg_overrides" , & cfg_overrides. len ( ) )
156162. field ( "cargo_config_extra_env" , & cargo_config_extra_env)
163+ . field ( "set_test" , set_test)
157164. finish ( ) ,
158165}
159166}
@@ -329,6 +336,7 @@ impl ProjectWorkspace {
329336 rustc,
330337 cargo_config_extra_env,
331338error : error. map ( Arc :: new) ,
339+ set_test : config. set_test ,
332340} ,
333341 sysroot,
334342 rustc_cfg,
@@ -423,6 +431,7 @@ impl ProjectWorkspace {
423431file : detached_file. to_owned ( ) ,
424432cargo : cargo_script,
425433 cargo_config_extra_env,
434+ set_test : config. set_test ,
426435} ,
427436 sysroot,
428437 rustc_cfg,
@@ -609,6 +618,7 @@ impl ProjectWorkspace {
609618 build_scripts,
610619cargo_config_extra_env : _,
611620error : _,
621+ set_test : _,
612622} => {
613623 cargo
614624. packages ( )
@@ -750,6 +760,7 @@ impl ProjectWorkspace {
750760 build_scripts,
751761cargo_config_extra_env : _,
752762error : _,
763+ set_test,
753764} => (
754765cargo_to_crate_graph (
755766 load,
@@ -759,10 +770,11 @@ impl ProjectWorkspace {
759770 rustc_cfg. clone ( ) ,
760771 cfg_overrides,
761772 build_scripts,
773+ * set_test,
762774) ,
763775 sysroot,
764776) ,
765- ProjectWorkspaceKind :: DetachedFile { file, cargo : cargo_script, .. } => (
777+ ProjectWorkspaceKind :: DetachedFile { file, cargo : cargo_script, set_test , .. } => (
766778if let Some ( ( cargo, build_scripts, _) ) = cargo_script {
767779cargo_to_crate_graph (
768780& mut |path| load ( path) ,
@@ -772,6 +784,7 @@ impl ProjectWorkspace {
772784 rustc_cfg. clone ( ) ,
773785 cfg_overrides,
774786 build_scripts,
787+ * set_test,
775788)
776789} else {
777790detached_file_to_crate_graph (
@@ -780,6 +793,7 @@ impl ProjectWorkspace {
780793 file,
781794 sysroot,
782795 cfg_overrides,
796+ * set_test,
783797)
784798} ,
785799 sysroot,
@@ -813,13 +827,15 @@ impl ProjectWorkspace {
813827 cargo_config_extra_env,
814828build_scripts : _,
815829error : _,
830+ set_test : _,
816831} ,
817832ProjectWorkspaceKind :: Cargo {
818833cargo : o_cargo,
819834rustc : o_rustc,
820835cargo_config_extra_env : o_cargo_config_extra_env,
821836build_scripts : _,
822837error : _,
838+ set_test : _,
823839} ,
824840) => {
825841 cargo == o_cargo
@@ -834,11 +850,13 @@ impl ProjectWorkspace {
834850 file,
835851cargo : Some ( ( cargo_script, _, _) ) ,
836852 cargo_config_extra_env,
853+ set_test : _,
837854} ,
838855ProjectWorkspaceKind :: DetachedFile {
839856file : o_file,
840857cargo : Some ( ( o_cargo_script, _, _) ) ,
841858cargo_config_extra_env : o_cargo_config_extra_env,
859+ set_test : _,
842860} ,
843861) => {
844862 file == o_file
@@ -987,6 +1005,7 @@ fn cargo_to_crate_graph(
9871005rustc_cfg : Vec < CfgAtom > ,
9881006override_cfg : & CfgOverrides ,
9891007build_scripts : & WorkspaceBuildScripts ,
1008+ set_test : bool ,
9901009) -> ( CrateGraph , ProcMacroPaths ) {
9911010let _p = tracing:: info_span!( "cargo_to_crate_graph" ) . entered ( ) ;
9921011let mut res = ( CrateGraph :: default ( ) , ProcMacroPaths :: default ( ) ) ;
@@ -1011,8 +1030,10 @@ fn cargo_to_crate_graph(
10111030let mut cfg_options = cfg_options. clone ( ) ;
10121031
10131032if cargo[ pkg] . is_local {
1014- // Add test cfg for local crates
1015- cfg_options. insert_atom ( sym:: test. clone ( ) ) ;
1033+ if set_test {
1034+ // Add test cfg for local crates
1035+ cfg_options. insert_atom ( sym:: test. clone ( ) ) ;
1036+ }
10161037 cfg_options. insert_atom ( sym:: rust_analyzer. clone ( ) ) ;
10171038}
10181039
@@ -1173,14 +1194,17 @@ fn detached_file_to_crate_graph(
11731194detached_file : & ManifestPath ,
11741195sysroot : & Sysroot ,
11751196override_cfg : & CfgOverrides ,
1197+ set_test : bool ,
11761198) -> ( CrateGraph , ProcMacroPaths ) {
11771199let _p = tracing:: info_span!( "detached_file_to_crate_graph" ) . entered ( ) ;
11781200let mut crate_graph = CrateGraph :: default ( ) ;
11791201let ( public_deps, _libproc_macro) =
11801202sysroot_to_crate_graph ( & mut crate_graph, sysroot, rustc_cfg. clone ( ) , load) ;
11811203
11821204let mut cfg_options = CfgOptions :: from_iter ( rustc_cfg) ;
1183- cfg_options. insert_atom ( sym:: test. clone ( ) ) ;
1205+ if set_test {
1206+ cfg_options. insert_atom ( sym:: test. clone ( ) ) ;
1207+ }
11841208 cfg_options. insert_atom ( sym:: rust_analyzer. clone ( ) ) ;
11851209 override_cfg. apply ( & mut cfg_options, "" ) ;
11861210let cfg_options = Arc :: new ( cfg_options) ;
@@ -1426,6 +1450,7 @@ fn sysroot_to_crate_graph(
14261450 ..Default :: default ( )
14271451} ,
14281452& WorkspaceBuildScripts :: default ( ) ,
1453+ false ,
14291454) ;
14301455
14311456let mut pub_deps = vec ! [ ] ;
0 commit comments