I wanted to release v0.1.0
of this library in 2023, that’s why it’s still very much WIP, although fully functional already.
There was an intent to bring common_test
to Elixir by @hauleth, but it seems dead.
I needed to use :peer
for some specific tests and I started by adopting it for Elixir users. Soon I figured out, I wanted common_test
to be easily usable from Elixir and apparently we have everything already in place to make it as easy as use Enfiladex
.
Usage: add :enfiladex
dependency and put use Enfiladex.Suite
after use ExUnit.Case
in your tests to make them run by common_test
with newly introduced task MIX_ENV=test iex --sname am -S mix enfiladex
.
Limitations:
on_exit/2
callbacks with captures makes test to fail compiling withuse Enfiladex
(Code.with_diagnostics/2
issue),Enfiladex.{peer/3, multi_peer_/3}
fail from tests with an anonymous function,MIX_ENV=test iex --sname am -S mix enfiladex
(named node) to execute common test,- compiled
beam
files are not yet removed.
I have no issues fixing all but the first one. It’s induced by Code.with_diagnostics/2
leaving error
in the compiler errors accumulator even if handled and processed when executed in compile time.
I need it to detect whether on_exit/2
might be reused as end_per_***
callbacks in common_test
. If it grabs context variables, it should be discarded. I am most likely to file an issue in Elixir core, although I understand this use-case is extremely uncommon.
Everything else is kinda working, as well as exported from Enfiladex
functions
peer(fun, callback \\ [], config \\ [])
multi_peer(fun, callback \\ [], config \\ [])
Both accept a function to be executed on :peer
, a callback, and an optional config:
transfer_config
::boolean()
start_applications
::boolean()
nodes_count
::non_neg_integer()
The docs are pending. Enjoy! enfiladex v0.1.0 — Documentation
P. S. one might test it with running MIX_ENV=test iex --sname am -S mix enfiladex
in enfiladex
itself after git clone
.