@@ -37,13 +37,23 @@ func TestRunTask_MarshalJSON(t *testing.T) {
3737 Await : boolPtr (true ),
3838 Container : & Container {
3939 Image : "example-image" ,
40+ Name : "example-name" ,
4041 Command : "example-command" ,
4142 Ports : map [string ]interface {}{
4243 "8080" : "80" ,
4344 },
4445 Environment : map [string ]string {
4546 "ENV_VAR" : "value" ,
4647 },
48+ Input : "example-input" ,
49+ Arguments : []string {
50+ "arg1" ,
51+ "arg2" ,
52+ },
53+ Lifetime : & ContainerLifetime {
54+ Cleanup : "eventually" ,
55+ After : NewDurationExpr ("20s" ),
56+ },
4757 },
4858 },
4959 }
@@ -61,9 +71,16 @@ func TestRunTask_MarshalJSON(t *testing.T) {
6171 "await": true,
6272 "container": {
6373 "image": "example-image",
74+ "name": "example-name",
6475 "command": "example-command",
6576 "ports": {"8080": "80"},
66- "environment": {"ENV_VAR": "value"}
77+ "environment": {"ENV_VAR": "value"},
78+ "stdin": "example-input",
79+ "arguments": ["arg1","arg2"],
80+ "lifetime": {
81+ "cleanup": "eventually",
82+ "after": "20s"
83+ }
6784 }
6885 }
6986 }` , string (data ))
@@ -81,9 +98,18 @@ func TestRunTask_UnmarshalJSON(t *testing.T) {
8198 "await": true,
8299 "container": {
83100 "image": "example-image",
101+ "name": "example-name",
84102 "command": "example-command",
85103 "ports": {"8080": "80"},
86- "environment": {"ENV_VAR": "value"}
104+ "environment": {"ENV_VAR": "value"},
105+ "stdin": "example-input",
106+ "arguments": ["arg1","arg2"],
107+ "lifetime": {
108+ "cleanup": "eventually",
109+ "after": {
110+ "seconds": 20
111+ }
112+ }
87113 }
88114 }
89115 }`
@@ -102,9 +128,14 @@ func TestRunTask_UnmarshalJSON(t *testing.T) {
102128 assert .Equal (t , "example-command" , runTask .Run .Container .Command )
103129 assert .Equal (t , map [string ]interface {}{"8080" : "80" }, runTask .Run .Container .Ports )
104130 assert .Equal (t , map [string ]string {"ENV_VAR" : "value" }, runTask .Run .Container .Environment )
131+ assert .Equal (t , "example-name" , runTask .Run .Container .Name )
132+ assert .Equal (t , "example-input" , runTask .Run .Container .Input )
133+ assert .Equal (t , []string {"arg1" , "arg2" }, runTask .Run .Container .Arguments )
134+ assert .Equal (t , "eventually" , runTask .Run .Container .Lifetime .Cleanup )
135+ assert .Equal (t , & DurationInline {Seconds : 20 }, runTask .Run .Container .Lifetime .After .AsInline ())
105136}
106137
107- func TestRunTaskScript_MarshalJSON (t * testing.T ) {
138+ func TestRunTaskScriptArgsMap_MarshalJSON (t * testing.T ) {
108139 runTask := RunTask {
109140 TaskBase : TaskBase {
110141 If : & RuntimeExpression {Value : "${condition}" },
@@ -120,13 +151,16 @@ func TestRunTaskScript_MarshalJSON(t *testing.T) {
120151 Await : boolPtr (true ),
121152 Script : & Script {
122153 Language : "python" ,
123- Arguments : map [string ]interface {}{
124- "arg1" : "value1" ,
154+ Arguments : & RunArguments {
155+ Value : map [string ]interface {}{
156+ "arg1" : "value1" ,
157+ },
125158 },
126159 Environment : map [string ]string {
127160 "ENV_VAR" : "value" ,
128161 },
129162 InlineCode : stringPtr ("print('Hello, World!')" ),
163+ Input : "example-input" ,
130164 },
131165 },
132166 }
@@ -146,13 +180,14 @@ func TestRunTaskScript_MarshalJSON(t *testing.T) {
146180 "language": "python",
147181 "arguments": {"arg1": "value1"},
148182 "environment": {"ENV_VAR": "value"},
149- "code": "print('Hello, World!')"
183+ "code": "print('Hello, World!')",
184+ "stdin": "example-input"
150185 }
151186 }
152187 }` , string (data ))
153188}
154189
155- func TestRunTaskScript_UnmarshalJSON (t * testing.T ) {
190+ func TestRunTaskScriptArgsMap_UnmarshalJSON (t * testing.T ) {
156191 jsonData := `{
157192 "if": "${condition}",
158193 "input": { "from": {"key": "value"} },
@@ -166,7 +201,97 @@ func TestRunTaskScript_UnmarshalJSON(t *testing.T) {
166201 "language": "python",
167202 "arguments": {"arg1": "value1"},
168203 "environment": {"ENV_VAR": "value"},
169- "code": "print('Hello, World!')"
204+ "code": "print('Hello, World!')",
205+ "stdin": "example-input"
206+ }
207+ }
208+ }`
209+
210+ var runTask RunTask
211+ err := json .Unmarshal ([]byte (jsonData ), & runTask )
212+ assert .NoError (t , err )
213+ assert .Equal (t , & RuntimeExpression {Value : "${condition}" }, runTask .If )
214+ assert .Equal (t , & Input {From : & ObjectOrRuntimeExpr {Value : map [string ]interface {}{"key" : "value" }}}, runTask .Input )
215+ assert .Equal (t , & Output {As : & ObjectOrRuntimeExpr {Value : map [string ]interface {}{"result" : "output" }}}, runTask .Output )
216+ assert .Equal (t , & TimeoutOrReference {Timeout : & Timeout {After : NewDurationExpr ("10s" )}}, runTask .Timeout )
217+ assert .Equal (t , & FlowDirective {Value : "continue" }, runTask .Then )
218+ assert .Equal (t , map [string ]interface {}{"meta" : "data" }, runTask .Metadata )
219+ assert .Equal (t , true , * runTask .Run .Await )
220+ assert .Equal (t , "python" , runTask .Run .Script .Language )
221+ assert .Equal (t , map [string ]interface {}{"arg1" : "value1" }, runTask .Run .Script .Arguments .AsMap ())
222+ assert .Equal (t , map [string ]string {"ENV_VAR" : "value" }, runTask .Run .Script .Environment )
223+ assert .Equal (t , "print('Hello, World!')" , * runTask .Run .Script .InlineCode )
224+ assert .Equal (t , "example-input" , runTask .Run .Script .Input )
225+ }
226+
227+ func TestRunTaskScriptArgArray_MarshalJSON (t * testing.T ) {
228+ runTask := RunTask {
229+ TaskBase : TaskBase {
230+ If : & RuntimeExpression {Value : "${condition}" },
231+ Input : & Input {From : & ObjectOrRuntimeExpr {Value : map [string ]interface {}{"key" : "value" }}},
232+ Output : & Output {As : & ObjectOrRuntimeExpr {Value : map [string ]interface {}{"result" : "output" }}},
233+ Timeout : & TimeoutOrReference {Timeout : & Timeout {After : NewDurationExpr ("10s" )}},
234+ Then : & FlowDirective {Value : "continue" },
235+ Metadata : map [string ]interface {}{
236+ "meta" : "data" ,
237+ },
238+ },
239+ Run : RunTaskConfiguration {
240+ Await : boolPtr (true ),
241+ Script : & Script {
242+ Language : "python" ,
243+ Arguments : & RunArguments {
244+ Value : []string {
245+ "arg1=value1" ,
246+ },
247+ },
248+ Environment : map [string ]string {
249+ "ENV_VAR" : "value" ,
250+ },
251+ InlineCode : stringPtr ("print('Hello, World!')" ),
252+ Input : "example-input" ,
253+ },
254+ },
255+ }
256+
257+ data , err := json .Marshal (runTask )
258+ assert .NoError (t , err )
259+ assert .JSONEq (t , `{
260+ "if": "${condition}",
261+ "input": { "from": {"key": "value"} },
262+ "output": { "as": {"result": "output"} },
263+ "timeout": { "after": "10s" },
264+ "then": "continue",
265+ "metadata": {"meta": "data"},
266+ "run": {
267+ "await": true,
268+ "script": {
269+ "language": "python",
270+ "arguments": ["arg1=value1"],
271+ "environment": {"ENV_VAR": "value"},
272+ "code": "print('Hello, World!')",
273+ "stdin": "example-input"
274+ }
275+ }
276+ }` , string (data ))
277+ }
278+
279+ func TestRunTaskScriptArgsArray_UnmarshalJSON (t * testing.T ) {
280+ jsonData := `{
281+ "if": "${condition}",
282+ "input": { "from": {"key": "value"} },
283+ "output": { "as": {"result": "output"} },
284+ "timeout": { "after": "10s" },
285+ "then": "continue",
286+ "metadata": {"meta": "data"},
287+ "run": {
288+ "await": true,
289+ "script": {
290+ "language": "python",
291+ "arguments": ["arg1=value1"],
292+ "environment": {"ENV_VAR": "value"},
293+ "code": "print('Hello, World!')",
294+ "stdin": "example-input"
170295 }
171296 }
172297 }`
@@ -182,9 +307,10 @@ func TestRunTaskScript_UnmarshalJSON(t *testing.T) {
182307 assert .Equal (t , map [string ]interface {}{"meta" : "data" }, runTask .Metadata )
183308 assert .Equal (t , true , * runTask .Run .Await )
184309 assert .Equal (t , "python" , runTask .Run .Script .Language )
185- assert .Equal (t , map [ string ] interface {}{ "arg1" : " value1" }, runTask .Run .Script .Arguments )
310+ assert .Equal (t , [] string { "arg1= value1" }, runTask .Run .Script .Arguments . AsSlice () )
186311 assert .Equal (t , map [string ]string {"ENV_VAR" : "value" }, runTask .Run .Script .Environment )
187312 assert .Equal (t , "print('Hello, World!')" , * runTask .Run .Script .InlineCode )
313+ assert .Equal (t , "example-input" , runTask .Run .Script .Input )
188314}
189315
190316func boolPtr (b bool ) * bool {
0 commit comments