diff --git a/CHANGES.md b/CHANGES.md index cc070f1bd4c..12ebde9445d 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -25,6 +25,8 @@ - Allow rules producing directory targets to create symlinks (#6077, fixes #5945, @rgrinberg) +- Inline tests are now sandboxed by default (#6079, @rgrinberg) + 3.4.1 (26-07-2022) ------------------ diff --git a/src/dune_rules/dep_conf_eval.ml b/src/dune_rules/dep_conf_eval.ml index 5e923738700..cc0bad4483e 100644 --- a/src/dune_rules/dep_conf_eval.ml +++ b/src/dune_rules/dep_conf_eval.ml @@ -290,11 +290,10 @@ let named ~expander l = | Unnamed dep -> add_sandbox_config acc dep | Named (_, l) -> List.fold_left l ~init:acc ~f:add_sandbox_config) ) -let unnamed ~expander l = +let unnamed ?(sandbox = Sandbox_config.no_special_requirements) ~expander l = let expander = prepare_expander expander in ( List.fold_left l ~init:(Action_builder.return ()) ~f:(fun acc x -> let+ () = acc and+ _x = to_action_builder (dep expander x) in ()) - , List.fold_left l ~init:Sandbox_config.no_special_requirements - ~f:add_sandbox_config ) + , List.fold_left l ~init:sandbox ~f:add_sandbox_config ) diff --git a/src/dune_rules/dep_conf_eval.mli b/src/dune_rules/dep_conf_eval.mli index e0028dceea4..0e88037dc91 100644 --- a/src/dune_rules/dep_conf_eval.mli +++ b/src/dune_rules/dep_conf_eval.mli @@ -7,7 +7,8 @@ val package_install : context:Build_context.t -> pkg:Package.t -> Alias.t (** Evaluates unnamed dependency specifications. *) val unnamed : - expander:Expander.t + ?sandbox:Sandbox_config.t + -> expander:Expander.t -> Dep_conf.t list -> unit Action_builder.t * Sandbox_config.t diff --git a/src/dune_rules/inline_tests.ml b/src/dune_rules/inline_tests.ml index 30c4d1ac94a..a926e197acf 100644 --- a/src/dune_rules/inline_tests.ml +++ b/src/dune_rules/inline_tests.ml @@ -229,7 +229,15 @@ include Sub_system.Register_end_point (struct Path.build (Path.Build.relative inline_test_dir (name ^ ext)) in let open Action_builder.O in - let deps, sandbox = Dep_conf_eval.unnamed info.deps ~expander in + let deps, sandbox = + let sandbox = + let project = Scope.project scope in + if Dune_project.dune_version project < (3, 5) then + Sandbox_config.no_special_requirements + else Sandbox_config.needs_sandboxing + in + Dep_conf_eval.unnamed ~sandbox info.deps ~expander + in let+ () = deps and+ () = Action_builder.paths source_files and+ () = Action_builder.path exe