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, new_standalone/2, spec/1, extract/2, standalone_acquire/1, standalone_release/1]).
-export_type([formula/1, standalone_formula/2]).
-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()})}.
-opaque standalone_formula(FRR, FRS) :: {standalone_formula,
fun(() -> {ok, FRR} | {error, FRS}),
fun(() -> {ok, nil} | {error, FRS})}.
-file("src/testcontainer/formula.gleam", 44).
?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, FRT} |
{error, testcontainer@error:error()})
) -> formula(FRT).
new(Spec, Extract) ->
{formula, Spec, Extract}.
-file("src/testcontainer/formula.gleam", 54).
?DOC(
" Create a StandaloneFormula from acquire and release functions.\n"
" `acquire` is called once to obtain the resource; `release` is always\n"
" called after the body finishes, even on error.\n"
).
-spec new_standalone(
fun(() -> {ok, FRX} | {error, FRY}),
fun(() -> {ok, nil} | {error, FRY})
) -> standalone_formula(FRX, FRY).
new_standalone(Acquire, Release) ->
{standalone_formula, Acquire, Release}.
-file("src/testcontainer/formula.gleam", 66).
?DOC(false).
-spec spec(formula(any())) -> testcontainer@container:container_spec().
spec(F) ->
erlang:element(2, F).
-file("src/testcontainer/formula.gleam", 71).
?DOC(false).
-spec extract(formula(FSH), testcontainer@container:container()) -> {ok, FSH} |
{error, testcontainer@error:error()}.
extract(F, C) ->
(erlang:element(3, F))(C).
-file("src/testcontainer/formula.gleam", 79).
?DOC(false).
-spec standalone_acquire(standalone_formula(FSL, FSM)) -> {ok, FSL} |
{error, FSM}.
standalone_acquire(F) ->
(erlang:element(2, F))().
-file("src/testcontainer/formula.gleam", 86).
?DOC(false).
-spec standalone_release(standalone_formula(any(), FSS)) -> {ok, nil} |
{error, FSS}.
standalone_release(F) ->
(erlang:element(3, F))().