feat: usage example

Assisted-by: GLM 5.3 Flash
This commit is contained in:
2026-09-16 22:02:04 +02:00
parent add5ab588b
commit bcc8ce2078
2 changed files with 207 additions and 0 deletions
+56
View File
@@ -0,0 +1,56 @@
// 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())
}
}
}