From 9ee331235a3affa082d5cb0028351182b89fd123 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Gronowski?= Date: Thu, 22 Feb 2024 11:14:27 +0100 Subject: [PATCH] integration: Add container.Output utility MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Extracted from https://github.com/moby/moby/commit/bfb810445c3c111478f5e0e6268ef334c38f38cf Signed-off-by: Paweł Gronowski --- integration/internal/container/container.go | 25 +++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/integration/internal/container/container.go b/integration/internal/container/container.go index 0974ce6bf1..dac52999ae 100644 --- a/integration/internal/container/container.go +++ b/integration/internal/container/container.go @@ -170,3 +170,28 @@ func Inspect(ctx context.Context, t *testing.T, apiClient client.APIClient, cont return c } + +type ContainerOutput struct { + Stdout, Stderr string +} + +// Output waits for the container to end running and returns its output. +func Output(ctx context.Context, client client.APIClient, id string) (ContainerOutput, error) { + logs, err := client.ContainerLogs(ctx, id, container.LogsOptions{Follow: true, ShowStdout: true, ShowStderr: true}) + if err != nil { + return ContainerOutput{}, err + } + + defer logs.Close() + + var stdoutBuf, stderrBuf bytes.Buffer + _, err = stdcopy.StdCopy(&stdoutBuf, &stderrBuf, logs) + if err != nil { + return ContainerOutput{}, err + } + + return ContainerOutput{ + Stdout: stdoutBuf.String(), + Stderr: stderrBuf.String(), + }, nil +} -- 2.33.0