@@ -2,10 +2,12 @@ package tests
2
2
3
3
import (
4
4
"context"
5
+ "encoding/json"
5
6
"testing"
6
7
7
8
"github.com/gptscript-ai/gptscript/pkg/loader"
8
9
"github.com/gptscript-ai/gptscript/pkg/tests/tester"
10
+ "github.com/hexops/autogold/v2"
9
11
"github.com/stretchr/testify/require"
10
12
)
11
13
@@ -111,3 +113,92 @@ echo '{"env": {"CRED2": "that also worked"}}'
111
113
resp , err := r .Chat (context .Background (), nil , prg , nil , "" )
112
114
r .AssertStep (t , resp , err )
113
115
}
116
+
117
+ func TestFilterArgs (t * testing.T ) {
118
+ r := tester .NewRunner (t )
119
+ prg , err := loader .ProgramFromSource (context .Background (), `
120
+ inputfilters: input with ${Foo}
121
+ inputfilters: input with foo
122
+ inputfilters: input with *
123
+ outputfilters: output with *
124
+ outputfilters: output with foo
125
+ outputfilters: output with ${Foo}
126
+ params: Foo: a description
127
+
128
+ #!/bin/bash
129
+ echo ${FOO}
130
+
131
+ ---
132
+ name: input
133
+ params: notfoo: a description
134
+
135
+ #!/bin/bash
136
+ echo "${GPTSCRIPT_INPUT}"
137
+
138
+ ---
139
+ name: output
140
+ params: notfoo: a description
141
+
142
+ #!/bin/bash
143
+ echo "${GPTSCRIPT_INPUT}"
144
+ ` , "" )
145
+ require .NoError (t , err )
146
+
147
+ resp , err := r .Chat (context .Background (), nil , prg , nil , `{"foo":"baz", "start": true}` )
148
+ r .AssertStep (t , resp , err )
149
+
150
+ data := map [string ]any {}
151
+ err = json .Unmarshal ([]byte (resp .Content ), & data )
152
+ require .NoError (t , err )
153
+
154
+ autogold .Expect (map [string ]interface {}{
155
+ "chat" : false ,
156
+ "continuation" : false ,
157
+ "notfoo" : "baz" ,
158
+ "output" : `{"chat":false,"continuation":false,"notfoo":"foo","output":"{\"chat\":false,\"continuation\":false,\"foo\":\"baz\",\"input\":\"{\\\"foo\\\":\\\"baz\\\",\\\"input\\\":\\\"{\\\\\\\"foo\\\\\\\":\\\\\\\"baz\\\\\\\", \\\\\\\"start\\\\\\\": true}\\\",\\\"notfoo\\\":\\\"baz\\\",\\\"start\\\":true}\\n\",\"notfoo\":\"foo\",\"output\":\"baz\\n\",\"start\":true}\n"}
159
+ ` ,
160
+ }).Equal (t , data )
161
+
162
+ val := data ["output" ].(string )
163
+ data = map [string ]any {}
164
+ err = json .Unmarshal ([]byte (val ), & data )
165
+ require .NoError (t , err )
166
+ autogold .Expect (map [string ]interface {}{
167
+ "chat" : false ,
168
+ "continuation" : false ,
169
+ "notfoo" : "foo" ,
170
+ "output" : `{"chat":false,"continuation":false,"foo":"baz","input":"{\"foo\":\"baz\",\"input\":\"{\\\"foo\\\":\\\"baz\\\", \\\"start\\\": true}\",\"notfoo\":\"baz\",\"start\":true}\n","notfoo":"foo","output":"baz\n","start":true}
171
+ ` ,
172
+ }).Equal (t , data )
173
+
174
+ val = data ["output" ].(string )
175
+ data = map [string ]any {}
176
+ err = json .Unmarshal ([]byte (val ), & data )
177
+ require .NoError (t , err )
178
+ autogold .Expect (map [string ]interface {}{
179
+ "chat" : false ,
180
+ "continuation" : false ,
181
+ "foo" : "baz" , "input" : `{"foo":"baz","input":"{\"foo\":\"baz\", \"start\": true}","notfoo":"baz","start":true}
182
+ ` ,
183
+ "notfoo" : "foo" ,
184
+ "output" : "baz\n " ,
185
+ "start" : true ,
186
+ }).Equal (t , data )
187
+
188
+ val = data ["input" ].(string )
189
+ data = map [string ]any {}
190
+ err = json .Unmarshal ([]byte (val ), & data )
191
+ require .NoError (t , err )
192
+ autogold .Expect (map [string ]interface {}{
193
+ "foo" : "baz" ,
194
+ "input" : `{"foo":"baz", "start": true}` ,
195
+ "notfoo" : "baz" ,
196
+ "start" : true ,
197
+ }).Equal (t , data )
198
+
199
+ val = data ["input" ].(string )
200
+ data = map [string ]any {}
201
+ err = json .Unmarshal ([]byte (val ), & data )
202
+ require .NoError (t , err )
203
+ autogold .Expect (map [string ]interface {}{"foo" : "baz" , "start" : true }).Equal (t , data )
204
+ }
0 commit comments