diff options
Diffstat (limited to 'test/runtimes/defs.bzl')
-rw-r--r-- | test/runtimes/defs.bzl | 79 |
1 files changed, 58 insertions, 21 deletions
diff --git a/test/runtimes/defs.bzl b/test/runtimes/defs.bzl index 3eb494958..399060fa4 100644 --- a/test/runtimes/defs.bzl +++ b/test/runtimes/defs.bzl @@ -2,32 +2,69 @@ load("//tools:defs.bzl", "go_test") -def runtime_test(name, lang, exclude_file, **kwargs): - go_test( - name = name, - srcs = ["runner.go"], - args = [ - "--lang", - lang, - "--image", - name, # Resolved as images/runtimes/%s. +def _runtime_test_impl(ctx): + # Construct arguments. + args = [ + "--lang", + ctx.attr.lang, + "--image", + ctx.attr.image, + ] + if ctx.attr.exclude_file: + args += [ "--exclude_file", - "test/runtimes/" + exclude_file, - ], - data = [ - exclude_file, - "//test/runtimes/proctor", - ], - defines_main = 1, + ctx.files.exclude_file[0].short_path, + ] + + # Build a runner. + runner = ctx.actions.declare_file("%s-executer" % ctx.label.name) + runner_content = "\n".join([ + "#!/bin/bash", + "%s %s $@\n" % (ctx.files._runner[0].short_path, " ".join(args)), + ]) + ctx.actions.write(runner, runner_content, is_executable = True) + + # Return the runner. + return [DefaultInfo( + executable = runner, + runfiles = ctx.runfiles( + files = ctx.files._runner + ctx.files.exclude_file + ctx.files._proctor, + collect_default = True, + collect_data = True, + ), + )] + +_runtime_test = rule( + implementation = _runtime_test_impl, + attrs = { + "image": attr.string( + mandatory = False, + ), + "lang": attr.string( + mandatory = True, + ), + "exclude_file": attr.label( + mandatory = False, + allow_single_file = True, + ), + "_runner": attr.label( + default = "//test/runtimes/runner:runner", + ), + "_proctor": attr.label( + default = "//test/runtimes/proctor:proctor", + ), + }, + test = True, +) + +def runtime_test(name, **kwargs): + _runtime_test( + name = name, + image = name, # Resolved as images/runtimes/%s. tags = [ "local", "manual", ], - deps = [ - "//pkg/log", - "//pkg/test/dockerutil", - "//pkg/test/testutil", - ], **kwargs ) |