summaryrefslogtreecommitdiff
path: root/shell/test/EXPRESSIONS
diff options
context:
space:
mode:
Diffstat (limited to 'shell/test/EXPRESSIONS')
-rw-r--r--shell/test/EXPRESSIONS127
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"}