From 763a085339930b77551b0f4588c3ed6d1e903f65 Mon Sep 17 00:00:00 2001 From: Stephen Sherratt Date: Tue, 1 Oct 2024 18:21:04 +1000 Subject: [PATCH] Clear console before running command in exec -w This fixes an issue where the build progress stays on the console after the build completes, and the first line of the output of the command being exec'd is printed on teh same line as the build progress. A side effect of this change is that some of the "Build Successful" messages in tests get truncated. Signed-off-by: Stephen Sherratt --- bin/exec.ml | 6 +++++- test/blackbox-tests/test-cases/exec-watch/exec-pwd.t/run.t | 2 +- .../test-cases/exec-watch/exec-watch-basic.t/run.t | 6 +++--- .../test-cases/exec-watch/exec-watch-ignore-sigterm.t/run.t | 4 ++-- .../test-cases/exec-watch/exec-watch-multi-levels.t/run.t | 4 ++-- .../test-cases/exec-watch/exec-watch-server.t/run.t | 6 +++--- 6 files changed, 16 insertions(+), 12 deletions(-) diff --git a/bin/exec.ml b/bin/exec.ml index d20d965470c..9bb8848537f 100644 --- a/bin/exec.ml +++ b/bin/exec.ml @@ -95,7 +95,11 @@ module Command_to_exec = struct { get_path_and_build_if_necessary; prog; args; env } = get_path_and_build_if_necessary prog - |> Fiber.map ~f:(Result.map ~f:(spawn_process ~root ~args ~env)) + |> Fiber.map + ~f: + (Result.map ~f:(fun prog -> + Console.reset (); + spawn_process ~root ~args ~env prog)) ;; end diff --git a/test/blackbox-tests/test-cases/exec-watch/exec-pwd.t/run.t b/test/blackbox-tests/test-cases/exec-watch/exec-pwd.t/run.t index f1ee08d2e39..ca3d30b6366 100644 --- a/test/blackbox-tests/test-cases/exec-watch/exec-pwd.t/run.t +++ b/test/blackbox-tests/test-cases/exec-watch/exec-pwd.t/run.t @@ -14,7 +14,7 @@ In watch mode, pwd is also the folder from which dune is launched. $ cd bin $ dune exec --root .. -w -- pwd > $OUTPUT & Entering directory '..' - Success, waiting for filesystem changes... + changes... Leaving directory '..' $ PID=$! $ until test -s $OUTPUT; do sleep 0.1; done; diff --git a/test/blackbox-tests/test-cases/exec-watch/exec-watch-basic.t/run.t b/test/blackbox-tests/test-cases/exec-watch/exec-watch-basic.t/run.t index 40c99674f35..1f6d3c7b2fb 100644 --- a/test/blackbox-tests/test-cases/exec-watch/exec-watch-basic.t/run.t +++ b/test/blackbox-tests/test-cases/exec-watch/exec-watch-basic.t/run.t @@ -10,16 +10,16 @@ between each change to its code. > EOF $ dune exec --watch ./foo.exe & - Success, waiting for filesystem changes... + changes... foo - Success, waiting for filesystem changes... + changes... bar File "foo.ml", line 1, characters 23-24: 1 | let () = print_endline "baz ^ Error: String literal not terminated Had 1 error, waiting for filesystem changes... - Success, waiting for filesystem changes... + changes... baz $ PID=$! diff --git a/test/blackbox-tests/test-cases/exec-watch/exec-watch-ignore-sigterm.t/run.t b/test/blackbox-tests/test-cases/exec-watch/exec-watch-ignore-sigterm.t/run.t index c13b775e22f..e3c17a3d775 100644 --- a/test/blackbox-tests/test-cases/exec-watch/exec-watch-ignore-sigterm.t/run.t +++ b/test/blackbox-tests/test-cases/exec-watch/exec-watch-ignore-sigterm.t/run.t @@ -1,9 +1,9 @@ Test exec --watch with a program that ignores sigterm. $ dune exec --watch ./foo.exe & - Success, waiting for filesystem changes... + changes... 1: before - Success, waiting for filesystem changes... + changes... 2: before $ PID=$! diff --git a/test/blackbox-tests/test-cases/exec-watch/exec-watch-multi-levels.t/run.t b/test/blackbox-tests/test-cases/exec-watch/exec-watch-multi-levels.t/run.t index b51a63d9913..45862f8ce73 100644 --- a/test/blackbox-tests/test-cases/exec-watch/exec-watch-multi-levels.t/run.t +++ b/test/blackbox-tests/test-cases/exec-watch/exec-watch-multi-levels.t/run.t @@ -4,7 +4,7 @@ project root directory. "dune exec --watch" works fine when invoked at the root level $ DONE_FLAG=_build/done_flag $ dune exec --watch ./bin/main.exe $DONE_FLAG & - Success, waiting for filesystem changes... + changes... foo $ PID=$! @@ -19,7 +19,7 @@ Perform the same test above but first enter the "bin" directory. $ cd bin $ dune exec --root .. --watch ./bin/main.exe ../$DONE_FLAG & Entering directory '..' - Success, waiting for filesystem changes... + changes... foo Leaving directory '..' $ PID=$! diff --git a/test/blackbox-tests/test-cases/exec-watch/exec-watch-server.t/run.t b/test/blackbox-tests/test-cases/exec-watch/exec-watch-server.t/run.t index 81615390e5c..665a740fecc 100644 --- a/test/blackbox-tests/test-cases/exec-watch/exec-watch-server.t/run.t +++ b/test/blackbox-tests/test-cases/exec-watch/exec-watch-server.t/run.t @@ -14,12 +14,12 @@ between each change to its code. > EOF $ dune exec --watch ./foo.exe & - Success, waiting for filesystem changes... + changes... 0: before - Success, waiting for filesystem changes... + changes... 1: before 1: after - Success, waiting for filesystem changes... + changes... 2: before $ PID=$!