فهرست منبع

test: make `clear_screen` safer

Useful when iterating on the tests in a loop, to get rid of all the garbaged printed
before the test itself beings.

Only actually does anything if the environment variable `CLEAR_SCREEN` is set to `true`
and only clears the screen the screen the first time it's encountered, so it's harmless
otherwise.
Thales Macedo Garitezi 1 سال پیش
والد
کامیت
c6195fcf50
1فایلهای تغییر یافته به همراه17 افزوده شده و 7 حذف شده
  1. 17 7
      apps/emqx/test/emqx_common_test_helpers.erl

+ 17 - 7
apps/emqx/test/emqx_common_test_helpers.erl

@@ -1060,14 +1060,24 @@ expand_node_specs(Specs, CommonOpts) ->
         Specs
         Specs
     ).
     ).
 
 
-%% is useful when iterating on the tests in a loop, to get rid of all
-%% the garbaged printed before the test itself beings.
+%% Useful when iterating on the tests in a loop, to get rid of all the garbaged printed
+%% before the test itself beings.
+%% Only actually does anything if the environment variable `CLEAR_SCREEN' is set to `true'
+%% and only clears the screen the screen the first time it's encountered, so it's harmless
+%% otherwise.
 clear_screen() ->
 clear_screen() ->
-    io:format(standard_io, "\033[H\033[2J", []),
-    io:format(standard_error, "\033[H\033[2J", []),
-    io:format(standard_io, "\033[H\033[3J", []),
-    io:format(standard_error, "\033[H\033[3J", []),
-    ok.
+    Key = {?MODULE, clear_screen},
+    case {os:getenv("CLEAR_SCREEN"), persistent_term:get(Key, false)} of
+        {"true", false} ->
+            io:format(standard_io, "\033[H\033[2J", []),
+            io:format(standard_error, "\033[H\033[2J", []),
+            io:format(standard_io, "\033[H\033[3J", []),
+            io:format(standard_error, "\033[H\033[3J", []),
+            persistent_term:put(Key, true),
+            ok;
+        _ ->
+            ok
+    end.
 
 
 with_mock(Mod, FnName, MockedFn, Fun) ->
 with_mock(Mod, FnName, MockedFn, Fun) ->
     ok = meck:new(Mod, [non_strict, no_link, no_history, passthrough]),
     ok = meck:new(Mod, [non_strict, no_link, no_history, passthrough]),