octoplex/internal/container/logs_test.go
Rob Watson df9724afa7
Some checks are pending
ci-build / lint (push) Waiting to run
ci-build / build (push) Blocked by required conditions
ci-build / release (push) Blocked by required conditions
feat: container logs
2025-04-14 11:17:10 +01:00

46 lines
1.0 KiB
Go

package container
import (
"io"
"strings"
"testing"
"git.netflux.io/rob/octoplex/internal/container/mocks"
"git.netflux.io/rob/octoplex/internal/testhelpers"
typescontainer "github.com/docker/docker/api/types/container"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/mock"
)
func TestGetLogs(t *testing.T) {
var dockerClient mocks.DockerClient
dockerClient.
EXPECT().
ContainerLogs(mock.Anything, "123", typescontainer.LogsOptions{ShowStderr: true, Follow: true}).
Return(io.NopCloser(strings.NewReader("********line 1\n********line 2\n********line 3\n")), nil)
ch := make(chan []byte)
go func() {
defer close(ch)
getLogs(
t.Context(),
"123",
&dockerClient,
LogConfig{Stderr: true},
ch,
testhelpers.NewTestLogger(t),
)
}()
// Ensure we get the expected lines, including stripping 8 bytes of Docker
// multiplexing prefix.
assert.Equal(t, "line 1", string(<-ch))
assert.Equal(t, "line 2", string(<-ch))
assert.Equal(t, "line 3", string(<-ch))
_, ok := <-ch
assert.False(t, ok)
}