Move bkli intersect functionality to library and migrate tests

This commit is contained in:
Ian Gulliver
2025-06-23 13:51:53 -07:00
parent 597c942025
commit abc3ab900c
9366 changed files with 301 additions and 46887 deletions
+9 -2
View File
@@ -60,16 +60,23 @@ See https://bkl.gopatchy.io/#bkld for detailed documentation.`
fatal(err) fatal(err)
} }
// Prepare paths from current working directory
paths := []string{string(opts.Positional.BasePath), string(opts.Positional.TargetPath)}
preparedPaths, err := p.PreparePathsFromCwd(paths, "/")
if err != nil {
fatal(err)
}
// Use DiffFiles helper which handles loading and validation // Use DiffFiles helper which handles loading and validation
fsys := os.DirFS("/") fsys := os.DirFS("/")
doc, err := p.DiffFiles(fsys, string(opts.Positional.BasePath), string(opts.Positional.TargetPath)) doc, err := p.DiffFiles(fsys, preparedPaths[0], preparedPaths[1])
if err != nil { if err != nil {
fatal(err) fatal(err)
} }
// Get format from first file if not specified // Get format from first file if not specified
if format == "" { if format == "" {
_, f, err := p.FileMatch(fsys, string(opts.Positional.BasePath)) _, f, err := p.FileMatch(fsys, preparedPaths[0])
if err != nil { if err != nil {
fatal(err) fatal(err)
} }
-97
View File
@@ -1,97 +0,0 @@
package main
import "reflect"
func intersect(a, b any) (any, error) {
if b == nil {
return nil, nil
}
switch a2 := a.(type) {
case map[string]any:
return intersectMap(a2, b)
case []any:
return intersectList(a2, b)
case nil:
return nil, nil
default:
if a == b {
return a, nil
}
return "$required", nil
}
}
func intersectMap(a map[string]any, b any) (any, error) {
switch b2 := b.(type) {
case map[string]any:
return intersectMapMap(a, b2)
default:
// Different types but both defined
return "$required", nil
}
}
func intersectMapMap(a, b map[string]any) (map[string]any, error) {
ret := map[string]any{}
for k, v := range a {
v2, found := b[k]
if !found {
continue
}
if v == nil && v2 == nil {
ret[k] = nil
continue
}
v2, err := intersect(v, v2)
if err != nil {
return nil, err
}
if v2 == nil {
continue
}
ret[k] = v2
}
return ret, nil
}
func intersectList(a []any, b any) (any, error) {
switch b2 := b.(type) {
case []any:
return intersectListList(a, b2)
default:
// Different types but both defined
return "$required", nil
}
}
func intersectListList(a, b []any) ([]any, error) { //nolint:unparam
ret := []any{}
for _, v1 := range a {
for _, v2 := range b {
if reflect.DeepEqual(v1, v2) {
ret = append(ret, v1)
}
}
}
if len(ret) == 0 {
ret = append(ret, "$required")
}
return ret, nil
}
+28 -46
View File
@@ -54,58 +54,40 @@ See https://bkl.gopatchy.io/#bkli for detailed documentation.`
format = strings.TrimPrefix(filepath.Ext(string(*opts.OutputPath)), ".") format = strings.TrimPrefix(filepath.Ext(string(*opts.OutputPath)), ".")
} }
// Create parser for use after the loop p, err := bkl.New()
parser, err := bkl.New()
if err != nil { if err != nil {
fatal(err) fatal(err)
} }
var doc any // Convert paths to strings
paths := make([]string, len(opts.Positional.InputPaths))
for p, path := range opts.Positional.InputPaths { for i, path := range opts.Positional.InputPaths {
b, err := bkl.New() paths[i] = string(path)
if err != nil {
fatal(err)
}
rebasedPaths, err := b.PreparePathsFromCwd([]string{string(path)}, "/")
if err != nil {
fatal(err)
}
fsys := os.DirFS("/")
realPath, f, err := b.FileMatch(fsys, rebasedPaths[0])
if err != nil {
fatal(err)
}
if format == "" {
format = f
}
err = b.MergeFileLayers(fsys, realPath)
if err != nil {
fatal(err)
}
docs := b.Documents()
if len(docs) != 1 {
fatal(fmt.Errorf("bklr operates on exactly 1 source document"))
}
if p == 0 {
doc = docs[0].Data
continue
}
doc, err = intersect(docs[0].Data, doc)
if err != nil {
fatal(err)
}
} }
f, err := parser.GetFormat(format) // Prepare paths from current working directory
preparedPaths, err := p.PreparePathsFromCwd(paths, "/")
if err != nil {
fatal(err)
}
// Use IntersectFiles helper which handles loading and validation
fsys := os.DirFS("/")
doc, err := p.IntersectFiles(fsys, preparedPaths)
if err != nil {
fatal(err)
}
// Get format from first file if not specified
if format == "" {
_, f, err := p.FileMatch(fsys, preparedPaths[0])
if err != nil {
fatal(err)
}
format = f
}
f, err := p.GetFormat(format)
if err != nil { if err != nil {
fatal(err) fatal(err)
} }
+153
View File
@@ -0,0 +1,153 @@
package bkl
import (
"fmt"
"io/fs"
"reflect"
)
// IntersectFiles loads multiple files and returns their intersection.
// It expects each file to contain exactly one document.
// The files are loaded with MergeFileLayers but not processed, matching bkli behavior.
func (p *Parser) IntersectFiles(fsys fs.FS, paths []string) (any, error) {
if len(paths) < 2 {
return nil, fmt.Errorf("intersect requires at least 2 files, got %d", len(paths))
}
var result any
for i, path := range paths {
// Create new parser for each file
parser, err := New()
if err != nil {
return nil, err
}
realPath, _, err := parser.FileMatch(fsys, path)
if err != nil {
return nil, fmt.Errorf("file %s: %w", path, err)
}
if err := parser.MergeFileLayers(fsys, realPath); err != nil {
return nil, fmt.Errorf("merging %s: %w", path, err)
}
docs := parser.Documents()
if len(docs) != 1 {
return nil, fmt.Errorf("intersect operates on exactly 1 document per file, got %d in %s", len(docs), path)
}
if i == 0 {
result = docs[0].Data
continue
}
result, err = p.Intersect(docs[0].Data, result)
if err != nil {
return nil, err
}
}
return result, nil
}
// Intersect returns the intersection of two values.
// For maps, it returns keys present in both with matching values or $required for conflicts.
// For lists, it returns elements present in both lists.
func (p *Parser) Intersect(a, b any) (any, error) {
return intersect(a, b)
}
func intersect(a, b any) (any, error) {
if b == nil {
return nil, nil
}
switch a2 := a.(type) {
case map[string]any:
return intersectMap(a2, b)
case []any:
return intersectList(a2, b)
case nil:
return nil, nil
default:
if a == b {
return a, nil
}
return "$required", nil
}
}
func intersectMap(a map[string]any, b any) (any, error) {
switch b2 := b.(type) {
case map[string]any:
return intersectMapMap(a, b2)
default:
// Different types but both defined
return "$required", nil
}
}
func intersectMapMap(a, b map[string]any) (map[string]any, error) {
ret := map[string]any{}
for k, v := range a {
v2, found := b[k]
if !found {
continue
}
if v == nil && v2 == nil {
ret[k] = nil
continue
}
v2, err := intersect(v, v2)
if err != nil {
return nil, err
}
if v2 == nil {
continue
}
ret[k] = v2
}
return ret, nil
}
func intersectList(a []any, b any) (any, error) {
switch b2 := b.(type) {
case []any:
return intersectListList(a, b2)
default:
// Different types but both defined
return "$required", nil
}
}
func intersectListList(a, b []any) ([]any, error) {
ret := []any{}
for _, v1 := range a {
for _, v2 := range b {
if reflect.DeepEqual(v1, v2) {
ret = append(ret, v1)
}
}
}
if len(ret) == 0 {
ret = append(ret, "$required")
}
return ret, nil
}
+38 -2
View File
@@ -24,6 +24,7 @@ type TestCase struct {
RootPath string // Root path for restricting file access RootPath string // Root path for restricting file access
Env map[string]string // Environment variables for the test Env map[string]string // Environment variables for the test
Diff bool // Run diff operation instead of eval Diff bool // Run diff operation instead of eval
Intersect bool // Run intersect operation instead of eval
} }
type TestSuite map[string]TestCase type TestSuite map[string]TestCase
@@ -93,7 +94,41 @@ func TestLanguage(t *testing.T) {
} }
var output []byte var output []byte
if testCase.Diff {
switch {
case testCase.Intersect:
// For intersect tests, we need at least 2 files
if len(testCase.Eval) < 2 {
t.Fatalf("Intersect tests require at least 2 eval files, got %d", len(testCase.Eval))
}
// Use the IntersectFiles helper which matches bkli behavior
intersectResult, err := p.IntersectFiles(testFS, testCase.Eval)
if err != nil {
if testCase.Error != "" {
if !strings.Contains(err.Error(), testCase.Error) {
t.Fatalf("Expected error containing %q, but got: %v", testCase.Error, err)
}
return
}
t.Fatalf("Intersect failed: %v", err)
}
// Marshal the intersect result
format := testCase.Format
if format == "" {
format = "yaml"
}
f, err := p.GetFormat(format)
if err != nil {
t.Fatalf("Failed to get format: %v", err)
}
output, err = f.MarshalStream([]any{intersectResult})
if err != nil {
t.Fatalf("Failed to marshal intersect result: %v", err)
}
case testCase.Diff:
// For diff tests, we expect exactly 2 eval files // For diff tests, we expect exactly 2 eval files
if len(testCase.Eval) != 2 { if len(testCase.Eval) != 2 {
t.Fatalf("Diff tests require exactly 2 eval files, got %d", len(testCase.Eval)) t.Fatalf("Diff tests require exactly 2 eval files, got %d", len(testCase.Eval))
@@ -124,7 +159,8 @@ func TestLanguage(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("Failed to marshal diff result: %v", err) t.Fatalf("Failed to marshal diff result: %v", err)
} }
} else {
default:
output, err = p.Evaluate(testFS, testCase.Eval, testCase.SkipParent, testCase.Format, rootPath, "/", testCase.Env) output, err = p.Evaluate(testFS, testCase.Eval, testCase.SkipParent, testCase.Format, rootPath, "/", testCase.Env)
} }
BIN
View File
Binary file not shown.
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("\xb2.toml")
[]byte("[0]\n[00]\n[000.0]\n[01000.0]\n[0100]\n[0000.0]\n[012.00]\n[00000.10]\n[010]\n[0000000]\n[0107000000]\n[01070]\n[0000010.0]")
string("\x80")
[]byte("12")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte("[0000,0000")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0")
[]byte("0")
string("0.yaml")
[]byte("!$000")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte("#0000000000000000000000000000000")
string("0")
[]byte("0")
File diff suppressed because one or more lines are too long
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0")
[]byte("0")
string("0.json")
[]byte("0.000000000")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml")
[]byte("#\r#\r#\r0")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("\xe9\x86;k")
[]byte("100000.0")
string("0.json")
[]byte("100000.0000000000000000000000000000999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999099999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999990000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml")
[]byte("?\n Y:\n 081:\n 90:\n 0:\r 2:\r a:\r 7b:\r ?\n 27:")
string("c4")
[]byte("1")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yml")
[]byte("\xff\xfe\xfe\xfe")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte("?\r-")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("[00][[0]")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml")
[]byte("\"\\_")
string("0.yaml")
[]byte("\"\\_")
File diff suppressed because one or more lines are too long
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte("---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n---\n")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml")
[]byte("\xff\xfe\xff\xfe( 00( 00( 00( 00( 00( 00( 00")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte("\"\n ")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml")
[]byte("? - 𐔾")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa=")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.json")
[]byte("\"\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\\b\"")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte("\"\\\u0085\\\u0085\\\u0085\\¢")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte("'00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte("\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("\xb4\xb4\xb4\xb4\xb4\xb4\xb4\xb4\xb4\xb4\xb4\xb4\xb4\xb4\xb4\xb4")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml")
[]byte("- \n---\n-")
string("0.json")
[]byte("[]\n---\n\"\"")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0")
[]byte("0")
string("0.yaml")
[]byte("%a")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("\"0\"=")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte("0b+0")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte("0b2")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml")
[]byte("Y: Y")
string("0.yaml")
[]byte("Y: Y")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yml")
[]byte("0:\n1:\n0:\n1:\n00:\n1:\n0:\n0:\n0:\n2:")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte("0\r\r")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("[[ ")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte("#\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-\n-")
string("0")
[]byte("0")
File diff suppressed because one or more lines are too long
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("0={''''''''''''''''''=0")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml")
[]byte("0:\r:\r:\r:")
string("0.yaml")
[]byte(":\r:")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte("00 0\n0 0\n0 0\n0 0\n0 0\n0 0\n0 0\n0 0\n0 0\n0 0\n- 0\n- 0\n- 0\n- 0\n- 0\n- 0\n- 0\n- 0\n- 0\n- 0\n- 0\n- 0\n- 0\n- 0\n- 0\n- 0\n- 0\n- 0\n- 0\n- 0\n- 0 0\n- 0\n- 0\n- 0\n- 0\n- 0\n- 0\n- 0\n- 0\n- 0\n- 0\n- 0 0\n")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("[00][000][0][1]")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("=0000-00-00T")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml")
[]byte("{{{{{{{{{{{{{{{]]]]]]]]]]]]]]]]")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("0=-8")
string("0.toml")
[]byte("0=-8")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0")
[]byte("0")
string("0.yaml")
[]byte("!]]]]]]]]]]]]]]]")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("[0]\n[1]\n[01]\n[00]\n[10]\n[2]\n[02]\n[0]")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.json")
[]byte("0")
string("0.json")
[]byte("-0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte(">\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("\"\"=\"\"\"\\b\\b\\b\\b\\b\\b\\b\\b\"\"\"")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("'.json")
[]byte("11111111111111111111111111111111111111111111111111101111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111115111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111911111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111E-1041")
string("\xfc0")
[]byte("1")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml")
[]byte("00\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0\n\n0")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte("{0,0,0,0,0,0,0,0,0")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml")
[]byte("\xff\xfe0\xd90\xdf0\xd90\xdf0\xd90\xdf0\xd90\xdf0\xd90\xdf0\xd9")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0")
[]byte("0")
string("0.yaml")
[]byte("! #")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte("? - ȡȡȡȡȡ")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml")
[]byte("!)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("\"\"=\"\"\"\"00")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("\"\\b\".\"\\b\".\"\\b\".\"\\b\".\"\\b\".\"\\b\".\"\\b\".\"\\b\"")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("0=+")
string("0.toml")
[]byte("0=+")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0A0")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("0=0000-- 0000000000-00-00 ")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0l.yaml/")
[]byte("0l.yaml\n---\n\n---\n\n-\n\n---\n\n---\n\n---\n\n---\n\n---\n\n------\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n--\n---\n\n---\n\n---\n\n---\n\n----\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---+++\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n--\n---\n\n---\n\n---\n\n---\n\n----\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n--\n---\n\n------\n\n---\n\n---\n\n---\n-\n\n---\n\n---\n\n---+++\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n--\n\n----\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n--\n\n---\n\n---\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n--\n\n---\n\n---\n\nl-\n\n---\n\n---\n\n---\n\n\n---\n\n---\n\n---\n\n---\n\n\n--\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n-\n\n---\n\n---\n\n---\n\n---\n\n---\n\n------\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n--\n---\n\n---\n\n---\n\n---\n\n----\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---+++\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n--\n---\n\n---\n\n---\n\n---\n\n----\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n--\n---\n\n------\n\n---\n\n---\n\n---\n-\n\n---\n\n---\n\n---+++\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n--\n\n----\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n--\n\n---\n\n---\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\x8a\x81\t\x8b\xd2\n\n---\n\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n---\n\n--\n\n---\n\n---\n\n---\n\n---\n\n---\n")
string("\xab")
[]byte("0l.")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml")
[]byte("\xfe\xff")
string("0.yaml")
[]byte("\xfe\xff")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte("|\u0085>")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte("A")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("000000000=")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte("𖦾𖤾𖤾𖤾𖤾𖦾𖤾𖦾𖤾𖤾𖦾𖤾𖤾𖤾𖤾𖤾𖦾𖤾𖦾𖦾𖤾\xf0\x9600")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("[[0]\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v\v]")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.json")
[]byte("{\"\":0,\"\":0,\"\":0,\"\":0,\"\":0,\"\":0,\"\":0,\"\":{\"\":0,\"\":0,\"\":0,\"\":0,\"\":0,\"\":0,\"\":\"\"")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("0=\"\"\"\\\r\"\"\"")
string("0.toml")
[]byte("0=\"\"\"\\\r\"\"\"")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("\"\"=\"\"\"\\0\\")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0")
[]byte("0")
string("0.yaml")
[]byte("10000000000006000000000000000000000000000000000000000000000000")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte("{0b+0")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("\"\\UAAAAAAA")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0")
[]byte("0")
string("0.yaml/")
[]byte("!%c0%a0%c0%a0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml")
[]byte("\"\n--\n--\n--\n--")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml")
[]byte("\"\\\u0085\\\u0085\\\u0085\\\u0085")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("0=f00000")
string("0.toml")
[]byte("0=f00000")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte("%aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte("!!!!!!!!!")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte("0 #\r\"\"\r0")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte("? 0: .2")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0")
[]byte("0")
string("0.yaml/")
[]byte("!'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("[0]0=[]\n0=00")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte("\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r\r")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml")
[]byte("\"\r.")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte("? ? - - 0")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml/")
[]byte("\r\n\r\n")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.yaml")
[]byte(":")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("[[ ")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0")
[]byte("0")
string("0.json")
[]byte("\"\\r\\r\\r\\r\\r\\r\\r\\r\"")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("0=")
string("0.toml")
[]byte("0=")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.json")
[]byte("0 \r\r\r\r\r \r\r \r\r \r\r\r\r\r\r\r")
string("0")
[]byte("0")
File diff suppressed because one or more lines are too long
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("[[0000]][[000]][[00]][[0]][[00]][[0]][[00]][[0]][[0]][[0]][[0]][[0]][[0]][[0]][[0]][[0]][[0]")
string("0")
[]byte("0")
-5
View File
@@ -1,5 +0,0 @@
go test fuzz v1
string("0.toml")
[]byte("\"\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\\f\"")
string("0")
[]byte("0")

Some files were not shown because too many files have changed in this diff Show More