Add internal engine relocation candidate
This commit is contained in:
38
internal/engine/parse_test.go
Normal file
38
internal/engine/parse_test.go
Normal file
@@ -0,0 +1,38 @@
|
||||
package engine
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/document"
|
||||
"gitea.maximumdirect.net/eric/ConfigKit/internal/yaml"
|
||||
)
|
||||
|
||||
func TestParseSourceOwnsDocumentAndSafeDiagnostics(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
limits := defaultParseLimits()
|
||||
parsed, diagnostics := parseSource(Bytes("memory.yml", []byte("name: config\n")), "source-1", limits)
|
||||
if len(diagnostics) != 0 || parsed.source == nil || parsed.source.Label != "memory.yml" || parsed.document.Kind != document.Mapping {
|
||||
t.Fatalf("parse result = %#v, diagnostics = %#v", parsed, diagnostics)
|
||||
}
|
||||
|
||||
const canary = "CANARY_PRIVATE_INPUT"
|
||||
failed, diagnostics := parseSource(Bytes("unsafe\nlabel", []byte("name: ["+canary+"\n")), "source-1", limits)
|
||||
if failed.document != nil || failed.source == nil || len(diagnostics) != 1 || diagnostics[0].Code != CodeYAMLInvalid {
|
||||
t.Fatalf("failed parse = %#v, diagnostics = %#v", failed, diagnostics)
|
||||
}
|
||||
var output strings.Builder
|
||||
if err := WriteDiagnostics(&output, diagnostics); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if strings.Contains(output.String(), canary) || strings.Count(output.String(), "\n") != 1 {
|
||||
t.Fatalf("unsafe rendered diagnostic = %q", output.String())
|
||||
}
|
||||
|
||||
limits.document = yaml.Limits{Depth: 1, Nodes: 20, ParserDepth: 20}
|
||||
_, diagnostics = parseSource(Bytes("deep", []byte("a:\n b: value\n")), "source-1", limits)
|
||||
if len(diagnostics) != 1 || diagnostics[0].Code != CodeYAMLDepthLimit || diagnostics[0].Primary.Line == 0 {
|
||||
t.Fatalf("depth diagnostics = %#v", diagnostics)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user