19

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
Kernael
  • 3,270
  • 4
  • 22
  • 42

2 Answers2

23

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

Community
  • 1
  • 1
Szymon Jeż
  • 8,273
  • 4
  • 42
  • 60
9

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

Nitrodist
  • 1,585
  • 5
  • 24
  • 34