bokner

bokner

Hello everyone,

I’m trying to run ExUnit tests from the shell, and I almost got it working:

iex(2)> ExUnit.start(autorun: false)                                                                            
:ok
iex(3)> test_file = "test/sample_test.exs"
"test/sample_test.exs"
iex(4)> Mix.Compilers.Test.require_and_run([test_file], ["test"], formatters: [ExUnit.CLIFormatter])

........

Finished in 3.6 seconds
8 tests, 0 failures
{:ok, %{excluded: 0, failures: 0, skipped: 0, total: 8}}

So far so good, but the second run of Mix.Compilers.Test.require_and_run/3 doesn’t seem to do anything:

iex(5)> Mix.Compilers.Test.require_and_run([test_file], ["test"], formatters: [ExUnit.CLIFormatter])

Finished in 0.00 seconds
0 failures

{:ok, %{excluded: 0, failures: 0, skipped: 0, total: 0}}

It looks like the test compiler caches the test results. If that’s the case, can it be forced to invalidate it and run the tests from scratch again?

Showing Posts 1 to 7

Ninigi

Ninigi

Wild guess here, but I think require_and_run might check if all the files are required, and then chain it with a literal && - so if the files are already required, it might return false and the second part would not be executed.

Like I said, idk, but it makes sense to me.

EDIT: Maybe the second time just run .run? Another wild guess.

EDIT2: and just because I am curious, why do you need this?

bokner

bokner OP

Did you mean ExUnit.run ? Unfortunately, it didn’t help.
There are currently 2 reasons as to why I want to do this:

  1. to be able to pass the results of the tests, for instance, show the tests running on a web page;
  2. to be able to debug the unit tests with tracing tools, like Rexbug/redbug etc.
Ninigi

Ninigi

Unfortunately I don’ t really know what you are talking about - but it sounds like a CI Server.

I like to actually be in charge of when to deploy updates or upgrades (which is something a UI server should consider.)

Kind of weird that nobody has implemented anything yet, but I guess you are on your own for now.

axelson

axelson

Scenic Core Team

Interesting idea! Mix tasks don’t re-execute by default. Try running Mix.Task.clear/0 before require_and_run (docs: Mix.Task — Mix v1.20.2)

bokner

bokner OP

Thanks!
Unfortunately, no luck with Mix.Task.clear/0.

paulanthonywilson

paulanthonywilson

I wanted to do this because of the apps I’m working in at the moment has a long startup time, making TDD painful. Someone pointed me to a solution based on https://olshansky.medium.com/testiex-easier-test-driven-development-in-elixir-761cd1a9f11 and it works like treat.

filipe

filipe

basically you have to load it again to rerun the test

Code.load_file(test_file)

or even better compile_file, since load_file is depricated

Code.compile_file(test_file")

then you can rerun

Mix.Compilers.Test.require_and_run([test_file], ["test"], formatters: [ExUnit.CLIFormatter])
— All posts loaded —

Where Next? Top

Trending in Questions Top

RSP87
I’m working on a project that simulates the bumbl example in the programming phoenix book. It acts almost like an email client. We have a...
New
nseaSeb
Hello, I know there is an approach for handling lists that allows for optimized traversal, but I can’t recall the specific method (somet...
New
kpanic
Hi everyone, I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding. I sta...
New
brecabral
Documentation While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
velrest
So my question is quite simple and i have found no conclusive answer on forum, google or AI. Should we use :erlang.float for Integer to ...
New
asweet-confluent
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
ryanwinchester
apply_graft/2 doesn’t rewrite an add_many sub-workflow’s deps on an add step. Grafted jobs cancel with “upstream job was deleted” Version...
New

Other Trending Topics Top

JesseHerrick
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Dmk
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New

Latest on Elixir Forum

Elixir Forum

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews