From d85f86a4ae58cea1b1cc4a8d0934681998a19fe7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Tue, 30 Jan 2024 21:15:48 +0100 Subject: [PATCH] Fix timing CI issues (#13305) --- .../test/mix/tasks/compile.elixir_test.exs | 44 ++----------------- 1 file changed, 4 insertions(+), 40 deletions(-) diff --git a/lib/mix/test/mix/tasks/compile.elixir_test.exs b/lib/mix/test/mix/tasks/compile.elixir_test.exs index 52bbc4bf652..61f57866c91 100644 --- a/lib/mix/test/mix/tasks/compile.elixir_test.exs +++ b/lib/mix/test/mix/tasks/compile.elixir_test.exs @@ -140,7 +140,7 @@ defmodule Mix.Tasks.Compile.ElixirTest do recompile = fn -> Mix.ProjectStack.pop() Mix.Project.push(MixTest.Case.Sample) - ensure_touched("config/config.exs") + ensure_touched("config/config.exs", "_build/dev/lib/sample/.mix/compile.elixir") Mix.Tasks.Loadconfig.load_compile("config/config.exs") Mix.Tasks.Compile.Elixir.run(["--verbose"]) end @@ -151,11 +151,9 @@ defmodule Mix.Tasks.Compile.ElixirTest do config :logger, :level, :debug """) - File.touch!("_build/dev/lib/sample/.mix/compile.elixir", @old_time) assert recompile.() == {:ok, []} assert_received {:mix_shell, :info, ["Compiled lib/a.ex"]} refute_received {:mix_shell, :info, ["Compiled lib/b.ex"]} - assert File.stat!("_build/dev/lib/sample/.mix/compile.elixir").mtime > @old_time # Changing config recompiles File.write!("config/config.exs", """ @@ -163,25 +161,20 @@ defmodule Mix.Tasks.Compile.ElixirTest do config :logger, :level, :info """) - File.touch!("_build/dev/lib/sample/.mix/compile.elixir", @old_time) assert recompile.() == {:ok, []} assert_received {:mix_shell, :info, ["Compiled lib/a.ex"]} refute_received {:mix_shell, :info, ["Compiled lib/b.ex"]} - assert File.stat!("_build/dev/lib/sample/.mix/compile.elixir").mtime > @old_time # Removing config recompiles File.write!("config/config.exs", """ import Config """) - File.touch!("_build/dev/lib/sample/.mix/compile.elixir", @old_time) assert recompile.() == {:ok, []} assert_received {:mix_shell, :info, ["Compiled lib/a.ex"]} refute_received {:mix_shell, :info, ["Compiled lib/b.ex"]} - assert File.stat!("_build/dev/lib/sample/.mix/compile.elixir").mtime > @old_time # No-op does not recompile - File.touch!("_build/dev/lib/sample/.mix/compile.elixir", @old_time) assert recompile.() == {:ok, []} refute_received {:mix_shell, :info, ["Compiled lib/a.ex"]} refute_received {:mix_shell, :info, ["Compiled lib/b.ex"]} @@ -192,11 +185,9 @@ defmodule Mix.Tasks.Compile.ElixirTest do config :sample, :foo, :bar """) - File.touch!("_build/dev/lib/sample/.mix/compile.elixir", @old_time) assert recompile.() == {:ok, []} assert_received {:mix_shell, :info, ["Compiled lib/a.ex"]} assert_received {:mix_shell, :info, ["Compiled lib/b.ex"]} - assert File.stat!("_build/dev/lib/sample/.mix/compile.elixir").mtime > @old_time # Changing an unknown dependency returns :ok but does not recompile File.write!("config/config.exs", """ @@ -204,12 +195,6 @@ defmodule Mix.Tasks.Compile.ElixirTest do config :sample, :foo, :bar config :unknown, :unknown, :unknown """) - - # We use ensure_touched because an outdated manifest would recompile anyway. - ensure_touched("config/config.exs", "_build/dev/lib/sample/.mix/compile.elixir") - assert recompile.() == {:ok, []} - refute_received {:mix_shell, :info, ["Compiled lib/a.ex"]} - refute_received {:mix_shell, :info, ["Compiled lib/b.ex"]} end) after Application.delete_env(:sample, :foo, persistent: true) @@ -271,7 +256,7 @@ defmodule Mix.Tasks.Compile.ElixirTest do recompile = fn -> Mix.ProjectStack.pop() Mix.Project.push(MixTest.Case.Sample) - ensure_touched("config/config.exs") + ensure_touched("config/config.exs", "_build/dev/lib/sample/.mix/compile.elixir") Mix.Tasks.Loadconfig.load_compile("config/config.exs") Mix.Tasks.Compile.Elixir.run(["--verbose"]) end @@ -282,11 +267,9 @@ defmodule Mix.Tasks.Compile.ElixirTest do config :ex_unit, :some, :config """) - File.touch!("_build/dev/lib/sample/.mix/compile.elixir", @old_time) assert recompile.() == {:ok, []} assert_received {:mix_shell, :info, ["Compiled lib/a.ex"]} refute_received {:mix_shell, :info, ["Compiled lib/b.ex"]} - assert File.stat!("_build/dev/lib/sample/.mix/compile.elixir").mtime > @old_time # Changing config recompiles File.write!("config/config.exs", """ @@ -294,25 +277,20 @@ defmodule Mix.Tasks.Compile.ElixirTest do config :ex_unit, :some, :another """) - File.touch!("_build/dev/lib/sample/.mix/compile.elixir", @old_time) assert recompile.() == {:ok, []} assert_received {:mix_shell, :info, ["Compiled lib/a.ex"]} refute_received {:mix_shell, :info, ["Compiled lib/b.ex"]} - assert File.stat!("_build/dev/lib/sample/.mix/compile.elixir").mtime > @old_time # Removing config recompiles File.write!("config/config.exs", """ import Config """) - File.touch!("_build/dev/lib/sample/.mix/compile.elixir", @old_time) assert recompile.() == {:ok, []} assert_received {:mix_shell, :info, ["Compiled lib/a.ex"]} refute_received {:mix_shell, :info, ["Compiled lib/b.ex"]} - assert File.stat!("_build/dev/lib/sample/.mix/compile.elixir").mtime > @old_time # No-op does not recompile - File.touch!("_build/dev/lib/sample/.mix/compile.elixir", @old_time) assert recompile.() == {:ok, []} refute_received {:mix_shell, :info, ["Compiled lib/a.ex"]} refute_received {:mix_shell, :info, ["Compiled lib/b.ex"]} @@ -341,7 +319,7 @@ defmodule Mix.Tasks.Compile.ElixirTest do recompile = fn -> Mix.ProjectStack.pop() Mix.Project.push(MixTest.Case.Sample) - ensure_touched("config/config.exs") + ensure_touched("config/config.exs", "_build/dev/lib/sample/.mix/compile.elixir") Mix.Tasks.Loadconfig.load_compile("config/config.exs") Mix.Tasks.Compile.Elixir.run(["--verbose"]) end @@ -352,11 +330,9 @@ defmodule Mix.Tasks.Compile.ElixirTest do config :logger, :compile_time_purge_matching, [] """) - File.touch!("_build/dev/lib/sample/.mix/compile.elixir", @old_time) assert recompile.() == {:ok, []} assert_received {:mix_shell, :info, ["Compiled lib/a.ex"]} refute_received {:mix_shell, :info, ["Compiled lib/b.ex"]} - assert File.stat!("_build/dev/lib/sample/.mix/compile.elixir").mtime > @old_time # Inserting a bogus config should crash File.write!("config/config.exs", """ @@ -364,7 +340,6 @@ defmodule Mix.Tasks.Compile.ElixirTest do config :logger, :compile_time_purge_matching, [level_lower_than: :debug] """) - File.touch!("_build/dev/lib/sample/.mix/compile.elixir", @old_time) ExUnit.CaptureIO.capture_io(:stderr, fn -> assert {:error, _} = recompile.() end) # Revering the original config should recompile @@ -373,11 +348,9 @@ defmodule Mix.Tasks.Compile.ElixirTest do config :logger, :compile_time_purge_matching, [] """) - File.touch!("_build/dev/lib/sample/.mix/compile.elixir", @old_time) assert recompile.() == {:ok, []} assert_received {:mix_shell, :info, ["Compiled lib/a.ex"]} refute_received {:mix_shell, :info, ["Compiled lib/b.ex"]} - assert File.stat!("_build/dev/lib/sample/.mix/compile.elixir").mtime > @old_time end) after Application.put_env(:logger, :compile_time_purge_matching, []) @@ -401,7 +374,7 @@ defmodule Mix.Tasks.Compile.ElixirTest do recompile = fn -> Mix.ProjectStack.pop() Mix.Project.push(MixTest.Case.Sample) - ensure_touched("config/config.exs") + ensure_touched("config/config.exs", "_build/dev/lib/sample/.mix/compile.elixir") Mix.Tasks.Loadconfig.load_compile("config/config.exs") Mix.Tasks.Compile.Elixir.run(["--verbose"]) end @@ -412,11 +385,9 @@ defmodule Mix.Tasks.Compile.ElixirTest do config :logger, :level, :debug """) - File.touch!("_build/dev/lib/sample/.mix/compile.elixir", @old_time) assert recompile.() == {:ok, []} assert_received {:mix_shell, :info, ["Compiled lib/a.ex"]} refute_received {:mix_shell, :info, ["Compiled lib/b.ex"]} - assert File.stat!("_build/dev/lib/sample/.mix/compile.elixir").mtime > @old_time # Changing config recompiles File.write!("config/config.exs", """ @@ -424,22 +395,18 @@ defmodule Mix.Tasks.Compile.ElixirTest do config :logger, :level, :info """) - File.touch!("_build/dev/lib/sample/.mix/compile.elixir", @old_time) assert recompile.() == {:ok, []} assert_received {:mix_shell, :info, ["Compiled lib/a.ex"]} refute_received {:mix_shell, :info, ["Compiled lib/b.ex"]} - assert File.stat!("_build/dev/lib/sample/.mix/compile.elixir").mtime > @old_time # Removing config recompiles File.write!("config/config.exs", """ import Config """) - File.touch!("_build/dev/lib/sample/.mix/compile.elixir", @old_time) assert recompile.() == {:ok, []} assert_received {:mix_shell, :info, ["Compiled lib/a.ex"]} refute_received {:mix_shell, :info, ["Compiled lib/b.ex"]} - assert File.stat!("_build/dev/lib/sample/.mix/compile.elixir").mtime > @old_time # Changing self fully recompiles File.write!("config/config.exs", """ @@ -447,11 +414,9 @@ defmodule Mix.Tasks.Compile.ElixirTest do config :sample, :foo, :bar """) - File.touch!("_build/dev/lib/sample/.mix/compile.elixir", @old_time) assert recompile.() == {:ok, []} assert_received {:mix_shell, :info, ["Compiled lib/a.ex"]} assert_received {:mix_shell, :info, ["Compiled lib/b.ex"]} - assert File.stat!("_build/dev/lib/sample/.mix/compile.elixir").mtime > @old_time # Changing an unknown dependency returns :ok but does not recompile File.write!("config/config.exs", """ @@ -461,7 +426,6 @@ defmodule Mix.Tasks.Compile.ElixirTest do """) # We use ensure_touched because an outdated manifest would recompile anyway. - ensure_touched("config/config.exs", "_build/dev/lib/sample/.mix/compile.elixir") assert recompile.() == {:ok, []} refute_received {:mix_shell, :info, ["Compiled lib/a.ex"]} refute_received {:mix_shell, :info, ["Compiled lib/b.ex"]}