Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I make Elixir mix test output more verbose?

In my Elixir/Phoenix app, when I run

mix test 

I get output like:

$ mix test ....  Finished in 0.09 seconds 4 tests, 0 failures 

with dots for each test that succeeded.

How do I output the names of the tests that succeed instead?

In Rails with rspec I used to do this with a .rspec file in the directory that looked like:

$ cat .rspec --color -fd --tty 

Is there an equivalent in Elixir?

like image 833
joseph.hainline Avatar asked Dec 27 '16 18:12

joseph.hainline


2 Answers

To print the names of the passing tests, you can pass --trace argument to mix test. For example, here's the output of mix test --trace on the current master branch of httpoison package:

$ mix test --trace  HTTPoisonTest Starting HTTParrot on port 8080 Starting HTTParrot on port 8433 (SSL) Starting HTTParrot on unix socket httparrot.sock   * test post binary body (97.1ms)   * test https scheme (57.8ms)   * test option follow redirect relative url (4.0ms)   * test option follow redirect absolute url (2.6ms)   * test put (0.6ms)   * test request headers as a map (0.5ms)   * test get (1.5ms)   * test head (0.5ms)   * test delete (1.5ms)   * test asynchronous redirected get request (2.3ms)   * test send cookies (4.9ms)   * test post charlist body (0.7ms)   * test patch (0.5ms)   * test post form data (0.6ms)   * test exception (6.0ms)   * test get with params (2.8ms)   * test asynchronous request (0.5ms)   * test explicit http scheme (0.5ms)   * test put without body (0.8ms)   * test multipart upload (8.5ms)   * test options (0.5ms)   * test basic_auth hackney option (1.6ms)   * test http+unix scheme (4.4ms)   * test asynchronous request with explicit streaming using [async: :once] (304.1ms)   * test cached request (2.1ms)   * test post streaming body (3.8ms)   * test char list URL (0.7ms)  HTTPoisonBaseTest   * test request body using ExampleDefp (124.1ms)   * test passing ssl option (110.9ms)   * test passing connect_timeout option (109.9ms)   * test passing recv_timeout option (103.4ms)   * test passing proxy option (106.6ms)   * test passing follow_redirect option (105.3ms)   * test passing proxy option with proxy_auth (106.9ms)   * test request raises error tuple (104.9ms)   * test passing max_redirect option (115.6ms)   * test request body using Example (111.6ms)   Finished in 2.0 seconds 37 tests, 0 failures  Randomized with seed 264353 

You can also set this option to true by default by changing the ExUnit.start line in test_helper.exs:

ExUnit.start(trace: true) 

If you want completely custom output, you can implement your own formatter (see https://github.com/elixir-lang/elixir/blob/master/lib/ex_unit/lib/ex_unit/cli_formatter.ex for an example; that's the default formatter) and configure ExUnit to use it:

ExUnit.start(formatters: [YourFormatterModule]) 
like image 179
Dogbert Avatar answered Sep 23 '22 01:09

Dogbert


--trace is the option you're looking for: https://hexdocs.pm/mix/Mix.Tasks.Test.html

Hope that helps!

like image 39
Paweł Dawczak Avatar answered Sep 25 '22 01:09

Paweł Dawczak