{ "test-action": { "vars": [ "TEST_ENV" , "ATTEMPT" , "name" , "test type name" , "test.sh" , "data" , "extra_infra" , "keep" , "keep-dirs" , "transition" , "TEST_COMPATIBLE_REMOTE" , "TEST_REMOTE_EXECUTION" , "TIMEOUT_SCALE" , "TEST_STANDALONE_SERVE" , "USES_SERVE" ] , "imports": { "artifacts_list": ["@", "rules", "", "field_artifacts_list"] , "runfiles_list": ["@", "rules", "", "field_runfiles_list"] , "artifacts": ["@", "rules", "", "field_artifacts"] , "stage": ["@", "rules", "", "stage_singleton_field"] } , "expression": { "type": "let*" , "bindings": [ ["fieldname", "runner"] , ["location", "runner"] , ["runner", {"type": "CALL_EXPRESSION", "name": "stage"}] , ["fieldname", "just"] , ["just", {"type": "CALL_EXPRESSION", "name": "artifacts"}] , ["fieldname", "deps"] , [ "deps" , { "type": "TREE" , "$1": { "type": "disjoint_map_union" , "msg": "Field \"deps\" has to stage in a conflict free way" , "$1": { "type": "++" , "$1": [ {"type": "CALL_EXPRESSION", "name": "runfiles_list"} , {"type": "CALL_EXPRESSION", "name": "artifacts_list"} ] } } } ] , [ "attempt marker" , { "type": "if" , "cond": { "type": "==" , "$1": {"type": "var", "name": "ATTEMPT"} , "$2": null } , "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" , "pwd" , "remotestdout" , "remotestderr" ] , {"type": "var", "name": "extra_infra"} , { "type": "foreach" , "var": "filename" , "range": {"type": "var", "name": "keep"} , "body": { "type": "join" , "$1": ["work/", {"type": "var", "name": "filename"}] } } ] } ] , [ "out_dirs" , { "type": "++" , "$1": [ { "type": "if" , "cond": {"type": "var", "name": "USES_SERVE"} , "then": { "type": "if" , "cond": {"type": "var", "name": "TEST_STANDALONE_SERVE"} , "then": ["serve"] , "else": ["remote", "serve"] } , "else": ["remote"] } , { "type": "foreach" , "var": "dir_path" , "range": {"type": "var", "name": "keep-dirs"} , "body": { "type": "join" , "$1": ["work/", {"type": "var", "name": "dir_path"}] } } ] } ] , [ "inputs" , { "type": "map_union" , "$1": [ { "type": "singleton_map" , "key": "work" , "value": {"type": "var", "name": "deps"} } , { "type": "to_subdir" , "subdir": "staged" , "$1": {"type": "var", "name": "just"} } , {"type": "var", "name": "runner"} , {"type": "var", "name": "test.sh"} , {"type": "var", "name": "data"} , {"type": "var", "name": "attempt marker"} ] } ] , [ "cmd" , { "type": "++" , "$1": [ [ "./runner" , { "type": "if" , "cond": {"type": "var", "name": "TEST_COMPATIBLE_REMOTE"} , "then": "true" , "else": "false" } , { "type": "json_encode" , "$1": {"type": "var", "name": "TEST_REMOTE_EXECUTION"} } ] , {"type": "var", "name": "keep"} ] } ] , [ "test_env" , {"type": "var", "name": "TEST_ENV", "default": {"type": "empty_map"}} ] ] , "body": { "type": "if" , "cond": {"type": "==", "$1": {"type": "var", "name": "ATTEMPT"}, "$2": null} , "then": { "type": "ACTION" , "outs": {"type": "var", "name": "outs"} , "out_dirs": {"type": "var", "name": "out_dirs"} , "inputs": {"type": "var", "name": "inputs"} , "cmd": {"type": "var", "name": "cmd"} , "env": {"type": "var", "name": "test_env"} , "timeout scaling": {"type": "var", "name": "TIMEOUT_SCALE", "default": 1.0} , "may_fail": ["test"] , "fail_message": { "type": "join" , "$1": [ "shell test with " , { "type": "if" , "cond": {"type": "var", "name": "TEST_COMPATIBLE_REMOTE"} , "then": "compatible" , "else": "native" } , " " , {"type": "var", "name": "test type name"} , " " , {"type": "var", "name": "name"} , " failed" ] } } , "else": { "type": "ACTION" , "outs": {"type": "var", "name": "outs"} , "out_dirs": {"type": "var", "name": "out_dirs"} , "inputs": {"type": "var", "name": "inputs"} , "cmd": {"type": "var", "name": "cmd"} , "env": {"type": "var", "name": "test_env"} , "timeout scaling": {"type": "var", "name": "TIMEOUT_SCALE", "default": 1.0} , "may_fail": ["test"] , "no_cache": ["test"] , "fail_message": { "type": "join" , "$1": [ "shell test with " , {"type": "var", "name": "test type name"} , " " , {"type": "var", "name": "name"} , " failed (Run " , {"type": "var", "name": "ATTEMPT"} , ")" ] } } } } } , "test-result": { "vars": [ "TEST_ENV" , "name" , "test type name" , "test.sh" , "data" , "extra_infra" , "keep" , "keep-dirs" , "transition" , "TEST_COMPATIBLE_REMOTE" , "TEST_REMOTE_EXECUTION" , "TIMEOUT_SCALE" , "TEST_STANDALONE_SERVE" , "USES_SERVE" ] , "imports": {"action": "test-action"} , "expression": { "type": "let*" , "bindings": [ ["test-results", {"type": "CALL_EXPRESSION", "name": "action"}] , [ "runfiles" , { "type": "singleton_map" , "key": {"type": "var", "name": "name"} , "value": {"type": "TREE", "$1": {"type": "var", "name": "test-results"}} } ] ] , "body": { "type": "RESULT" , "artifacts": {"type": "var", "name": "test-results"} , "runfiles": {"type": "var", "name": "runfiles"} } } } }