Skip to content

Commit f9c053d

Browse files
sabiwarajosevalim
authored andcommitted
Make mix test reports deterministic in OTP26 (#12438)
* Make mix test reports deterministic in OTP26 The reports for the following were both relying on map keys ordering: - mix test - mix test.cover * Fix non-deterministic test
1 parent 1108a6c commit f9c053d

File tree

3 files changed

+33
-17
lines changed

3 files changed

+33
-17
lines changed

lib/ex_unit/lib/ex_unit/cli_formatter.ex

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,9 @@ defmodule ExUnit.CLIFormatter do
337337
end
338338

339339
defp format_test_type_counts(%{test_counter: test_counter} = _config) do
340-
Enum.map(test_counter, fn {test_type, count} ->
340+
test_counter
341+
|> Enum.sort()
342+
|> Enum.map(fn {test_type, count} ->
341343
type_pluralized = pluralize(count, test_type, ExUnit.plural_rule(test_type |> to_string()))
342344
"#{count} #{type_pluralized}, "
343345
end)

lib/mix/lib/mix/tasks/test.coverage.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ defmodule Mix.Tasks.Test.Coverage do
173173

174174
if apps_paths = Mix.Project.apps_paths(config) do
175175
build_path = Mix.Project.build_path(config)
176+
apps_paths = Enum.sort(apps_paths)
176177

177178
compile_paths =
178179
Enum.map(apps_paths, fn {app, _} ->

lib/mix/test/mix/dep_test.exs

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -488,6 +488,10 @@ defmodule Mix.DepTest do
488488
Mix.RemoteConverger.register(nil)
489489
end
490490

491+
defp sorted_keys(map) do
492+
map |> Map.keys() |> Enum.sort()
493+
end
494+
491495
test "deps_paths" do
492496
deps = [
493497
{:abc_repo, "0.1.0", path: "custom/abc_repo"},
@@ -502,33 +506,42 @@ defmodule Mix.DepTest do
502506
[:abc_repo, :git_repo, :deps_repo]
503507
]
504508

505-
assert Map.keys(Mix.Project.deps_paths()) == [:abc_repo, :deps_repo, :git_repo]
509+
assert sorted_keys(Mix.Project.deps_paths()) == [:abc_repo, :deps_repo, :git_repo]
510+
511+
assert sorted_keys(Mix.Project.deps_paths(depth: 1)) == [:abc_repo, :deps_repo]
512+
assert sorted_keys(Mix.Project.deps_paths(depth: 2)) == [:abc_repo, :deps_repo, :git_repo]
513+
assert sorted_keys(Mix.Project.deps_paths(depth: 3)) == [:abc_repo, :deps_repo, :git_repo]
514+
515+
assert sorted_keys(Mix.Project.deps_paths(parents: [:abc_repo])) == [:abc_repo]
516+
517+
assert sorted_keys(Mix.Project.deps_paths(parents: [:deps_repo])) == [
518+
:deps_repo,
519+
:git_repo
520+
]
521+
522+
assert sorted_keys(Mix.Project.deps_paths(parents: [:git_repo])) == [:git_repo]
506523

507-
assert Map.keys(Mix.Project.deps_paths(depth: 1)) == [:abc_repo, :deps_repo]
508-
assert Map.keys(Mix.Project.deps_paths(depth: 2)) == [:abc_repo, :deps_repo, :git_repo]
509-
assert Map.keys(Mix.Project.deps_paths(depth: 3)) == [:abc_repo, :deps_repo, :git_repo]
524+
assert sorted_keys(Mix.Project.deps_paths(parents: [:abc_repo], depth: 1)) == [:abc_repo]
510525

511-
assert Map.keys(Mix.Project.deps_paths(parents: [:abc_repo])) == [:abc_repo]
512-
assert Map.keys(Mix.Project.deps_paths(parents: [:deps_repo])) == [:deps_repo, :git_repo]
513-
assert Map.keys(Mix.Project.deps_paths(parents: [:git_repo])) == [:git_repo]
526+
assert sorted_keys(Mix.Project.deps_paths(parents: [:deps_repo], depth: 1)) == [
527+
:deps_repo
528+
]
514529

515-
assert Map.keys(Mix.Project.deps_paths(parents: [:abc_repo], depth: 1)) == [:abc_repo]
516-
assert Map.keys(Mix.Project.deps_paths(parents: [:deps_repo], depth: 1)) == [:deps_repo]
517-
assert Map.keys(Mix.Project.deps_paths(parents: [:git_repo], depth: 1)) == [:git_repo]
530+
assert sorted_keys(Mix.Project.deps_paths(parents: [:git_repo], depth: 1)) == [:git_repo]
518531

519-
assert Map.keys(Mix.Project.deps_paths(parents: [:abc_repo], depth: 2)) == [:abc_repo]
520-
assert Map.keys(Mix.Project.deps_paths(parents: [:git_repo], depth: 2)) == [:git_repo]
532+
assert sorted_keys(Mix.Project.deps_paths(parents: [:abc_repo], depth: 2)) == [:abc_repo]
533+
assert sorted_keys(Mix.Project.deps_paths(parents: [:git_repo], depth: 2)) == [:git_repo]
521534

522-
assert Map.keys(Mix.Project.deps_paths(parents: [:deps_repo], depth: 2)) ==
535+
assert sorted_keys(Mix.Project.deps_paths(parents: [:deps_repo], depth: 2)) ==
523536
[:deps_repo, :git_repo]
524537

525-
assert Map.keys(Mix.Project.deps_paths(parents: [:abc_repo, :deps_repo])) ==
538+
assert sorted_keys(Mix.Project.deps_paths(parents: [:abc_repo, :deps_repo])) ==
526539
[:abc_repo, :deps_repo, :git_repo]
527540

528-
assert Map.keys(Mix.Project.deps_paths(parents: [:abc_repo, :deps_repo], depth: 1)) ==
541+
assert sorted_keys(Mix.Project.deps_paths(parents: [:abc_repo, :deps_repo], depth: 1)) ==
529542
[:abc_repo, :deps_repo]
530543

531-
assert Map.keys(Mix.Project.deps_paths(parents: [:abc_repo, :deps_repo], depth: 2)) ==
544+
assert sorted_keys(Mix.Project.deps_paths(parents: [:abc_repo, :deps_repo], depth: 2)) ==
532545
[:abc_repo, :deps_repo, :git_repo]
533546
end)
534547
end)

0 commit comments

Comments
 (0)