summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@dashbit.co>2023-05-07 13:06:42 +0200
committerJosé Valim <jose.valim@dashbit.co>2023-05-07 13:06:42 +0200
commitae0a332c0e04acde32f04c91fac63c07c86217de (patch)
tree0e175b3b4495da8e317352b00ad999872fb2c407
parentef673a103dd58b7c4ff1b3c796201a59e072dbb3 (diff)
downloadelixir-ae0a332c0e04acde32f04c91fac63c07c86217de.tar.gz
Simplify context/tags merging in runner
-rw-r--r--lib/ex_unit/lib/ex_unit/runner.ex38
1 files changed, 12 insertions, 26 deletions
diff --git a/lib/ex_unit/lib/ex_unit/runner.ex b/lib/ex_unit/lib/ex_unit/runner.ex
index 19de95114..b444e3052 100644
--- a/lib/ex_unit/lib/ex_unit/runner.ex
+++ b/lib/ex_unit/lib/ex_unit/runner.ex
@@ -378,16 +378,14 @@ defmodule ExUnit.Runner do
spawn_monitor(fn ->
ExUnit.OnExitHandler.register(self())
generate_test_seed(seed, test)
-
- tags = test.tags
- capture_log = Map.get(tags, :capture_log, capture_log)
+ capture_log = Map.get(test.tags, :capture_log, capture_log)
{time, test} =
:timer.tc(
maybe_capture_log(capture_log, test, fn ->
- context = maybe_create_tmp_dir(test, context, tags)
+ tags = maybe_create_tmp_dir(test.tags, test)
- case exec_test_setup(test, test_tags_context(test.tags, context)) do
+ case exec_test_setup(test, Map.merge(context, tags)) do
{:ok, context} -> exec_test(test, context)
{:error, test} -> test
end
@@ -399,14 +397,6 @@ defmodule ExUnit.Runner do
end)
end
- defp test_tags_context(test_tags, parent_context) do
- Map.merge(parent_context, test_tags, fn
- :tmp_dir, _v0, false -> false
- :tmp_dir, v0, _v1 -> v0
- _k, _v0, v1 -> v1
- end)
- end
-
defp maybe_capture_log(true, test, fun) do
maybe_capture_log([], test, fun)
end
@@ -554,24 +544,20 @@ defmodule ExUnit.Runner do
## Tmp dir handling
- defp maybe_create_tmp_dir(test, context, %{tmp_dir: true}) do
- create_tmp_dir!(test, "", context)
- end
-
- defp maybe_create_tmp_dir(test, context, %{tmp_dir: path}) when is_binary(path) do
- create_tmp_dir!(test, path, context)
+ defp maybe_create_tmp_dir(%{tmp_dir: true} = tags, test) do
+ create_tmp_dir!(test, "", tags)
end
- defp maybe_create_tmp_dir(_, context, %{tmp_dir: false}) do
- context
+ defp maybe_create_tmp_dir(%{tmp_dir: path} = tags, test) when is_binary(path) do
+ create_tmp_dir!(test, path, tags)
end
- defp maybe_create_tmp_dir(_, _, %{tmp_dir: other}) do
+ defp maybe_create_tmp_dir(%{tmp_dir: other}, _test) when other != false do
raise ArgumentError, "expected :tmp_dir to be a boolean or a string, got: #{inspect(other)}"
end
- defp maybe_create_tmp_dir(_, context, _) do
- context
+ defp maybe_create_tmp_dir(tags, _test) do
+ tags
end
defp short_hash(module, test_name) do
@@ -581,7 +567,7 @@ defmodule ExUnit.Runner do
|> binary_slice(0..7)
end
- defp create_tmp_dir!(test, extra_path, context) do
+ defp create_tmp_dir!(test, extra_path, tags) do
module_string = inspect(test.module)
name_string = to_string(test.name)
@@ -592,7 +578,7 @@ defmodule ExUnit.Runner do
path = ["tmp", module, "#{name}-#{short_hash}", extra_path] |> Path.join() |> Path.expand()
File.rm_rf!(path)
File.mkdir_p!(path)
- Map.put(context, :tmp_dir, path)
+ Map.put(tags, :tmp_dir, path)
end
@escape Enum.map(~c" [~#%&*{}\\:<>?/+|\"]", &<<&1::utf8>>)