diff options
Diffstat (limited to 'shell/test/EXPRESSIONS')
-rw-r--r-- | shell/test/EXPRESSIONS | 127 |
1 files changed, 91 insertions, 36 deletions
diff --git a/shell/test/EXPRESSIONS b/shell/test/EXPRESSIONS index 429cd47..2b9a62e 100644 --- a/shell/test/EXPRESSIONS +++ b/shell/test/EXPRESSIONS @@ -1,5 +1,5 @@ -{ "test-result": - { "vars": ["name", "test.sh"] +{ "test-action": + { "vars": ["name", "test.sh", "ATTEMPT"] , "expression": { "type": "let*" , "bindings": @@ -60,44 +60,99 @@ } } ] - , [ "test-results" - , { "type": "ACTION" - , "outs": - { "type": "++" - , "$1": - [ ["result", "stdout", "stderr", "time-start", "time-stop"] - , { "type": "foreach" - , "var": "filename" - , "range": {"type": "FIELD", "name": "keep"} - , "body": - { "type": "join" - , "$1": ["work/", {"type": "var", "name": "filename"}] - } - } - ] - } - , "inputs": - { "type": "map_union" - , "$1": - [ { "type": "singleton_map" - , "key": "work" - , "value": {"type": "var", "name": "deps"} - } - , {"type": "var", "name": "runner"} - , {"type": "var", "name": "test.sh"} - ] - } - , "cmd": - { "type": "++" - , "$1": [["./runner"], {"type": "FIELD", "name": "keep"}] + , [ "attempt marker" + , { "type": "if" + , "cond": + { "type": "==" + , "$1": {"type": "var", "name": "ATTEMPT"} + , "$2": null } - , "may_fail": ["test"] - , "fail_message": - { "type": "join" - , "$1": ["shell test ", {"type": "var", "name": "name"}, " failed"] + , "then": {"type": "empty_map"} + , "else": + { "type": "singleton_map" + , "key": "ATTEMPT" + , "value": + {"type": "BLOB", "data": {"type": "var", "name": "ATTEMPT"}} } } ] + , [ "outs" + , { "type": "++" + , "$1": + [ ["result", "stdout", "stderr", "time-start", "time-stop"] + , { "type": "foreach" + , "var": "filename" + , "range": {"type": "FIELD", "name": "keep"} + , "body": + { "type": "join" + , "$1": ["work/", {"type": "var", "name": "filename"}] + } + } + ] + } + ] + , [ "inputs" + , { "type": "map_union" + , "$1": + [ { "type": "singleton_map" + , "key": "work" + , "value": {"type": "var", "name": "deps"} + } + , {"type": "var", "name": "runner"} + , {"type": "var", "name": "test.sh"} + , {"type": "var", "name": "attempt marker"} + ] + } + ] + , [ "cmd" + , { "type": "++" + , "$1": [["./runner"], {"type": "FIELD", "name": "keep"}] + } + ] + ] + , "body": + { "type": "if" + , "cond": + {"type": "==", "$1": {"type": "var", "name": "ATTEMPT"}, "$2": null} + , "then": + { "type": "ACTION" + , "outs": {"type": "var", "name": "outs"} + , "inputs": {"type": "var", "name": "inputs"} + , "cmd": {"type": "var", "name": "cmd"} + , "may_fail": ["test"] + , "fail_message": + { "type": "join" + , "$1": ["shell test ", {"type": "var", "name": "name"}, " failed"] + } + } + , "else": + { "type": "ACTION" + , "outs": {"type": "var", "name": "outs"} + , "inputs": {"type": "var", "name": "inputs"} + , "cmd": {"type": "var", "name": "cmd"} + , "may_fail": ["test"] + , "no_cache": ["test"] + , "fail_message": + { "type": "join" + , "$1": + [ "shell test " + , {"type": "var", "name": "name"} + , " failed (Run " + , {"type": "var", "name": "ATTEMPT"} + , ")" + ] + } + } + } + } + } +, "test-result": + { "vars": ["name", "test.sh"] + , "imports": {"action": "test-action"} + , "expression": + { "type": "let*" + , "bindings": + [ ["test-results", {"type": "CALL_EXPRESSION", "name": "action"}] , [ "runfiles" , { "type": "singleton_map" , "key": {"type": "var", "name": "name"} |