Hi!

>From the Github issue <https://github.com/elixir-lang/elixir/issues/11016> 
I posted yesterday:

Mix doesn't support a --repeat option, which makes repeating the previously 
executed tests difficult or inconvenient.

I'm missing such an option because:

   - in an editor it's pretty simple to bind a shortcut to mix test --repeat 
   which aids in TDD
   - in the CLI it's practical to have mix repeat the tests if all 
   succeeded after a mix test --failed
   - likewise after a mix test --stale or any other similar command

To give various examples:

   - $ mix test test/some/particular/file_test.exs:12
   $ mix test --repeat
   # Mix would repeat the test in file_test.exs that was at line 12.
   # It would be great if Mix remembers the actual name of the test and
   # doesn't blindly use the line number which may have shifted after 
   editing
   # and cause an entirely different test to be executed.
   - $ mix test
   # 5  tests failed.
   $ mix test --failed
   # Mix retries the 5 failing tests. 3 out of 5 tests succeed.
   $ mix test --repeat
   # Mix would simply repeat the 5 tests, no matter their status.
   - $ mix test --seed 1234
   $ mix test --repeat
   # Mix would repeat all the tests but also remember to use the given seed.
   # If --seed is never defined then a different seed is used with each 
   --repeat.
   - $ mix test apps/my_sub_app/test
   $ mix test --repeat
   # Mix would repeat the tests for the given umbrella application.
   $ mix test --only external
   $ mix test --repeat
   # Mix would repeat only the tests tagged by "external".
   - $ mix test --stale
   $ mix test --repeat
   # Mix would repeat all the tests if this was the first run with --stale.
   - $ mix test --stale
   # Edit code ...
   $ mix test --stale
   # Mix runs only tests affected by the code changes.
   $ mix test --repeat
   # Mix would repeat only the tests that had been marked as stale.
   - $ mix test ...
   $ mix test --repeat
   $ mix test --repeat
   # Running with --repeat multiple times would naturally repeat the same 
   tests again.
   
The basic premise is always: tests X, Y, Z have been run, therefore X, Y, Z 
will be run again with mix test --repeat.That makes the most sense to me. 
Maybe there are corner cases, like for example, when you run mix test 
inside an umbrella app and then you run mix test --repeat outside in the 
umbrella root. It probably should repeat the tests in that initial umbrella 
app, but what if the other apps have no previously executed tests? Not a 
difficult thing to figure out but I'm sure it would happen.

Thanks in advance for your time and considering my proposal!

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elixir-lang-core+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/976daabe-1ad7-4600-a0e0-8e218febfb7dn%40googlegroups.com.

Reply via email to