Files
logwisp/cmd/lw/test_helpers_test.go
T

55 lines
1.3 KiB
Go

package main
import (
"bytes"
"testing"
"github.com/lixenwraith/logwisp/internal/config"
"github.com/lixenwraith/logwisp/internal/testutil"
"github.com/lixenwraith/log"
)
func testLogger(t *testing.T) {
t.Helper()
previous := logger
logger = log.NewLogger()
t.Cleanup(func() { logger = previous })
}
func loadTestConfig(t *testing.T, path string, args ...string) *config.Config {
t.Helper()
testutil.ClearEnvPrefix(t, "LOGWISP_")
return loadWithEnvironment(t, path, args...)
}
func loadWithEnvironment(t *testing.T, path string, args ...string) *config.Config {
t.Helper()
inv, err := parseCommandLine(append([]string{"-c", path, "--quiet", "--status_reporter=false"}, args...))
if err != nil {
t.Fatal(err)
}
m, err := config.Load(inv.load)
if err != nil {
t.Fatal(err)
}
t.Cleanup(m.Close)
cfg, err := m.Snapshot()
if err != nil {
t.Fatal(err)
}
return cfg
}
// runCommand runs `lw NAME ARGS...` and returns its exit status and output
func runCommand(t *testing.T, name string, args ...string) (code int, stdout, stderr string) {
t.Helper()
inv, err := parseCommandLine(append([]string{name}, args...))
if err != nil || inv.command == nil {
t.Fatalf("lw %s: not a command: %v", name, err)
}
var out, errOut bytes.Buffer
code = inv.command.run(inv.args, &out, &errOut)
return code, out.String(), errOut.String()
}