@@ -78,6 +78,7 @@ pub enum ProjectWorkspaceKind {
7878 rustc : Result < Box < ( CargoWorkspace , WorkspaceBuildScripts ) > , Option < String > > ,
7979 /// Environment variables set in the `.cargo/config` file.
8080 cargo_config_extra_env : FxHashMap < String , String > ,
81+ set_test : bool ,
8182 } ,
8283 /// Project workspace was specified using a `rust-project.json` file.
8384 Json ( ProjectJson ) ,
@@ -98,6 +99,7 @@ pub enum ProjectWorkspaceKind {
9899 cargo : Option < ( CargoWorkspace , WorkspaceBuildScripts , Option < Arc < anyhow:: Error > > ) > ,
99100 /// Environment variables set in the `.cargo/config` file.
100101 cargo_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 ( ) ,
131135 ProjectWorkspaceKind :: 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 }
142147 ProjectWorkspaceKind :: DetachedFile {
143148 file,
144149 cargo : 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,
331338 error : error. map ( Arc :: new) ,
339+ set_test : config. set_test ,
332340 } ,
333341 sysroot,
334342 rustc_cfg,
@@ -423,6 +431,7 @@ impl ProjectWorkspace {
423431 file : detached_file. to_owned ( ) ,
424432 cargo : 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,
610619 cargo_config_extra_env : _,
611620 error : _,
621+ set_test : _,
612622 } => {
613623 cargo
614624 . packages ( )
@@ -750,6 +760,7 @@ impl ProjectWorkspace {
750760 build_scripts,
751761 cargo_config_extra_env : _,
752762 error : _,
763+ set_test,
753764 } => (
754765 cargo_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 , .. } => (
766778 if let Some ( ( cargo, build_scripts, _) ) = cargo_script {
767779 cargo_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 {
777790 detached_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,
814828 build_scripts : _,
815829 error : _,
830+ set_test : _,
816831 } ,
817832 ProjectWorkspaceKind :: Cargo {
818833 cargo : o_cargo,
819834 rustc : o_rustc,
820835 cargo_config_extra_env : o_cargo_config_extra_env,
821836 build_scripts : _,
822837 error : _,
838+ set_test : _,
823839 } ,
824840 ) => {
825841 cargo == o_cargo
@@ -834,11 +850,13 @@ impl ProjectWorkspace {
834850 file,
835851 cargo : Some ( ( cargo_script, _, _) ) ,
836852 cargo_config_extra_env,
853+ set_test : _,
837854 } ,
838855 ProjectWorkspaceKind :: DetachedFile {
839856 file : o_file,
840857 cargo : Some ( ( o_cargo_script, _, _) ) ,
841858 cargo_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(
9871005 rustc_cfg : Vec < CfgAtom > ,
9881006 override_cfg : & CfgOverrides ,
9891007 build_scripts : & WorkspaceBuildScripts ,
1008+ set_test : bool ,
9901009) -> ( CrateGraph , ProcMacroPaths ) {
9911010 let _p = tracing:: info_span!( "cargo_to_crate_graph" ) . entered ( ) ;
9921011 let mut res = ( CrateGraph :: default ( ) , ProcMacroPaths :: default ( ) ) ;
@@ -1011,8 +1030,10 @@ fn cargo_to_crate_graph(
10111030 let mut cfg_options = cfg_options. clone ( ) ;
10121031
10131032 if 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(
11731194 detached_file : & ManifestPath ,
11741195 sysroot : & Sysroot ,
11751196 override_cfg : & CfgOverrides ,
1197+ set_test : bool ,
11761198) -> ( CrateGraph , ProcMacroPaths ) {
11771199 let _p = tracing:: info_span!( "detached_file_to_crate_graph" ) . entered ( ) ;
11781200 let mut crate_graph = CrateGraph :: default ( ) ;
11791201 let ( public_deps, _libproc_macro) =
11801202 sysroot_to_crate_graph ( & mut crate_graph, sysroot, rustc_cfg. clone ( ) , load) ;
11811203
11821204 let 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, "" ) ;
11861210 let 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
14311456 let mut pub_deps = vec ! [ ] ;
0 commit comments