SkillAgentSearch skills...

Tracee

Trace function calls in concurrent Elixir processes.

Install / Use

/learn @tagbase-io/Tracee
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Tracee

Hex.pm CI Status

This Elixir library offers functionality to trace and assert expected function calls within concurrent Elixir processes.

This allows you to ensure that destructive and/or expensive functions are only called the expected number of times. For more information, see the Elixir forum post that motivated the development of this library.

Installation

Just add tracee to your list of dependencies in mix.exs:

def deps do
  [
    {:tracee, "~> 0.2.0", only: :test}
  ]
end

Usage

defmodule ModuleTest do
  use ExUnit.Case

  import Tracee

  setup :verify_on_exit!

  describe "fun/0" do
    test "calls expensive function only once" do
      expect(AnotherModule, :expensive_fun, 1)

      assert Module.fun()
    end

    test "calls expensive function only once from another process" do
      expect(AnotherModule, :expensive_fun, 1)

      assert fn -> Module.fun() end
             |> Task.async()
             |> Task.await()
    end

    test "never calls expensive function" do
      expect(AnotherModule, :expensive_fun, 1, 0)

      assert Module.fun()
    end
  end
end

License

MIT

Related Skills

View on GitHub
GitHub Stars13
CategoryDevelopment
Updated4mo ago
Forks0

Languages

Elixir

Security Score

92/100

Audited on Nov 11, 2025

No findings