68 lines
1.4 KiB
Go
68 lines
1.4 KiB
Go
package modules
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
"log/slog"
|
|
"testing"
|
|
|
|
"code.icb4dc0.de/buildr/buildr/modules/state"
|
|
)
|
|
|
|
var _ ExecutionContext = (*TestExecutionContext)(nil)
|
|
|
|
type TestExecutionContext struct {
|
|
context.Context
|
|
TB testing.TB
|
|
StateStore state.Store
|
|
TestWorkingDir string
|
|
OutputDirectory string
|
|
}
|
|
|
|
func (t TestExecutionContext) Name() string {
|
|
return t.TB.Name()
|
|
}
|
|
|
|
func (t TestExecutionContext) WorkingDir() string {
|
|
return t.TestWorkingDir
|
|
}
|
|
|
|
func (t TestExecutionContext) OutDir() string {
|
|
return t.OutputDirectory
|
|
}
|
|
|
|
func (t TestExecutionContext) BinariesDir() string {
|
|
return ""
|
|
}
|
|
|
|
func (t TestExecutionContext) StdOut() io.Writer {
|
|
return testWriter{TB: t.TB}
|
|
}
|
|
|
|
func (t TestExecutionContext) StdErr() io.Writer {
|
|
return testWriter{TB: t.TB}
|
|
}
|
|
|
|
func (t TestExecutionContext) Logger() *slog.Logger {
|
|
return slog.New(slog.NewTextHandler(testWriter{TB: t.TB}, nil))
|
|
}
|
|
|
|
func (t TestExecutionContext) GetState(ctx context.Context, key string) ([]byte, state.Metadata, error) {
|
|
return t.StateStore.Get(ctx, state.KeyOfStrings(key))
|
|
}
|
|
|
|
func (t TestExecutionContext) SetState(ctx context.Context, key string, value []byte) error {
|
|
return t.StateStore.Set(ctx, state.KeyOfStrings(key), value)
|
|
}
|
|
|
|
var _ io.Writer = (*testWriter)(nil)
|
|
|
|
type testWriter struct {
|
|
testing.TB
|
|
}
|
|
|
|
func (t testWriter) Write(p []byte) (n int, err error) {
|
|
t.Log(string(p))
|
|
return len(p), nil
|
|
}
|