Îõ³h&L1GB      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º» ¼ ½ ¾ ¿ À Á  Safe-Inferred"'?ѹÂtestcontainersRyuk based resource reapertestcontainers!Reaper for safe resource cleanup.ÃtestcontainersrunReaper label value9 reaps Docker any Docker resource with a matching label.Ä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 imagetestcontainers!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 container testcontainers+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.4.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"'?Í0testcontainers#An abstraction for forwarding logs.1testcontainersÂA data type indicating which pipe to scan for a specific log line.2testcontainersRefer to logs on STDOUT.3testcontainersRefer to logs on STDERR.4testcontainersÈ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.Atestcontainers>Identifies a container within the Docker runtime. Assigned by  docker run.Btestcontainers=?;<@ABCDEF456789:>=?;The id of the underlying container that was not ready in time.mtestcontainersThe exception thrown by —.otestcontainers>The id of the underlying container that was not ready in time.ptestcontainersThe exception thrown by  waitForLine- in case the expected log line wasn't found.rtestcontainers#The id of the underlying container.stestcontainers6A strategy that describes how to asses readiness of a k9. 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 sharettestcontainers!A description of how to build an l.utestcontainersA tag to a Docker image.vtestcontainersDefintion of a vÃ. 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.ztestcontainers,Parameters for a running a Docker container.{testcontainersDefault z*. 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å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.„testcontainersÎSet the network the container will connect to. This is equivalent to passing --network network_name to  docker run.…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 0 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 l and zý. A finalizer is registered so that the container is aways stopped when it goes out of scope. This function is essentially  docker run.×testcontainersÕInternal attribute, serving as a loop breaker: When runnign a container we ensure a  is present, since the Õ itself is a running container we need to break the loop to avoid spinning up a new  for the .testcontainersKills a Docker container.  is essentially  docker kill.ŽtestcontainersStops a Docker container. Ž is essentially  docker stop.testcontainersRemove a Docker container.  is essentially  docker rm -ftestcontainersÍAccess STDOUT and STDERR of a running Docker container. This is essentially  docker logs under the hood.‘testcontainers Build the lÝ 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 l.ØtestcontainersDefault t. Doesn't apply anything to to ContainerRequests.’testcontainersGet an l from a tag.“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 m 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 p 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 s on the container.&In case the readiness check times out œ throws a m.testcontainers9The image tag assigned by Docker. Uniquely identifies an l 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 vs of them form "8080",  "8080/udp",  "8080/tcp".ªtestcontainers/A cursed but handy instance supporting literal vs.¯testcontainers°testcontainers˜testcontainersPorttestcontainersURL pathtestcontainersAcceptable status codes‚ ,./0123456789:>=?;<@ABEMNVTOPQRSUXYZ[\]^defghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨‚./ ulvwxyAkžŸ¢£¡¤¥ MNVTOPQRSU\[^YZ]X–t’“”‘456789:>=?;=?;<@BEMNVTOPQRSUXYZ[\]^deghijklmnopqrstuvwxyz{|}~€‚ƒ„…†ˆ‰Š‹ŒŽ‘’“•–—˜™š›Ÿ ¡¢£¤¥¦§¨»¼üult’“‘z{|}~€‚ƒ„…†ˆŠ‹‰0EdgiheBjvwxyk¢£¡¤¥ ŸŒ@¦Žs—MNVTOPQRSU\[^YZ]X•–123š›™˜./ 456789:>=?;:98756@BEMNUSRQPOVTXYZ[\]^deghijklmnopqrstuvywxz{|}~€‚ƒ„…†ˆ‰Š‹ŒŽ‘’“•–—˜™š›Ÿ ¡¢£¤¥¦§¨»¼½¾ý½¾ ./01234<;?=>:98756@BEMNUSRQPOVTXYZ[\]^deghijklmnopqrstuvywxz{|}~€‚ƒ„…†ˆ‰Š‹ŒŽ‘’“•–—˜™š›Ÿ ¡¢£¤¥¦§¨»¼  Safe-InferredÂ×ÜF–ÁtestcontainersAllow  í 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 ÁÆ allows you naturally scope the handling of containers for your tests.ý  ./01234<;?=>:98756@BEMNUSRQPOVTXYZ[\]^deghijklmnopqrstuvywxz{|}~€‚ƒ„…†ˆ‰Š‹ŒŽ‘’“•–—˜™š›Ÿ ¡¢£¤¥¦§¨»¼ÁÁâ !"#$%&'()*++,-./0123456789:;<=>?@ABCDEFGGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…††‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉ Ê Ë Ì Í Î Ï ÍÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðìñòóôõö÷øöùúöûüý-testcontainers-0.4.0.0-3BVjKT7UquwBdfAte2PsvRTestContainers.DockerTestContainers.Docker.ReaperTestContainers.TraceTestContainers.MonadTestContainers.ConfigTestContainers.Docker.InternalTestContainers.Docker.StateTestContainers.Docker.NetworkTestContainers.ImageTestContainers.TastyTestContainers.HspecTestContainersHspecSpecbase Data.Function&&resourcet-1.3.0-EmqmTh8iGPGCi1vFSDG25aControl.Monad.Trans.Resource runResourceT%Control.Monad.Trans.Resource.InternalResIOReaper 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$fMonadFixTestContainercreateRyukReaper defaultConfigdefaultDockerConfigdetermineConfig LogConsumerPipeStdoutStderrDockerExceptionInspectUnknownContainerIdInspectOutputInvalidJSONInspectOutputMissingNetworkInspectOutputUnexpectedUnknownPortMappingexitCodeargsstderridport InspectOutput ContainerId NetworkIddockerdockerWithStdinconsoleLogConsumerdockerFollowLogs$fExceptionDockerException$fEqPipe $fOrdPipe $fShowPipe$fEqDockerException$fShowDockerExceptionStateStatusCreatedRunningPaused RestartingRemovingExitedDeadOthercontainerState stateStatusstateOOMKilledstatePid stateExitCode stateErrorstateStartedAtstateFinishedAt $fExceptionStateInvalidException $fEqStatus $fShowStatus$fEqStateInvalidException$fShowStateInvalidExceptionNetworkRequestNetwork networkIdnetworkRequestwithIpv6 withDriver createNetwork ContainerImageTimeoutException$sel:id:TimeoutExceptionUnexpectedEndOfPipe$sel:id:UnexpectedEndOfPipeWaitUntilReadyToImageImageTagPort$sel:port:Port$sel:protocol:PortContainerRequestcontainerRequestsetName setFixedName setRandomNamesetSuffixedNamesetCmdsetVolumeMountssetRmsetEnv setNetwork withNetworkwithNetworkAlias withLabelssetLinkwithFollowLogs setExpose setWaitingForrunkillstoprmwithLogsbuildfromTagfromBuildContextfromDockerfile waitForStatesuccessfulExitwaitUntilTimeout waitForHttpwaitUntilMappedPortReachable waitWithLogswaitForLogLinewaitUntilReadyimageTag containerIdcontainerImagecontainerReleaseKey containerIpcontainerAliascontainerGateway containerPortcontainerAddressinspect dockerHostOsisDockerOnLinux$fIsStringPort $fNumPort $fShowPort$fExceptionUnexpectedEndOfPipe$fExceptionTimeoutException $fExceptionInvalidStateException$fMonoidWaitUntilReady$fSemigroupWaitUntilReady $fEqImage $fShowImage$fEqInvalidStateException$fShowInvalidStateException$fEqTimeoutException$fShowTimeoutException$fEqUnexpectedEndOfPipe$fShowUnexpectedEndOfPipe$fEqPort $fOrdPortredismongo ingredientwithContainers$fIsOptionDefaultTimeout$fIsOptionTraceRyuk runReaperlabelsrunRyukGHC.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.TypesTrue skipReaperdefaultToImage text-1.2.5.0Data.Text.InternalTextGHC.IO.Handle.TypesHandleData.Text.Lazy isInfixOfinternalContainerIpinternalInspectisRunningInDocker"tasty-1.4.3-AhremINTU0E3mGv5m0zwK8Test.Tasty.Ingredients IngredientTest.Tasty.CmdLinedefaultMainWithIngredients Test.TastydefaultIngredients