úÎ!y1s÷O      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNNone "$,SXdgSÈ>testcontainers1The parsed JSON output of docker inspect command.testcontainersHandle to a Docker container.Otestcontainers?The container Id assigned by Docker, uniquely identifying this .Ptestcontainers Underlying Q for the resource finalizer.RtestcontainersThe underlying  of this container.StestcontainersEMemoized output of `docker inspect`. This is being calculated lazily.testcontainersHandle to a Docker image.Ttestcontainers9The image tag assigned by Docker. Uniquely identifies an  within Docker.testcontainersBA data type indicating which pipe to scan for a specific log line.testcontainersRefer to logs on STDOUT.testcontainersRefer to logs on STDERR. testcontainersThe exception thrown by 1. testcontainers>The id of the underlying container that was not ready in time. testcontainersThe exception thrown by  waitForLine- in case the expected log line wasn't found.testcontainers#The id of the underlying container.testcontainers6A strategy that describes how to asses readiness of a 9. Allows Users to plug in their definition of readiness.UtestcontainersADumb logger abstraction to allow us to trace container execution.testcontainers>Identifies a container within the Docker runtime. Assigned by  docker run.testcontainers!A description of how to build an .testcontainersA tag to a Docker image.testcontainers,Parameters for a running a Docker container.testcontainers8Docker related functionality is parameterized over this V.testcontainersHFailing to interact with Docker results in this exception being thrown.testcontainers+Exit code of the underlying Docker process.testcontainers%Arguments that were passed to Docker.testcontainersDocker's STDERR output.testcontainers Id of the + that we tried to lookup the port mapping.testcontainersBTextual representation of port mapping we were trying to look up. testcontainersDefault *. Used as base for every Docker container.!testcontainers#Set the name of a Docker container."testcontainers3The command to execute inside the Docker container.#testcontainers+Wether to remove the container once exited.$testcontainers&Set the environment for the container.%testcontainersSet link on the container.&testcontainers#Set exposed ports on the container.Example:  redis  & [ 6379 ] 'testcontainers*Set the waiting strategy on the container.(testcontainers Runs a Docker container from an  and ^. A finalizer is registered so that the container is aways stopped when it goes out of scope.Wtestcontainers\Internal function that runs Docker. Takes care of throwing an exception in case of failure.Xtestcontainers\Internal function that runs Docker. Takes care of throwing an exception in case of failure.)testcontainersKills a Docker container.*testcontainersStops a Docker container.+testcontainersRemove a Docker container.,testcontainers%Get the logs from a Docker container.-testcontainers Build the ] referred to by the argument. If the construction of the image is expensive (e.g. a call to /9) we don't want to repeatedly build the image. Instead, -S can be used to execute the underlying Docker build once and re-use the resulting .YtestcontainersDefault . Doesn't apply anything to to ContainerRequests..testcontainersGet an  from a tag./testcontainersaBuild the image from a build path and an optional path to the Dockerfile (default is Dockerfile)0testcontainers;Build a contextless image only from a Dockerfile passed as Z.[testcontainers!Logger that doesn't log anything.1testcontainers!waitUntilTimeout n waitUntilReady waits nQ seconds for the container to be ready. If the container is not ready by then a   will be thrown.2testcontainerspWaits until the port of a container is ready to accept connections. This combinator should always be used with 1.3testcontainerssA low-level primitive that allows scanning the logs for specific log lines that indicate readiness of a container.The \,s passed to the function argument represent stdout and stderr of the container.4testcontainers9Waits for a specific line to occur in the logs. Throws a  B exception in case the desired line can not be found on the logs.MSay you want to find "Ready to accept connections" in the logs on Stdout try: 6wairForLogLine Stdout ("Ready to accept connections" `]`) 5testcontainers%Blocks until the container is ready. 5/ might throw exceptions depending on the used  on the container.6testcontainers9The image tag assigned by Docker. Uniquely identifies an  within Docker.7testcontainers Returns the id of the container.8testcontainers.Returns the underlying image of the container.9testcontainers“Returns the internal release key used for safely shutting down the container. Use this with care. This function is considered an internal detail.:testcontainers)Looks up the ip address of the container.;testcontainers%Looks up an exposed port on the host.<testcontainers7Runs the `docker inspect` command. Memoizes the result.^testcontainers"Runs the `docker inspect` command.=  !"#$%&'()*+,-./0123456789:;<=678:;9./0- !"#$%&'(<*)+,5 13 42NoneXKtestcontainersImage for Redis database. redis = fromTag "redis:5.0" LtestcontainersImage for Mongo database. mongo = Tag "mongo:4.0.17" -./0KLKL-./0NoneX”?  !"#$%&'()*+,-./0123456789:;<KL?  !"#$%&'()*+,-./0123456789:;<KLNoneSXdoMtestcontainersAllow m to depend on Docker containers. Hspec takes care of initialization and de-initialization of the containers. ÿ„ containers :: MonadDocker m => m Boolean containers = do _redis <- TestContainers.run $ TestContainers.containerRequest TestContainers.redis _kafka <- TestContainers.run $ TestContainers.containerRequest TestContainers.kafka pure True example :: Spec example = around (withContainers containers) $ describe "Example tests" it "first test" $ \isBoolean -> do isBoolean shouldBe True MF allows you naturally scope the handling of containers for your tests.@  !"#$%&'()*+,-./0123456789:;<KLMMNoneSXrïNtestcontainersAllow  m to depend on Docker containers. Tasty takes care of initialization and de-initialization of the containers. ÿz containers :: MonadDocker m => m () containers = do _redis <- TestContainers.run $ TestContainers.containerRequest TestContainers.redis _kafka <- TestContainers.run $ TestContainers.containerRequest TestContainers.kafka pure () example :: TestTree example = withContainers containers $ \runContainers -> testGroup "Example tests" [ testCase "first test" $ do -- Actually runs the container. runContainers testCase "second test" $ do -- Start containers. Tasty makes sure to only initialize once as -- `first test` might already have started them. runContainers ] NF allows you naturally scope the handling of containers for your tests.@  !"#$%&'()*+,-./0123456789:;<KLNN_   !""#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYYZ[ \]^_` abcdefghi jkflmno,testcontainers-0.1.0.0-FMaf1csaVB7YlPlTTHPzGTestContainers.DockerTestContainers.ImageTestContainers.HspecTestContainers.TastyTestContainersHspecSpecTastyTestTreebase Data.Function&(resourcet-1.2.4.2-B3d6if2mvK0991yIwTpqV0Control.Monad.Trans.Resource runResourceT%Control.Monad.Trans.Resource.InternalResIO InspectOutput ContainerImagePipeStdoutStderrTimeoutException$sel:id:TimeoutExceptionUnexpectedEndOfPipe$sel:id:UnexpectedEndOfPipeWaitUntilReady ContainerIdToImageImageTagContainerRequest MonadDockerDockerExceptionInspectUnknownContainerIdInspectOutputInvalidJSONInspectOutputUnexpectedUnknownPortMapping$sel:exitCode:DockerException$sel:args:DockerException$sel:stderr:DockerException$sel:id:DockerException$sel:port:DockerExceptioncontainerRequestsetNamesetCmdsetRmsetEnvsetLink setExpose setWaitingForrunkillstoprmwithLogsbuildfromTagfromBuildContextfromDockerfilewaitUntilTimeoutwaitUntilMappedPortReachable waitWithLogswaitForLogLinewaitUntilReadyimageTag containerIdcontainerImagecontainerReleaseKey containerIp containerPortinspect$fExceptionDockerException$fExceptionUnexpectedEndOfPipe$fExceptionTimeoutException$fEqDockerException$fShowDockerException$fEqUnexpectedEndOfPipe$fShowUnexpectedEndOfPipe$fEqTimeoutException$fShowTimeoutException$fEqPipe $fOrdPipe $fShowPipe $fEqImage $fShowImageredismongowithContainers$sel:id:Container$sel:releaseKey:Container ReleaseKey$sel:image:Container$sel:inspectOutput:Container$sel:tag:ImageLoggerGHC.BaseMonaddockerdockerWithStdindefaultToImage text-1.2.3.1Data.Text.InternalText silentLoggerGHC.IO.Handle.TypesHandleData.Text.Lazy isInfixOfinternalInspect