Skip to content

Commit badb17a

Browse files
committed
bumping coverage
1 parent 85682e1 commit badb17a

File tree

3 files changed

+56
-0
lines changed

3 files changed

+56
-0
lines changed

datamodel/low/base/schema_build_coverage_test.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@ package base
66
import (
77
"context"
88
"fmt"
9+
"reflect"
910
"sync"
1011
"testing"
12+
"unsafe"
1113

1214
"github.com/pb33f/libopenapi/datamodel/low"
1315
"github.com/pb33f/libopenapi/index"
@@ -20,6 +22,9 @@ type collectingAddNodes struct {
2022
lines []int
2123
}
2224

25+
//go:linkname lowBuildModelFieldCache github.com/pb33f/libopenapi/datamodel/low.buildModelFieldCache
26+
var lowBuildModelFieldCache sync.Map
27+
2328
func (c *collectingAddNodes) AddNode(key int, _ *yaml.Node) {
2429
c.lines = append(c.lines, key)
2530
}
@@ -77,6 +82,37 @@ func TestResolveSchemaBuildInput_NilAndRefFailures(t *testing.T) {
7782
assert.Contains(t, err.Error(), "boom: ./missing.yaml#/Pet")
7883
}
7984

85+
func TestSchemaBuild_BuildModelError(t *testing.T) {
86+
var root yaml.Node
87+
require.NoError(t, yaml.Unmarshal([]byte("type: string\n"), &root))
88+
89+
var seed Schema
90+
require.NoError(t, low.BuildModel(root.Content[0], &seed))
91+
92+
schemaType := reflect.TypeOf(Schema{})
93+
original, ok := lowBuildModelFieldCache.Load(schemaType)
94+
require.True(t, ok)
95+
96+
origType := reflect.TypeOf(original)
97+
elemType := origType.Elem()
98+
replacement := reflect.MakeSlice(origType, 1, 1)
99+
elem := reflect.New(elemType).Elem()
100+
setUnexportedField(elem.FieldByName("lookupKey"), "type")
101+
setUnexportedField(elem.FieldByName("index"), 0)
102+
setUnexportedField(elem.FieldByName("kind"), reflect.Bool)
103+
replacement.Index(0).Set(elem)
104+
105+
lowBuildModelFieldCache.Store(schemaType, replacement.Interface())
106+
t.Cleanup(func() {
107+
lowBuildModelFieldCache.Store(schemaType, original)
108+
})
109+
110+
var schema Schema
111+
err := schema.Build(context.Background(), root.Content[0], nil)
112+
require.Error(t, err)
113+
assert.Contains(t, err.Error(), "unable to parse unsupported type")
114+
}
115+
80116
func TestRecursiveSchemaNodeHelpers(t *testing.T) {
81117
low.MergeRecursiveNodesIfLineAbsent(nil, nil)
82118
low.AppendRecursiveNodes(nil, nil)
@@ -108,3 +144,7 @@ func TestRecursiveSchemaNodeHelpers(t *testing.T) {
108144
low.AppendRecursiveNodes(collector, node)
109145
assert.NotEmpty(t, collector.lines)
110146
}
147+
148+
func setUnexportedField(field reflect.Value, value any) {
149+
reflect.NewAt(field.Type(), unsafe.Pointer(field.UnsafeAddr())).Elem().Set(reflect.ValueOf(value))
150+
}

datamodel/low/base/schema_hash_coverage_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,13 @@ func TestWriteSchemaDependentRequired(t *testing.T) {
4747
writeSchemaDependentRequired(&sb, values)
4848
assert.Equal(t, "alpha:x|omega:z,a|", sb.String())
4949
}
50+
51+
func TestWriteSortedSchemaStrings(t *testing.T) {
52+
var sb strings.Builder
53+
54+
writeSortedSchemaStrings(&sb, nil, false)
55+
assert.Equal(t, "", sb.String())
56+
57+
writeSortedSchemaStrings(&sb, []string{"zeta", "alpha"}, false)
58+
assert.Equal(t, "alphazeta|", sb.String())
59+
}

datamodel/low/v3/create_document_test.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,12 @@ func BenchmarkCreateDocument(b *testing.B) {
4848
}
4949
}
5050

51+
func TestSelectDocumentNode_NilRoot(t *testing.T) {
52+
node := selectDocumentNode(nil, documentTopLevelNode{}, OpenAPILabel, true)
53+
assert.Nil(t, node.key)
54+
assert.Nil(t, node.value)
55+
}
56+
5157
func TestCreateDocument_SelfWithHttpURL(t *testing.T) {
5258
low.ClearHashCache()
5359
yml := `openapi: 3.2.0

0 commit comments

Comments
 (0)