Packages
testcontainers
2.3.1
2.3.1
2.3.0
2.2.0
2.1.0
2.1.0-rc1
2.0.0
2.0.0-rc3
2.0.0-rc2
2.0.0-rc
1.14.1
1.14.0
1.13.5
1.13.4
1.13.3
1.13.2
1.13.1
1.13.0
1.12.0
1.11.8
1.11.7
1.11.6
1.11.5
1.11.4
1.11.3
1.11.2
1.11.1
1.11.0
1.10.5
1.10.4
1.10.3
1.10.2
1.10.1
1.10.0
1.9.0
1.8.4
1.8.3
1.8.2
1.8.1
1.8.0
1.7.0
1.6.0
1.5.1
1.5.0
1.4.2
1.4.1
1.4.0
1.3.1
1.3.0
1.2.11
1.2.10
1.2.9
1.2.8
1.2.7
1.2.6
1.2.5
1.2.4
1.2.3
1.2.2
1.2.1
1.2.0
1.1.3
1.1.2
1.1.1
1.1.0
1.0.1
1.0.0
1.0.0-beta.1
1.0.0-beta
0.9.3
0.9.2
0.9.1
0.9.0
Testcontainers is an Elixir library that supports ExUnit tests, providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container.
Current section
Files
Jump to
Current section
Files
lib/container/protocols/container_builder_helper.ex
defmodule Testcontainers.ContainerBuilderHelper do
@moduledoc false
import Testcontainers.Constants
alias Testcontainers.Container
alias Testcontainers.ContainerBuilder
alias Testcontainers.Util.Hash
def build(builder, state) when is_map(state) and is_struct(builder) do
config =
ContainerBuilder.build(builder)
|> Container.with_label(container_lang_label(), container_lang_value())
|> Container.with_label(container_label(), "#{true}")
if config.reuse &&
("true" == Map.get(state.properties, "testcontainers.reuse.enable", "false") ||
config.force_reuse) do
hash = Hash.struct_to_hash(config)
config
|> Container.with_label(container_reuse(), "true")
|> Container.with_label(container_reuse_hash_label(), hash)
|> Container.with_label(container_session_id_label(), state.session_id)
|> Container.with_label(container_version_label(), library_version())
|> Kernel.then(&{:reuse, &1, hash})
else
config
|> Container.with_label(container_reuse(), "false")
|> Container.with_label(container_session_id_label(), state.session_id)
|> Container.with_label(container_version_label(), library_version())
|> Kernel.then(&{:noreuse, &1, nil})
end
end
end