// Copyright (c) 2026 Petr BalvĂ­n (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()) } } }