Files
interpres/examples/basic/main_test.go
T
petrbalvin 8bf44f0e34 feat: usage example
Assisted-by: GLM 5.3 Flash
2026-08-19 13:05:00 +02:00

57 lines
1.4 KiB
Go

// Copyright (c) 2026 Petr Balvín <opensource@petrbalvin.org> (https://petrbalvin.org)
// SPDX-License-Identifier: MIT
package main
import (
"bytes"
"strings"
"testing"
)
func TestRunPrintsConfigAndMarshal(t *testing.T) {
var stdout, stderr bytes.Buffer
if code := Run(&stdout, &stderr); code != 0 {
t.Fatalf("Run returned %d, stderr = %q", code, stderr.String())
}
got := stdout.String()
for _, want := range []string{
"title: interpres demo",
"launched: 2024-11-04T09:00:00Z",
"debug: false",
"server: 127.0.0.1:9090",
"user: petr",
"admin=true",
"admin=false",
"--- marshal (group by kind, default) ---",
`title = "interpres demo"`,
"--- marshal (GroupByKind=false) ---",
"[server]",
"port = 9090",
"[[users]]",
"--- round-trip ---",
} {
if !strings.Contains(got, want) {
t.Errorf("output missing %q\n----\n%s", want, got)
}
}
}
func TestRunMarshalerFieldRendersAsScalar(t *testing.T) {
// The Port Marshaler hook returns a string, so the field becomes a
// scalar "9000:9001" inside [srv] rather than an integer.
var stdout, stderr bytes.Buffer
if code := Run(&stdout, &stderr); code != 0 {
t.Fatalf("Run returned %d, stderr = %q", code, stderr.String())
}
for _, want := range []string{
`port = "9000:9001"`,
`addr = "10.0.0.1:8080"`,
`tag = "primary"`,
} {
if !strings.Contains(stdout.String(), want) {
t.Errorf("output missing %q\n----\n%s", want, stdout.String())
}
}
}