summaryrefslogtreecommitdiffhomepage
path: root/test/runtimes/defs.bzl
diff options
context:
space:
mode:
Diffstat (limited to 'test/runtimes/defs.bzl')
-rw-r--r--test/runtimes/defs.bzl79
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
)