diff options
Diffstat (limited to 'src/test/docker/BUILD')
-rw-r--r-- | src/test/docker/BUILD | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/src/test/docker/BUILD b/src/test/docker/BUILD new file mode 100644 index 0000000000..7393126af3 --- /dev/null +++ b/src/test/docker/BUILD @@ -0,0 +1,102 @@ +load("//tools/build_defs/docker:docker.bzl", "docker_build") +load("//tools/build_defs/pkg:pkg.bzl", "pkg_tar") + +# This is totally non hermetic, we should really replace that by a +# docker_pull rule. +FLAVOURS = [f[f.find(".") + 1:] for f in glob(["Dockerfile.*"])] + +[ + # This is totally non hermetic. + genrule( + name = "docker-" + flavour, + srcs = ["Dockerfile." + flavour], + outs = ["docker-%s.tar" % flavour], + cmd = "\n".join([ + "DIR=\"$$(dirname $<)\"", + "IMG=\"$$(basename $<)\"", + "DOCKER=\"$${PWD}/$(location @docker//:docker)\"", + "(", + " cd $$DIR", + " $$DOCKER build -f $$IMG -t bazel_tools_cpp_test:%s ." % flavour, + ")", + "$$DOCKER save bazel_tools_cpp_test:%s > $@" % flavour, + ]), + tags = ["local"], + # Docker needs to knows how to contact the daemon from the environment. + # @docker//:docker point to a docker wrapper that copy the environment + # of the user. + tools = ["@docker//:docker"], + ) + for flavour in FLAVOURS +] + +# Just to avoid re-reading docker images all the time +[ + docker_build( + name = "base-" + flavour, + base = "docker-" + flavour, + ) + for flavour in FLAVOURS +] + +pkg_tar( + name = "bazel_cc_configure", + package_dir = "/opt/workspace", + strip_prefix = "/", + deps = ["//:bazel-distfile-tar"], +) + +[ + [docker_build( + name = "bazel_cc_configure-%s-%s" % (flavour, mode), + base = ":base-" + flavour, + entrypoint = "/opt/workspace/compile.sh && ./output/bazel test ${EXTRA_BAZEL_ARGS} //examples/cpp:hello-success_test", + env = { + "EXTRA_BAZEL_ARGS": "--spawn_strategy=standalone --genrule_strategy=standalone -c %s" % mode, + }, + tars = [":bazel_cc_configure"], + workdir = "/opt/workspace", + ) for mode in [ + "dbg", + "opt", + "fastbuild", + ]] + for flavour in FLAVOURS +] + +# TODO(#2418): reactivate debian-stretch opt (flaky) +[ + [py_test( + name = "test_cc_configure-%s-%s" % (flavour, mode), + size = "large", + srcs = ["docker_test.py"], + args = [ + "--main='$(location :bazel_cc_configure-%s-%s)'" % (flavour, mode), + "--docker='../docker/docker'", + ], + data = [ + ":bazel_cc_configure-%s-%s" % (flavour, mode), + "@docker//:docker", + ], + local = 1, + main = "docker_test.py", + tags = [ + "docker", + "exclusive", + "local", + ], + deps = ["//third_party/py/gflags"], + ) for mode in [ + "dbg", + "opt", + "fastbuild", + ]] + for flavour in FLAVOURS + if flavour != "debian-stretch" +] + +filegroup( + name = "srcs", + srcs = glob(["**"]), + visibility = ["//src:__pkg__"], +) |