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