check / check (push) Failing after 0s
Tests for the three packages that had none, written from outside each package, each able to fail on a plausible break: - globals: values set are read back through New, and New returns an independent copy. One sequential test function with a disclosed paralleltest suppression, because it changes shared package variables. - healthcheck: Check returns status "ok", the documented JSON fields, an RFC3339Nano timestamp, the maintenance flag from config in both states, and version and appname from globals. - logger: New gives a usable *slog.Logger, debug output is off by default and EnableDebugLogging turns it on. No production code changed. The terminal output format is not asserted. Model: opus-4-8
67 lines
1.7 KiB
Go
67 lines
1.7 KiB
Go
package logger_test
|
|
|
|
import (
|
|
"context"
|
|
"log/slog"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"sneak.berlin/go/dnswatcher/internal/globals"
|
|
"sneak.berlin/go/dnswatcher/internal/logger"
|
|
)
|
|
|
|
func newTestLogger(t *testing.T) *logger.Logger {
|
|
t.Helper()
|
|
|
|
g := &globals.Globals{Appname: "dnswatcher", Version: "test"}
|
|
|
|
l, err := logger.New(nil, logger.Params{Globals: g})
|
|
require.NoError(t, err)
|
|
|
|
return l
|
|
}
|
|
|
|
// TestNewReturnsUsableLogger checks that the constructor yields a
|
|
// working *slog.Logger.
|
|
func TestNewReturnsUsableLogger(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
l := newTestLogger(t)
|
|
require.NotNil(t, l.Get(), "Get must return a non-nil logger")
|
|
}
|
|
|
|
// TestDefaultLevelExcludesDebug verifies the default configuration
|
|
// logs at info: debug records are suppressed, info records pass.
|
|
func TestDefaultLevelExcludesDebug(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
log := newTestLogger(t).Get()
|
|
ctx := context.Background()
|
|
|
|
assert.False(t, log.Enabled(ctx, slog.LevelDebug),
|
|
"debug must be suppressed at the default level")
|
|
assert.True(t, log.Enabled(ctx, slog.LevelInfo),
|
|
"info must be enabled at the default level")
|
|
}
|
|
|
|
// TestEnableDebugLoggingChangesLevel verifies the debug and non-debug
|
|
// configurations differ as intended: enabling debug makes debug
|
|
// records pass where they previously did not.
|
|
func TestEnableDebugLoggingChangesLevel(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
l := newTestLogger(t)
|
|
log := l.Get()
|
|
ctx := context.Background()
|
|
|
|
require.False(t, log.Enabled(ctx, slog.LevelDebug),
|
|
"debug must start disabled")
|
|
|
|
l.EnableDebugLogging()
|
|
|
|
assert.True(t, log.Enabled(ctx, slog.LevelDebug),
|
|
"debug must be enabled after EnableDebugLogging")
|
|
}
|