diff --git a/doc/changes/changed/13510.md b/doc/changes/changed/13510.md index a63d7d79a9e..c5cbace2618 100644 --- a/doc/changes/changed/13510.md +++ b/doc/changes/changed/13510.md @@ -1,2 +1,2 @@ - Start sandboxing the execution of tests defined with the `test` and `tests` - stanzas (#13510, @rgrinberg) + stanzas (#13510, #13617, @rgrinberg) diff --git a/src/dune_rules/test_rules.ml b/src/dune_rules/test_rules.ml index c61b20c31dc..518eb9ee51a 100644 --- a/src/dune_rules/test_rules.ml +++ b/src/dune_rules/test_rules.ml @@ -135,13 +135,18 @@ let rules (t : Tests.t) ~sctx ~dir ~scope ~expander ~dir_contents = |> Rules.Produce.Alias.add_deps runtest_alias) in let expander = Expander.add_bindings expander ~bindings:extra_bindings in + let sandbox = + if Dune_project.dune_version project >= (3, 22) + then Sandbox_config.needs_sandboxing + else Sandbox_config.no_special_requirements + in match test_kind ~dir:(Expander.dir expander) dir_contents s ext with | `Regular -> let action = let chdir = Expander.dir expander in Action_unexpanded.expand_no_targets run_action - Sandbox_config.no_special_requirements + sandbox ~loc ~expander ~chdir @@ -161,12 +166,10 @@ let rules (t : Tests.t) ~sctx ~dir ~scope ~expander ~dir_contents = ~loc ~expander ~deps - ~targets:Targets_spec.Infer + ~targets:Infer ~targets_dir:dir run_action - (if Dune_project.dune_version project >= (3, 22) - then Sandbox_config.needs_sandboxing - else Sandbox_config.no_special_requirements) + sandbox in Action_builder.With_targets.add action ~file_targets:[ diff.file2 ] |> Action_builder.With_targets.map_build ~f:(fun action -> diff --git a/test/blackbox-tests/test-cases/stanzas/tests/tests-sandboxing.t b/test/blackbox-tests/test-cases/stanzas/tests/tests-sandboxing.t index 0a4a6b11195..0cd3cd26d0a 100644 --- a/test/blackbox-tests/test-cases/stanzas/tests/tests-sandboxing.t +++ b/test/blackbox-tests/test-cases/stanzas/tests/tests-sandboxing.t @@ -23,3 +23,4 @@ Demonstrate that test stanza is now sandbox $ make_dune_project 3.22 $ dune runtest dir/foo + foo.exe