@@ -78,6 +78,7 @@ impl RequestedVersion {
7878 tool : & ClangTool ,
7979 overwrite_symlink : bool ,
8080 directory : Option < & PathBuf > ,
81+ allow_system_package_manager : bool ,
8182 ) -> Result < Option < ClangVersion > , GetToolError > {
8283 match self {
8384 RequestedVersion :: Path ( _) => {
@@ -139,8 +140,9 @@ impl RequestedVersion {
139140 Ok ( bin) => bin,
140141 Err ( e) => {
141142 log:: error!( "Failed to download {tool} {version_req} from PyPi: {e}" ) ;
142- if let Some ( result) =
143- try_install_package ( tool, version_req, & min_ver) . await ?
143+ if allow_system_package_manager
144+ && let Some ( result) =
145+ try_install_package ( tool, version_req, & min_ver) . await ?
144146 {
145147 return Ok ( Some ( result) ) ;
146148 }
@@ -245,7 +247,7 @@ impl FromStr for RequestedVersion {
245247
246248#[ cfg( test) ]
247249mod tests {
248- use std:: { path:: PathBuf , str:: FromStr } ;
250+ use std:: { env , path:: PathBuf , str:: FromStr } ;
249251
250252 use semver:: VersionReq ;
251253 use tempfile:: TempDir ;
@@ -281,7 +283,7 @@ mod tests {
281283 #[ tokio:: test]
282284 async fn eval_no_value ( ) {
283285 let result = RequestedVersion :: NoValue
284- . eval_tool ( & ClangTool :: ClangFormat , false , None )
286+ . eval_tool ( & ClangTool :: ClangFormat , false , None , false )
285287 . await
286288 . unwrap ( ) ;
287289 assert ! ( result. is_none( ) ) ;
@@ -301,14 +303,19 @@ mod tests {
301303 let version_req =
302304 VersionReq :: parse ( option_env ! ( "MIN_CLANG_TOOLS_VERSION" ) . unwrap_or ( "16" ) ) . unwrap ( ) ;
303305 let downloaded_clang = RequestedVersion :: Requirement ( version_req. clone ( ) )
304- . eval_tool ( & tool, false , Some ( & PathBuf :: from ( tmp_cache_dir. path ( ) ) ) )
306+ . eval_tool (
307+ & tool,
308+ false ,
309+ Some ( & PathBuf :: from ( tmp_cache_dir. path ( ) ) ) ,
310+ false ,
311+ )
305312 . await
306313 . unwrap ( )
307314 . unwrap ( ) ;
308315 println ! ( "Downloaded clang-format: {downloaded_clang:?}" ) ;
309316 let req_ver = RequestedVersion :: Path ( downloaded_clang. path . parent ( ) . unwrap ( ) . to_owned ( ) ) ;
310317 let result = req_ver
311- . eval_tool ( & tool, false , None )
318+ . eval_tool ( & tool, false , None , false )
312319 . await
313320 . unwrap ( )
314321 . unwrap ( ) ;
@@ -331,7 +338,13 @@ mod tests {
331338 let version_req = VersionReq :: parse ( clang_version) . unwrap ( ) ;
332339 println ! ( "Installing {tool} with version requirement: {version_req}" ) ;
333340 let clang_path = RequestedVersion :: Requirement ( version_req. clone ( ) )
334- . eval_tool ( & tool, false , None )
341+ . eval_tool (
342+ & tool,
343+ false ,
344+ None ,
345+ env:: var ( "CI" )
346+ . is_ok_and ( |v| [ "true" , "on" , "1" ] . contains ( & v. to_lowercase ( ) . as_str ( ) ) ) ,
347+ )
335348 . await
336349 . unwrap ( )
337350 . unwrap ( ) ;
0 commit comments