From ac7e0604414fc9493a6b578a23e7743c38133714 Mon Sep 17 00:00:00 2001 From: iirina Date: Tue, 25 Jun 2019 00:33:12 -0700 Subject: [PATCH] Check for both :lcov_merger and $lcov_merger attributes in TestActionBuilder. 384e1cb renamed an attribute from `$lcov_merger` to `:lcov_merger`, which is a breaking change and broke rules_go. This PR changes the test runner to check both attribute names for backwards compatibility. The next step is to introduce an incompatible flag to remove the former. Fixes #8670 Closes #8709. PiperOrigin-RevId: 254915099 --- .../build/lib/analysis/test/TestActionBuilder.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java b/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java index c702722fbffc7b..6e8ee8d81caa88 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/test/TestActionBuilder.java @@ -269,9 +269,15 @@ private TestParams createTestAction(int shards) { extraTestEnv.put(BAZEL_CC_COVERAGE_TOOL, GCOV_TOOL); // We don't add this attribute to non-supported test target + String lcovMergerAttr = null; if (ruleContext.isAttrDefined(":lcov_merger", LABEL)) { + lcovMergerAttr = ":lcov_merger"; + } else if (ruleContext.isAttrDefined("$lcov_merger", LABEL)) { + lcovMergerAttr = "$lcov_merger"; + } + if (lcovMergerAttr != null) { TransitiveInfoCollection lcovMerger = - ruleContext.getPrerequisite(":lcov_merger", Mode.TARGET); + ruleContext.getPrerequisite(lcovMergerAttr, Mode.TARGET); FilesToRunProvider lcovFilesToRun = lcovMerger.getProvider(FilesToRunProvider.class); if (lcovFilesToRun != null) { extraTestEnv.put(LCOV_MERGER, lcovFilesToRun.getExecutable().getExecPathString()); @@ -286,7 +292,7 @@ private TestParams createTestAction(int shards) { inputsBuilder.add(lcovMergerArtifact); } else { ruleContext.attributeError( - ":lcov_merger", + lcovMergerAttr, "the LCOV merger should be either an executable or a single artifact"); } }