internal/cli/testingcli/provider.go (32 lines of code) (raw):
package testingcli
import (
"context"
"io"
"github.com/Azure/kusto-ingest/internal/cli"
"github.com/charmbracelet/log"
)
// TestProvider implements cli.Provider for testing usage.
type TestProvider struct {
ContextFn func() (context.Context, context.CancelFunc)
LoggerFn func() *log.Logger
}
var _ cli.Provider = (*TestProvider)(nil)
// New creates a testing cli provider with optional mutate functions.
func New(ms ...func(*TestProvider)) *TestProvider {
rv := &TestProvider{
ContextFn: func() (context.Context, context.CancelFunc) {
return context.WithCancel(context.Background())
},
LoggerFn: func() *log.Logger {
return log.New(io.Discard)
},
}
for _, m := range ms {
m(rv)
}
return rv
}
func (tp *TestProvider) Context() (context.Context, context.CancelFunc) {
return tp.ContextFn()
}
func (tp *TestProvider) Logger() *log.Logger {
return tp.LoggerFn()
}