Skip to content

Commit 6d5f433

Browse files
Allow specifying SEED when running tests (#15111)
this is helpful when reproducing flaky test failures
1 parent 43dde95 commit 6d5f433

File tree

6 files changed

+71
-40
lines changed

6 files changed

+71
-40
lines changed

lib/eex/test/test_helper.exs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,13 @@
88
Code.require_file("../../elixir/scripts/cover_record.exs", __DIR__)
99
CoverageRecorder.maybe_record("eex")
1010

11-
ExUnit.start(
12-
trace: !!System.get_env("TRACE"),
13-
include: line_include,
14-
exclude: line_exclude
15-
)
11+
maybe_seed_opt = if seed = System.get_env("SEED"), do: [seed: String.to_integer(seed)], else: []
12+
13+
ex_unit_opts =
14+
[
15+
trace: !!System.get_env("TRACE"),
16+
include: line_include,
17+
exclude: line_exclude
18+
] ++ maybe_seed_opt
19+
20+
ExUnit.start(ex_unit_opts)

lib/elixir/test/elixir/test_helper.exs

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -140,12 +140,18 @@ re_import_exclude =
140140
[:re_import]
141141
end
142142

143-
ExUnit.start(
144-
trace: !!System.get_env("TRACE"),
145-
exclude:
146-
epmd_exclude ++
147-
os_exclude ++
148-
line_exclude ++ distributed_exclude ++ source_exclude ++ cover_exclude ++ re_import_exclude,
149-
include: line_include,
150-
assert_receive_timeout: String.to_integer(System.get_env("ELIXIR_ASSERT_TIMEOUT", "300"))
151-
)
143+
maybe_seed_opt = if seed = System.get_env("SEED"), do: [seed: String.to_integer(seed)], else: []
144+
145+
ex_unit_opts =
146+
[
147+
trace: !!System.get_env("TRACE"),
148+
exclude:
149+
epmd_exclude ++
150+
os_exclude ++
151+
line_exclude ++
152+
distributed_exclude ++ source_exclude ++ cover_exclude ++ re_import_exclude,
153+
include: line_include,
154+
assert_receive_timeout: String.to_integer(System.get_env("ELIXIR_ASSERT_TIMEOUT", "300"))
155+
] ++ maybe_seed_opt
156+
157+
ExUnit.start(ex_unit_opts)

lib/ex_unit/test/test_helper.exs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,14 @@
88
Code.require_file("../../elixir/scripts/cover_record.exs", __DIR__)
99
CoverageRecorder.maybe_record("ex_unit")
1010

11-
ExUnit.start(
12-
trace: !!System.get_env("TRACE"),
13-
include: line_include,
14-
exclude: line_exclude,
15-
assert_receive_timeout: String.to_integer(System.get_env("ELIXIR_ASSERT_TIMEOUT", "300"))
16-
)
11+
maybe_seed_opt = if seed = System.get_env("SEED"), do: [seed: String.to_integer(seed)], else: []
12+
13+
ex_unit_opts =
14+
[
15+
trace: !!System.get_env("TRACE"),
16+
include: line_include,
17+
exclude: line_exclude,
18+
assert_receive_timeout: String.to_integer(System.get_env("ELIXIR_ASSERT_TIMEOUT", "300"))
19+
] ++ maybe_seed_opt
20+
21+
ExUnit.start(ex_unit_opts)

lib/iex/test/test_helper.exs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,17 @@ cover_exclude =
3939
[]
4040
end
4141

42-
ExUnit.start(
43-
trace: !!System.get_env("TRACE"),
44-
include: line_include,
45-
exclude: line_exclude ++ erlang_doc_exclude ++ source_exclude ++ cover_exclude,
46-
assert_receive_timeout: String.to_integer(System.get_env("ELIXIR_ASSERT_TIMEOUT", "300"))
47-
)
42+
maybe_seed_opt = if seed = System.get_env("SEED"), do: [seed: String.to_integer(seed)], else: []
43+
44+
ex_unit_opts =
45+
[
46+
trace: !!System.get_env("TRACE"),
47+
include: line_include,
48+
exclude: line_exclude ++ erlang_doc_exclude ++ source_exclude ++ cover_exclude,
49+
assert_receive_timeout: String.to_integer(System.get_env("ELIXIR_ASSERT_TIMEOUT", "300"))
50+
] ++ maybe_seed_opt
51+
52+
ExUnit.start(ex_unit_opts)
4853

4954
defmodule IEx.Case do
5055
use ExUnit.CaseTemplate

lib/logger/test/test_helper.exs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,17 @@
88
Code.require_file("../../elixir/scripts/cover_record.exs", __DIR__)
99
CoverageRecorder.maybe_record("logger")
1010

11-
ExUnit.start(
12-
trace: !!System.get_env("TRACE"),
13-
include: line_include,
14-
exclude: line_exclude,
15-
assert_receive_timeout: String.to_integer(System.get_env("ELIXIR_ASSERT_TIMEOUT", "300"))
16-
)
11+
maybe_seed_opt = if seed = System.get_env("SEED"), do: [seed: String.to_integer(seed)], else: []
12+
13+
ex_unit_opts =
14+
[
15+
trace: !!System.get_env("TRACE"),
16+
include: line_include,
17+
exclude: line_exclude,
18+
assert_receive_timeout: String.to_integer(System.get_env("ELIXIR_ASSERT_TIMEOUT", "300"))
19+
] ++ maybe_seed_opt
20+
21+
ExUnit.start(ex_unit_opts)
1722

1823
defmodule Logger.Case do
1924
use ExUnit.CaseTemplate

lib/mix/test/test_helper.exs

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,14 +54,19 @@ re_import_exclude =
5454
Code.require_file("../../elixir/scripts/cover_record.exs", __DIR__)
5555
CoverageRecorder.maybe_record("mix")
5656

57-
ExUnit.start(
58-
trace: !!System.get_env("TRACE"),
59-
exclude:
60-
epmd_exclude ++
61-
os_exclude ++ git_exclude ++ line_exclude ++ cover_exclude ++ re_import_exclude,
62-
include: line_include,
63-
assert_receive_timeout: String.to_integer(System.get_env("ELIXIR_ASSERT_TIMEOUT", "300"))
64-
)
57+
maybe_seed_opt = if seed = System.get_env("SEED"), do: [seed: String.to_integer(seed)], else: []
58+
59+
ex_unit_opts =
60+
[
61+
trace: !!System.get_env("TRACE"),
62+
exclude:
63+
epmd_exclude ++
64+
os_exclude ++ git_exclude ++ line_exclude ++ cover_exclude ++ re_import_exclude,
65+
include: line_include,
66+
assert_receive_timeout: String.to_integer(System.get_env("ELIXIR_ASSERT_TIMEOUT", "300"))
67+
] ++ maybe_seed_opt
68+
69+
ExUnit.start(ex_unit_opts)
6570

6671
defmodule MixTest.Case do
6772
use ExUnit.CaseTemplate

0 commit comments

Comments
 (0)