Identify configuration source files in load errors
This commit is contained in:
@@ -4,12 +4,45 @@ import (
|
||||
"bytes"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
configkit "gitea.maximumdirect.net/eric/ConfigKit"
|
||||
)
|
||||
|
||||
func TestConfigLoadDiagnosticsIdentifyComposedSources(t *testing.T) {
|
||||
t.Parallel()
|
||||
for _, profile := range []bool{false, true} {
|
||||
t.Run(strconv.FormatBool(profile), func(t *testing.T) {
|
||||
root := t.TempDir()
|
||||
main := filepath.Join(root, "config.yml")
|
||||
fragment := filepath.Join(root, "pipeline\n\x1b.yml")
|
||||
args := []string{"config", "validate", "--config", main}
|
||||
if profile {
|
||||
fragment = filepath.Join(root, "profiles", "development.yml")
|
||||
writeConfigKitFile(t, main, "version: 5\n")
|
||||
args = append(args, "--config-profile", "development")
|
||||
} else {
|
||||
writeConfigKitFile(t, main, "version: 5\nconfigkit:\n imports:\n - path: "+strconv.Quote(filepath.Base(fragment))+"\n")
|
||||
}
|
||||
writeConfigKitFile(t, fragment, "concurrency: {total_llm: invalid-private-value}\n")
|
||||
var stdout, stderr bytes.Buffer
|
||||
if code := RunWithOptions(args, &stdout, &stderr, commandContractOptions(t)); code != 1 {
|
||||
t.Fatalf("status = %d; %s", code, stderr.String())
|
||||
}
|
||||
got := stderr.String()
|
||||
if stdout.Len() != 0 || !strings.Contains(got, "decode.type") ||
|
||||
!strings.Contains(got, "source-2:1:") ||
|
||||
!strings.Contains(got, strconv.Quote(fragment)) ||
|
||||
strings.Contains(got, "invalid-private-value") ||
|
||||
strings.ContainsRune(got, '\x1b') {
|
||||
t.Fatalf("stdout = %q; stderr = %q", stdout.String(), got)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestLoadConfigKitUsesDiscoveryProfileAndOverrides(t *testing.T) {
|
||||
t.Parallel()
|
||||
root := t.TempDir()
|
||||
|
||||
Reference in New Issue
Block a user