@@ -3,8 +3,10 @@ package loader
33import (
44 "context"
55 "encoding/json"
6+ "os"
67 "testing"
78
9+ "github.com/gptscript-ai/gptscript/pkg/types"
810 "github.com/hexops/autogold/v2"
911 "github.com/stretchr/testify/require"
1012)
@@ -17,6 +19,64 @@ func toString(obj any) string {
1719 return string (s )
1820}
1921
22+ func TestIsOpenAPI (t * testing.T ) {
23+ datav2 , err := os .ReadFile ("testdata/openapi_v2.yaml" )
24+ require .NoError (t , err )
25+ v := isOpenAPI (datav2 )
26+ require .Equal (t , 2 , v , "(yaml) expected openapi v2" )
27+
28+ datav2 , err = os .ReadFile ("testdata/openapi_v2.json" )
29+ require .NoError (t , err )
30+ v = isOpenAPI (datav2 )
31+ require .Equal (t , 2 , v , "(json) expected openapi v2" )
32+
33+ datav3 , err := os .ReadFile ("testdata/openapi_v3.yaml" )
34+ require .NoError (t , err )
35+ v = isOpenAPI (datav3 )
36+ require .Equal (t , 3 , v , "(json) expected openapi v3" )
37+ }
38+
39+ func TestLoadOpenAPI (t * testing.T ) {
40+ numOpenAPITools := func (set types.ToolSet ) int {
41+ num := 0
42+ for _ , v := range set {
43+ if v .IsOpenAPI () {
44+ num ++
45+ }
46+ }
47+ return num
48+ }
49+
50+ prgv3 := types.Program {
51+ ToolSet : types.ToolSet {},
52+ }
53+ datav3 , err := os .ReadFile ("testdata/openapi_v3.yaml" )
54+ require .NoError (t , err )
55+ _ , err = readTool (context .Background (), nil , & prgv3 , & source {Content : datav3 }, "" )
56+ require .NoError (t , err , "failed to read openapi v3" )
57+ require .Equal (t , 3 , numOpenAPITools (prgv3 .ToolSet ), "expected 3 openapi tools" )
58+
59+ prgv2json := types.Program {
60+ ToolSet : types.ToolSet {},
61+ }
62+ datav2 , err := os .ReadFile ("testdata/openapi_v2.json" )
63+ require .NoError (t , err )
64+ _ , err = readTool (context .Background (), nil , & prgv2json , & source {Content : datav2 }, "" )
65+ require .NoError (t , err , "failed to read openapi v2" )
66+ require .Equal (t , 3 , numOpenAPITools (prgv2json .ToolSet ), "expected 3 openapi tools" )
67+
68+ prgv2yaml := types.Program {
69+ ToolSet : types.ToolSet {},
70+ }
71+ datav2 , err = os .ReadFile ("testdata/openapi_v2.yaml" )
72+ require .NoError (t , err )
73+ _ , err = readTool (context .Background (), nil , & prgv2yaml , & source {Content : datav2 }, "" )
74+ require .NoError (t , err , "failed to read openapi v2 (yaml)" )
75+ require .Equal (t , 3 , numOpenAPITools (prgv2yaml .ToolSet ), "expected 3 openapi tools" )
76+
77+ require .EqualValuesf (t , prgv2json .ToolSet , prgv2yaml .ToolSet , "expected same toolset for openapi v2 json and yaml" )
78+ }
79+
2080func TestHelloWorld (t * testing.T ) {
2181 prg , err := Program (context .Background (),
2282 "https://raw.githubusercontent.com/ibuildthecloud/test/bafe5a62174e8a0ea162277dcfe3a2ddb7eea928/example/sub/tool.gpt" ,
0 commit comments