Îõ³h*Q:LÍ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆ Ç È É Ê Ë Ì 0.5.1.0  Safe-Inferred"'ÀÒpÍtestcontainersRyuk based resource reapertestcontainersÛReaper for safe resource cleanup. This type is exposed to allow users to create their own Reapers.testcontainers Registers a  label = valueÆ pair for reaping. Reaping happens when closing/de-allocating of the  through Î.testcontainersîAdditional labels to add to any Docker resource on creation. Adding the labels is necessary in order for the  to find resources for cleanup.testcontainersîAdditional labels to add to any Docker resource on creation. Adding the labels is necessary in order for the  to find resources for cleanup.testcontainersTag for the ryuk image testcontainers!Exposed port for the ryuk reaper. testcontainersCreates a new  from a host and port. testcontainersHosttestcontainersPortÏtestcontainers Session id   Safe-InferredÀÒ „ testcontainers/Traces execution within testcontainers library. testcontainersÀType representing various events during testcontainer execution. testcontainersThe low-level invocation of docker command , TraceDockerInvocation args stdin exitcode testcontainers7Preparations to follow the logs for a certain containertestcontainers+Line written to STDOUT by a Docker process.testcontainers+Line written to STDERR by a Docker process.testcontainersÙWaiting for a container to become ready. Attached with the timeout to wait (in seconds).testcontainersOpening sockettestcontainersCall HTTP endpointtestcontainersConstruct a new   from a tracing function.     Safe-Inferred '/ÀÃÅÆÍÒÚÛ ­testcontainers&Configuration for defaulting behavior.testcontainersßThe number of seconds to maximally wait for a container to become ready. Default is `Just 60`.Nothing  = waits indefinitely.testcontainers/Traces execution inside testcontainers library.testcontainersHow to obtain a testcontainers8Docker related functionality is parameterized over this Ð/. Since 0.5.0.0 this is just a type alias for m ~  . testcontainers1The heart and soul of the testcontainers library.!testcontainersRun a  ÿ action. Any container spun up during the computation are guaranteed to be shutdown and cleaned up once this function returns. ! ! Safe-Inferred±otestcontainersDefault configuration.ptestcontainersDefault configuration.qtestcontainersØAutoselect the default configuration depending on wether you use Docker For Mac or not.opqopq Safe-Inferred"'À/testcontainers#An abstraction for forwarding logs.0testcontainersÂA data type indicating which pipe to scan for a specific log line.1testcontainersRefer to logs on STDOUT.2testcontainersRefer to logs on STDERR.3testcontainersÈFailing 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  Container+ that we tried to lookup the port mapping.>testcontainersÂTextual representation of port mapping we were trying to look up.?testcontainers1The parsed JSON output of docker inspect command.@testcontainers>Identifies a container within the Docker runtime. Assigned by  docker run.Atestcontainers:;@?ADE012/FGBC3456789=<>:;@?ADE012/FGBC Safe-Inferred"À" NtestcontainersState of a Docker container.OtestcontainersStatus of a Docker container.ÑtestcontainersÏAn exception thrown in case the State object is invalid and couldn't be parsed.Xtestcontainers Extract the N of a Docker container from an ?.Ytestcontainers Returns the O of container.Ztestcontainers1Whether a container was killed by the OOM killer.[testcontainers\testcontainers]testcontainers^testcontainers_testcontainersNXOWUPQRSTVYZ[\]^_NXOWUPQRSTVYZ[\]^_ Safe-Inferred"%&'ëetestcontainers-Parameters for creating a new Docker network.ftestcontainersHandle to a Docker network.gtestcontainersReturns the id of the network.htestcontainers5Default parameters for creating a new Docker network.itestcontainers#Enable IPv6 for the Docker network.jtestcontainers0Driver to manage the Network (default "bridge").ktestcontainers Creates a f from an existing A. Note that the f is not managed by the  7 monad and as such is not being cleaned up afterwards.ltestcontainersCreates a new f from a e. AfgklehjiC AfgklehjiC Safe-Inferred"%'/6ÀÂÃÄÍÒØÛÝéAJÎntestcontainersSets up a Ryuk .rtestcontainersHandle to a Docker container.Òtestcontainers?The container Id assigned by Docker, uniquely identifying this r.Ótestcontainers Underlying Ô for the resource finalizer.ÕtestcontainersThe underlying s of this container.Ötestcontainers4Configuration used to create and run this container.×testcontainersÅMemoized output of `docker inspect`. This is being calculated lazily.stestcontainersHandle to a Docker image.Øtestcontainers9The image tag assigned by Docker. Uniquely identifies an s within Docker.ÙtestcontainersThe exception thrown by Ÿ.Útestcontainers>The id of the underlying container that was not ready in time.ttestcontainersThe exception thrown by ¡.vtestcontainers>The id of the underlying container that was not ready in time.wtestcontainersThe exception thrown by  waitForLine- in case the expected log line wasn't found.ytestcontainers#The id of the underlying container.ztestcontainers6A strategy that describes how to asses readiness of a r9. Allows Users to plug in their definition of readiness.Ûtestcontainers(A blocking action that attests readinessÜtestcontainersçIn order to keep readiness checking at bay this node ensures checks are not exceeding their time share{testcontainers!A description of how to build an s.|testcontainersA tag to a Docker image.}testcontainersDefintion of a }Ã. Allows for specifying ports using various protocols. Due to the Ý and Þ1 instance allows for convenient Haskell literals. "80" :: Port80/tcp"80/tcp" :: Port80/tcp 80 :: Port80/tcp"90/udp" :: Port90/udpßtestcontainers+Parameters for a naming a Docker container.testcontainers,Parameters for a running a Docker container.‚testcontainersDefault *. Used as base for every Docker container.ƒtestcontainersÃSet the name of a Docker container. This is equivalent to invoking  docker run with the --name parameter.„testcontainersÃSet the name of a Docker container. This is equivalent to invoking  docker run with the --name parameter.…testcontainersØSet the name randomly given of a Docker container. This is equivalent to omitting the --name parameter calling  docker run.†testcontainersÖSet the name randomly suffixed of a Docker container. This is equivalent to invoking  docker run with the --name parameter.‡testcontainersêThe command to execute inside the Docker container. This is the equivalent of passing the command on the  docker run invocation.ˆtestcontainersÌSet the memory limit of a Docker container. This is equivalent to invoking  docker run with the --memory parameter.‰testcontainersÊSet the cpus limit of a Docker container. This is equivalent to invoking  docker run with the --cpus parameter.ŠtestcontainersåThe volume mounts to link to Docker container. This is the equivalent of passing the command on the  docker run -v invocation.‹testcontainersËWether to remove the container once exited. This is equivalent to passing --rm to  docker run. (default is à).ŒtestcontainersÅSet the environment for the container. This is equivalent to passing --env key=value to  docker run.testcontainers0Sets the working directory inside the container.ŽtestcontainersÎSet the network the container will connect to. This is equivalent to passing --network network_name to  docker run.testcontainersÉSet the network alias for this container. This is equivalent to passing --network-alias alias to  docker run.testcontainersSets labels for a container‘testcontainers9Set link on the container. This is equivalent to passing --link other_container to  docker run.’testcontainers%Forwards container logs to the given / once ran.“testcontainersÂSet exposed ports on the container. This is equivalent to setting --publish $PORT to  docker runÇ. Docker assigns a random port for the host port. You will have to use « and ®" to connect to the published port.  container <- • $ ‚ redis & “* [ 6379 ] let (redisHost, redisPort) = (« container, ®0 container 6379) print (redisHost, redisPort) ”testcontainers Set the waiting strategy on the container. Depending on a Docker container it can take some time until the provided service is ready. You will want to use to ”. to block until the container is ready to use.•testcontainers Runs a Docker container from an s and ý. A finalizer is registered so that the container is aways stopped when it goes out of scope. This function is essentially  docker run.–testcontainersKills a Docker container. – is essentially  docker kill.—testcontainersStops a Docker container. — is essentially  docker stop.˜testcontainersRemove a Docker container. ˜ is essentially  docker rm -f™testcontainersÍAccess STDOUT and STDERR of a running Docker container. This is essentially  docker logs under the hood.štestcontainers Build the sÝ 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, šÓ can be used to execute the underlying Docker build once and re-use the resulting s.átestcontainersDefault {. Doesn't apply anything to to ContainerRequests.›testcontainersGet an s from a tag. This runs docker pull --quiet tag to obtain an image id.œtestcontainersGet an s$ from an image id. This doesn't run  docker pull. or any other Docker command on construction.testcontainersáBuild the image from a build path and an optional path to the Dockerfile (default is Dockerfile)žtestcontainers;Build a contextless image only from a Dockerfile passed as â.Ÿtestcontainers waitForStateØ waits for a certain state of the container. If the container reaches a terminal state Ù will be thrown. testcontainerssuccessfulExit, is supposed to be used in conjunction with Ÿ.¡testcontainers!waitUntilTimeout n waitUntilReady waits nÑ seconds for the container to be ready. If the container is not ready by then a t will be thrown.¢testcontainersÓWaits for a specific http status code. This combinator should always be used with ¡.£testcontainersðWaits until the port of a container is ready to accept connections. This combinator should always be used with ¡.¤testcontainersóA 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.¥testcontainers9Waits for a specific line to occur in the logs. Throws a w exception in case the desired line can not be found on the logs.ÍSay you want to find "Ready to accept connections" in the logs on Stdout try: 5waitForLogLine Stdout ("Ready to accept connections" ä) ¦testcontainers%Blocks until the container is ready. ¦/ might throw exceptions depending on the used z on the container.&In case the readiness check times out ¦ throws a t.§testcontainers9The image tag assigned by Docker. Uniquely identifies an s within Docker.¨testcontainers Returns the id of the container.©testcontainers.Returns the underlying image of the container.ªtestcontainers“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.åtestcontainers7Get the IP address of a running Docker container using docker inspect.¬testcontainersÀGet the container's network alias. Takes the first alias found.­testcontainersæGet the IP address for the container's gateway, i.e. the host. Takes the first gateway address found.®testcontainers%Looks up an exposed port on the host.¯testcontainersÏReturns the domain and port exposing the given container's port. Differs from ® in that ¯é will return the container's domain and port if the program is running in the same network. Otherwise, ¯. will use the exposed port on the Docker host.°testcontainers7Runs the `docker inspect` command. Memoizes the result.ætestcontainers"Runs the `docker inspect` command.çtestcontainers9Detects if we are actually running in a Docker container.³testcontainers/A cursed but handy instance supporting literal }s of them form "8080",  "8080/udp",  "8080/tcp".´testcontainers/A cursed but handy instance supporting literal }s.¹testcontainersºtestcontainers¢testcontainersPorttestcontainersURL pathtestcontainersAcceptable status codes‡ pq |s§}~€@r¨©¬­«®¯ªNOWUPQRSTV]\_Z[^Y {›œžš3456789=<>:;‚Cƒ„†…‡ˆ‰Š‹ŒŽ‘“”•/F’Afeghlkij?°—–˜™z¦tuv¡Ÿ¤012wxy¥±²£¢n‡ pq |s§}~€@r¨©¬­«®¯ªNOWUPQRSTV]\_Z[^Y {›œžš3456789=<>:;‚Cƒ„†…‡ˆ‰Š‹ŒŽ‘“”•/F’Afeghlkij?°—–˜™z¦tuv¡Ÿ¤012wxy¥±²£¢n  Safe-Inferred"CŽÆtestcontainersImage for Redis database. redis = fromTag "redis:5.0" ÇtestcontainersImage for Mongo database. mongo = Tag "mongo:4.0.17" ÆÇs{š›œž ÆÇs{š›œž  Safe-Inferred%éC×|s§{›œš‚Cƒ„†…‡Š‹Œˆ‰Ž‘“”’/FehjifAlk}~€r¬­«®¯ª©•?°—–˜™z¡NOWUPQRSTV]\_Z[^YŸ 012¤¥£¢ pq 3456789=<>:;tuvwxy±²ÆÇ|s§{›œš‚Cƒ„†…‡Š‹Œˆ‰Ž‘“”’/FehjifAlk}~€r¬­«®¯ª©•?°—–˜™z¡NOWUPQRSTV]\_Z[^YŸ 012¤¥£¢ pq 3456789=<>:;tuvwxy±²ÆÇ  Safe-InferredÃØÝF"ÈtestcontainersTasty èÐ that adds useful options to control defaults within the TetContainers library. main :: IO () main = é (È : ê) tests ‚ÈÉNOWUPQRSTV|s{/efA}~€r?z012  3456789=<>:;tuvwxy —•šŒ§›œ‚Cƒ„†…‡Š‹ˆ‰Ž‘“”’Fhjilk¬­«®¯ª©°–˜™¡]\_Z[^YŸ ¤¥£¢pq±²ÆÇ‚ÈÉNOWUPQRSTV|s{/efA}~€r?z012  3456789=<>:;tuvwxy —•šŒ§›œ‚Cƒ„†…‡Š‹ˆ‰Ž‘“”’Fhjilk¬­«®¯ª©°–˜™¡]\_Z[^YŸ ¤¥£¢pq±²ÆÇ  Safe-InferredÃØÝKYÌtestcontainersAllow í to depend on Docker containers. Hspec takes care of initialization and de-initialization of the containers. ™data ContainerPorts = ContainerPorts { redisPort :: Int, kafkaPort :: Int } containers :: MonadDocker m => m ContainerPorts containers = do redis <- TestContainers.run $ TestContainers.containerRequest TestContainers.redis kafka <- TestContainers.run $ TestContainers.containerRequest TestContainers.kafka pure ContainerPorts { redisPort = TestContainers.containerPort redis "6379/tcp", kafkaPort = TestContainers.containerPort kafka "9092/tcp" } example :: Spec example = around (withContainers containers) $ describe "Example tests" it "some test that uses redis and kafka" $ ContainerPorts{redisPort, kafkaPort} -> do redisPort  shouldNotBe kafkaPort ÌÆ allows you naturally scope the handling of containers for your tests.‚ÌNOWUPQRSTV|s{/efA}~€r?z012  3456789=<>:;tuvwxy—•šŒ§›œ‚Cƒ„†…‡Š‹ˆ‰Ž‘“”’Fhjilk¬­«®¯ª©°–˜™¡]\_Z[^YŸ ¤¥£¢pq±²ÆÇÌë !"#$%&'()*+,-../0123456789:;<=>?@ABCDEFFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…††‡ˆˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔ Õ Ö × Ø Ù Ú ØÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùõúûüýþÿ€ÿ‚ƒÿ„…†-testcontainers-0.5.1.0-CTc1bKuU9KiA28n0T8MdObTestContainers.DockerTestContainers.Docker.ReaperTestContainers.TraceTestContainers.MonadTestContainers.Docker.InternalTestContainers.Docker.StateTestContainers.Docker.NetworkTestContainers.ConfigTestContainers.ImageTestContainers.TastyTestContainers.HspectestcontainersTestContainersHspecSpecbase Data.Function&%resourcet-1.3.0-J1x8HMLOo31wzhYs070eF%Control.Monad.Trans.Resource.InternalResIOControl.Monad.Trans.Resource runResourceTReaperregisterlabels reaperLabels ryukImageTagryukPort newRyukReaperTracerTraceTraceDockerInvocationTraceDockerFollowLogsTraceDockerStdoutTraceDockerStderrTraceWaitUntilReadyTraceOpenSocket TraceHttpCall newTracer withTrace$fSemigroupTracer$fMonoidTracer $fEqTrace $fShowTraceConfigconfigDefaultWaitTimeout configTracerconfigCreateReaper MonadDocker TestContainerrunTestContainer$fMonoidTestContainer$fSemigroupTestContainer $fMonadReaderConfigTestContainer$fMonadUnliftIOTestContainer$fFunctorTestContainer$fApplicativeTestContainer$fMonadTestContainer$fMonadIOTestContainer$fMonadMaskTestContainer$fMonadCatchTestContainer$fMonadThrowTestContainer$fMonadResourceTestContainer$fMonadFixTestContainer LogConsumerPipeStdoutStderrDockerExceptionInspectUnknownContainerIdInspectOutputInvalidJSONInspectOutputMissingNetworkInspectOutputUnexpectedUnknownPortMappingexitCodeargsstderridport InspectOutput ContainerId NetworkId WithoutReaper withoutReaperdockerdockerWithStdinconsoleLogConsumerdockerFollowLogs$fExceptionDockerException$fEqPipe $fOrdPipe $fShowPipe$fEqDockerException$fShowDockerExceptionStateStatusCreatedRunningPaused RestartingRemovingExitedDeadOthercontainerState stateStatusstateOOMKilledstatePid stateExitCode stateErrorstateStartedAtstateFinishedAt $fExceptionStateInvalidException $fEqStatus $fShowStatus$fEqStateInvalidException$fShowStateInvalidExceptionNetworkRequestNetwork networkIdnetworkRequestwithIpv6 withDriverfromExistingNetwork createNetwork$fWithoutReaperNetworkRequestcreateRyukReaper defaultConfigdefaultDockerConfigdetermineConfig ContainerImageTimeoutException$sel:id:TimeoutExceptionUnexpectedEndOfPipe$sel:id:UnexpectedEndOfPipeWaitUntilReadyToImageImageTagPort$sel:port:Port$sel:protocol:PortContainerRequestcontainerRequestsetName setFixedName setRandomNamesetSuffixedNamesetCmd setMemorysetCpussetVolumeMountssetRmsetEnvwithWorkingDirectory withNetworkwithNetworkAlias withLabelssetLinkwithFollowLogs setExpose setWaitingForrunkillstoprmwithLogsbuildfromTag fromImageIdfromBuildContextfromDockerfile waitForStatesuccessfulExitwaitUntilTimeout waitForHttpwaitUntilMappedPortReachable waitWithLogswaitForLogLinewaitUntilReadyimageTag containerIdcontainerImagecontainerReleaseKey containerIpcontainerAliascontainerGateway containerPortcontainerAddressinspect dockerHostOsisDockerOnLinux$fIsStringPort $fNumPort $fShowPort$fExceptionUnexpectedEndOfPipe$fExceptionTimeoutException $fExceptionInvalidStateException$fMonoidWaitUntilReady$fSemigroupWaitUntilReady$fWithoutReaperContainerRequest $fEqImage $fShowImage$fEqInvalidStateException$fShowInvalidStateException$fEqTimeoutException$fShowTimeoutException$fEqUnexpectedEndOfPipe$fShowUnexpectedEndOfPipe$fEqPort $fOrdPortredismongo ingredientwithContainers$fIsOptionDefaultTimeout$fIsOptionTraceRyuk MonadResource newReaperGHC.BaseMonadStateInvalidException$sel:id:Container$sel:releaseKey:Container ReleaseKey$sel:image:Container$sel:config:Container$sel:inspectOutput:Container$sel:tag:ImageInvalidStateException$sel:id:InvalidStateException WaitReadyWaitUntilTimeoutGHC.NumNum Data.StringIsStringNamingStrategyghc-prim GHC.TypesTruedefaultToImage text-2.0.2Data.Text.InternalTextGHC.IO.Handle.TypesHandleData.Text.Lazy isInfixOfinternalContainerIpinternalInspectisRunningInDocker!tasty-1.5.3-EtTl0iwIGvMXnOqd9MCHkTest.Tasty.Ingredients IngredientTest.Tasty.CmdLinedefaultMainWithIngredients Test.TastydefaultIngredients