mudasobwa

mudasobwa

Creator of Cure

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 with use 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.3.1 — Documentation

P. S. one might test it with running MIX_ENV=test iex --sname am -S mix enfiladex in enfiladex itself after git clone.

Showing Posts 1 to 2

mudasobwa

mudasobwa OP

Creator of Cure

Fixed some cosmetics and introduced tasks.

❯ mix enfiladex.ex_unit
...

Finished in 1.1 seconds (0.00s async, 1.1s sync)
3 tests, 0 failures

Randomized with seed 362051
❯ mix enfiladex

Common Test starting (cwd is /home/aleksei/Proyectos/Elixir/enfiladex)



CWD set to: "/home/aleksei/Proyectos/Elixir/enfiladex/ct_logs/ct_run.enfiladex@ALEKSEI-ThinkPad-X1-Carbon-Gen-9.2024-01-02_11.04.47"

TEST INFO: 1 test(s), 3 case(s) in 0 suite(s)

Testing Elixir.enfiladex.Elixir.Enfiladex.Test.Suite: Starting test, 3 test cases
...Testing Elixir.enfiladex.Elixir.Enfiladex.Test.Suite: TEST COMPLETE, 3 ok, 0 failed of 3 test cases

Updating /home/aleksei/Proyectos/Elixir/enfiladex/ct_logs/index.html ... done
Updating /home/aleksei/Proyectos/Elixir/enfiladex/ct_logs/all_runs.html ... done
[{3, 0, {0, 0}}]

... in both cases are passed tests.

mudasobwa

mudasobwa OP

Creator of Cure

I am glad to introduce the first stable release, Enfiladex v0.2.0.

It has helpers to run functions on freshly spawned remote nodes via Enfiladex.peer/3 and Enfiladex.multi_peer/3 as well as spawn nodes with Enfiladex.start_peers/1 (to be stopped with Enfiladex.stop_peers/1 afterward.)

Also, it might be used as a drop-in support for both ExUnit and Erlang Common Test simultaneously (with a known limitation of freaky on_exit/2 handling when the function grabs a context, I am working on it.)

Enfiladex is tested with itself, providing both Common Test and ExUnit tests at once.

Example of using spawned node in cloister tests.

Comments, issue reports, and feature requests are very welcome.

— All posts loaded —

Where Next? Top

Trending in Announcing Top

woylie
Flop is an Elixir library that applies filtering, ordering and pagination parameters to your Ecto queries. offset-based pagination with...
New
MRdotB
I needed to reuse React components from my Chrome extension in my Phoenix/LiveView backend. I noticed that for Svelte/Vue, there are live...
New
woylie
I released Doggo, a collection of unstyled Phoenix components. https://github.com/woylie/doggo Features Unstyled Phoenix components....
New
GenericJam
Edit: 2026 May 15 - This post is archived. Mob is alive!! Main docs: mob v0.7.11 — Documentation A bit of explanation for the slightly c...
New
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
ahamez
Hi everyone, I’ve been working on this protobuf library for 3 years. We use it in the company I work for, EasyMile, to communicate with ...
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

Other Trending Topics Top

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
mhanberg
Hi everyone! The first release candidate for the Expert language server project is now available! We’ve published a press release detai...
New
webofbits
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself. My main conc...
#ai
New
AstonJ
This showed up on my feed.. anyone heard of it? Just hype? Ox Alpha is a reasoning model designed for coding, sustained ag...
New
bartblast
Hey folks, I just published a post about Hologram’s funding and where the project goes next - the short version: Curiosum as Main Spons...
New
budgie
A little off-topic, but I feel like people here have a good head on their shoulders. I used to be quite good at making software. Was luc...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews