Packages

Testcontainers for Gleam: typed container lifecycle with crash-safe cleanup and a native Unix-socket Docker client.

Current section

Files

Jump to
testcontainer src testcontainer@formula.erl
Raw

src/testcontainer@formula.erl

-module(testcontainer@formula).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/testcontainer/formula.gleam").
-export([new/2, spec/1, extract/2]).
-export_type([formula/1]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
-opaque formula(FRQ) :: {formula,
testcontainer@container:container_spec(),
fun((testcontainer@container:container()) -> {ok, FRQ} |
{error, testcontainer@error:error()})}.
-file("src/testcontainer/formula.gleam", 26).
?DOC(
" Create a Formula from a ContainerSpec and an extraction function.\n"
" Called by formula modules (e.g. `testcontainer_formulas/postgres`).\n"
).
-spec new(
testcontainer@container:container_spec(),
fun((testcontainer@container:container()) -> {ok, FRR} |
{error, testcontainer@error:error()})
) -> formula(FRR).
new(Spec, Extract) ->
{formula, Spec, Extract}.
-file("src/testcontainer/formula.gleam", 38).
?DOC(false).
-spec spec(formula(any())) -> testcontainer@container:container_spec().
spec(F) ->
erlang:element(2, F).
-file("src/testcontainer/formula.gleam", 43).
?DOC(false).
-spec extract(formula(FRX), testcontainer@container:container()) -> {ok, FRX} |
{error, testcontainer@error:error()}.
extract(F, C) ->
(erlang:element(3, F))(C).