Hey Michele

The particular test you mention has a bypass feature for languages which 
prevent you from returning invalid json (statically typed ones). You can set 
the skip flag for the test and you’re done. The swift runtime does this for 
example. In java I also skipped this test but added a second explicit test 
where I returned null and checked the error handling accordingly.

See here for swift test bypass
https://github.com/apache/incubator-openwhisk-runtime-swift/blob/2b9bad5b2cc1e273fc61109a6d96c742578cbf1a/tests/src/test/scala/runtime/actionContainers/SwiftActionContainerTests.scala#L48

And here for java null test
https://.com/apache/incubator-openwhisk-runtime-java/blob/7cd17899c4a06198fa0d783df8520dfe92352954/tests/src/test/scala/actionContainers/JavaActionContainerTests.scala#L317
https://g://ithub.com/apache/incubator-openwhisk-runtime-java/blob/7cd17899c4a06198fa0d783df8520dfe92352954/tests/src/test/scala/actionContainers/JavaActionContainerTests.scala#L317ahttps://github.com/apache/incubator-openwhisk-runtime-java/blob/7cd17899c4a06198fa0d783df8520dfe92352954/tests/src/test/scala/actionContainers/JavaActionContainerTests.scala#L317che/incubator-openwhisk-runtime-java/blob/7cd17899c4a06198fa0d783df8520dfe92352954/tests/src/test/scala/actionContainers/JavaActionContainerTests.scala#L317
https://github.com/apache/incubator-openwhisk-runtime-java/blob/7cd17899c4a06198fa0d783df8520dfe92352954/tests/src/test/scala/actionContainers/JavaActionContainerTests.scala#L317


Does this help?

-r

> On Sep 1, 2018, at 5:24 AM, Michele Sciabarra <[email protected]> wrote:
> 
> Hello, I am in the process of cleaning the Golang runtime, and I am 
> implementing the tests in the trait BasicActionRunnerTests.
> 
> In the process, I am cleaning a number of things. 
> I have now a "stupid" problem.
> 
> I would like to change (as suggested by Carlos) the signature of an action 
> from the current
> 
>   func Main(event json.RawMessage) (json.RawMessage, error) 
> 
> to
> 
>  func Main(event map[string]interface{}) map[string]interface{}
> 
> this express better the fact the input and the output are expected to be 
> object, and is also saves a "json.Marshal" and "json.Unmarshal" in the main. 
> It is helpful for simple cases.
> 
> However, I cannot do it! Because of this (mandatory) test for runtimes:  
> "testNotReturningJson"
> 
> The test checks that the runtime can reject an action that returns something 
> like a  simple string and not a json object ( BTW, a string IS valid JSON, so 
> test is not named properly: should be: testNotRetuningObjectJson) 
> 
> In any case changing the signature I do not have any more any way to have a 
> misbehaving action that produces something that is not valid object, because 
> if I force the action to return a map of strings, it will be always 
> serialized back to a json object. 
> 
> Hence I have no way to pass this test!  What I can do?
> 
> -- 
>  Michele Sciabarra
>  [email protected]

Reply via email to