57 lines
1.4 KiB
Go
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 (LayoutKindDeclaration) ---",
|
|
"[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())
|
|
}
|
|
}
|
|
}
|