Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

No timeout in tests

Tags:

elixir

I like to use breakpoints inside my tests to see what's going wrong, but the 30 second timeout on the tests prevents me to look around freely.

Is there a way to disable it ? The following doesn't work :

@tag timeout: 0
test "something" do 
  assert something == 42
end
like image 544
Kernael Avatar asked Jul 09 '15 14:07

Kernael


2 Answers

UPDATE:

With Elixir 1.1, you will also be able to run tests with the --trace option: mix test --trace. It will automatically set timeout to infinity.

– José Valim

PRE Elixir 1.1:

Maybe try using:

ExUnit.configure(timeout: 600_000)
# or even:
ExUnit.configure(timeout: :infinity)

Docu and source code

like image 117
Szymon Jeż Avatar answered Nov 25 '22 05:11

Szymon Jeż


Creating a new answer since two separate editors on Stackoverflow think that me editing the accepted answer with the actual docs embedded in the code "was intended to address the author of the post and makes no sense as an edit" despite the updated answer being wholly written by the docs authors in the Elixir git repository (lol) and it "was not more accurate" despite giving 4(!) additional ways to set the timeout that isn't outlined in the answer or the comments.

The five ways:

  1. per test by setting "@tag timeout: x" (accepts :infinity)
  2. per test module by setting "@moduletag timeout: x" (accepts :infinity)
  3. globally via "ExUnit.start(timeout: x)" configuration
  4. by running "mix test --timeout x" which sets timeout
  5. or by running "mix test --trace" which sets timeout to infinity

(useful when using IEx.pry/0)

https://github.com/elixir-lang/elixir/blob/v1.10/lib/ex_unit/lib/ex_unit.ex#L144

like image 29
Nitrodist Avatar answered Nov 25 '22 04:11

Nitrodist