From 593d26982abe26ff06ab080dda08c2fd3b84ccad Mon Sep 17 00:00:00 2001 From: Jay Conrod Date: Mon, 15 Oct 2018 12:28:57 -0400 Subject: [PATCH] lcov_merger: workaround for Bazel 0.18.0 coverage When collecting coverage, Bazel now expects test rules to have an implicit "$lcov_merger" or "_lcov_merger" attribute that points to a binary to be run by the test driver script. This change adds a dummy _lcov_merger attribute to go_test. The script does nothing for now. Related bazelbuild/bazel#6293 --- go/private/rules/test.bzl | 6 ++++++ go/tools/builders/BUILD.bazel | 6 ++++++ go/tools/builders/lcov_merger.sh | 21 +++++++++++++++++++++ 3 files changed, 33 insertions(+) create mode 100755 go/tools/builders/lcov_merger.sh diff --git a/go/private/rules/test.bzl b/go/private/rules/test.bzl index 7c8aac1561..f308c01cd4 100644 --- a/go/private/rules/test.bzl +++ b/go/private/rules/test.bzl @@ -232,6 +232,12 @@ go_test = go_rule( "rundir": attr.string(), "x_defs": attr.string_dict(), "linkmode": attr.string(default = LINKMODE_NORMAL), + # Workaround for bazelbuild/bazel#6293. See comment in lcov_merger.sh. + "_lcov_merger": attr.label( + executable = True, + default = "//go/tools/builders:lcov_merger", + cfg = "target", + ), }, executable = True, test = True, diff --git a/go/tools/builders/BUILD.bazel b/go/tools/builders/BUILD.bazel index 9a2350a8c3..c193f67d33 100644 --- a/go/tools/builders/BUILD.bazel +++ b/go/tools/builders/BUILD.bazel @@ -180,6 +180,12 @@ go_tool_binary( visibility = ["//visibility:public"], ) +sh_binary( + name = "lcov_merger", + srcs = ["lcov_merger.sh"], + visibility = ["//visibility:public"], +) + filegroup( name = "all_builder_srcs", testonly = True, diff --git a/go/tools/builders/lcov_merger.sh b/go/tools/builders/lcov_merger.sh new file mode 100755 index 0000000000..4789ffea0e --- /dev/null +++ b/go/tools/builders/lcov_merger.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Copyright 2018 The Bazel Authors. All rights reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# This is a workaround for bazelbuild/bazel#6293. Since Bazel 0.18.0, Bazel +# expects tests to have an "$lcov_merger' or "_lcov_merger" attribute that +# points to an executable. If this is missing, the test driver fails. + +exit 0