Skip to content

Commit e0967c2

Browse files
committed
Ensure args excludes overrides user ones
1 parent 8cb6abf commit e0967c2

File tree

1 file changed

+6
-8
lines changed

1 file changed

+6
-8
lines changed

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

+6-8
Original file line numberDiff line numberDiff line change
@@ -594,9 +594,12 @@ defmodule Mix.Tasks.Test do
594594

595595
# Prepare and extract all files to require and run
596596
test_paths = project[:test_paths] || default_test_paths()
597-
test_files = if files != [], do: parse_file_paths(files), else: test_paths
598597
test_pattern = project[:test_pattern] || "*_test.exs"
599598
warn_test_pattern = project[:warn_test_pattern] || "*_test.ex"
599+
600+
{test_files, test_opts} =
601+
if files != [], do: ExUnit.Filters.parse_paths(files), else: {test_paths, []}
602+
600603
unfiltered_test_files = Mix.Utils.extract_files(test_files, test_pattern)
601604

602605
matched_test_files =
@@ -608,7 +611,8 @@ defmodule Mix.Tasks.Test do
608611

609612
try do
610613
Enum.each(test_paths, &require_test_helper(shell, &1))
611-
ExUnit.configure(merge_helper_opts(ex_unit_opts))
614+
# test_opts always wins because those are given via args
615+
ExUnit.configure(ex_unit_opts |> merge_helper_opts() |> Keyword.merge(test_opts))
612616
CT.require_and_run(matched_test_files, test_paths, test_elixirc_options, opts)
613617
catch
614618
kind, reason ->
@@ -733,12 +737,6 @@ defmodule Mix.Tasks.Test do
733737
[autorun: false] ++ opts
734738
end
735739

736-
defp parse_file_paths(file_paths) do
737-
{parsed_file_paths, ex_unit_opts} = ExUnit.Filters.parse_paths(file_paths)
738-
ExUnit.configure(ex_unit_opts)
739-
parsed_file_paths
740-
end
741-
742740
defp parse_filters(opts, key) do
743741
if Keyword.has_key?(opts, key) do
744742
ExUnit.Filters.parse(Keyword.get_values(opts, key))

0 commit comments

Comments
 (0)