testcontainer/formula

Types

A Formula combines a ContainerSpec with a typed extraction function.

When testcontainer.with_formula/2 starts the container it calls extract on the running Container to produce a service-specific output type (e.g. PostgresContainer, RedisContainer).

Formulas are defined in the companion package testcontainer_formulas, not in this core package. The core only defines the type and the lifecycle entry point.

use pg <- testcontainer.with_formula(postgres.formula(config)) // pg has type PostgresContainer with .connection_url, .host, .port, …

pub opaque type Formula(output)

A StandaloneFormula manages a resource with its own acquire/release lifecycle, independent of a single Docker container. Use this for resources like docker-compose stacks that are not backed by a single container spec.

Unlike Formula, StandaloneFormula is generic in its error type so callers can surface domain-specific errors without mapping them into testcontainer/error.Error.

use stack <- testcontainer.with_standalone_formula(compose_formula)

pub opaque type StandaloneFormula(output, err)

Values

pub fn new(
  spec: container.ContainerSpec,
  extract: fn(container.Container) -> Result(output, error.Error),
) -> Formula(output)

Create a Formula from a ContainerSpec and an extraction function. Called by formula modules (e.g. testcontainer_formulas/postgres).

pub fn new_standalone(
  acquire: fn() -> Result(output, err),
  release: fn() -> Result(Nil, err),
) -> StandaloneFormula(output, err)

Create a StandaloneFormula from acquire and release functions. acquire is called once to obtain the resource; release is always called after the body finishes, even on error.

Search Document