aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools/build_rules
diff options
context:
space:
mode:
authorGravatar John Cater <jcater@google.com>2016-11-30 19:01:23 +0000
committerGravatar Irina Iancu <elenairina@google.com>2016-12-01 10:15:49 +0000
commitb89f30e129a4ef6eb1e81fb865117e4845892d74 (patch)
tree9468c2b64d7ce310717326c1ad09ae1fedd1f846 /tools/build_rules
parent43ad03290228adc8187853f83be073119c6f9aaa (diff)
Add support for rules_test on rules in a different repository or in the
root package. -- Change-Id: Ibbc4119ec65c27ad1f85a74450815195d18f5128 Reviewed-on: https://cr.bazel.build/7571 MOS_MIGRATED_REVID=140625048
Diffstat (limited to 'tools/build_rules')
-rw-r--r--tools/build_rules/test_rules.bzl19
1 files changed, 18 insertions, 1 deletions
diff --git a/tools/build_rules/test_rules.bzl b/tools/build_rules/test_rules.bzl
index a9b9d2d722..02fcf32ee4 100644
--- a/tools/build_rules/test_rules.bzl
+++ b/tools/build_rules/test_rules.bzl
@@ -184,9 +184,26 @@ def _rule_test_impl(ctx):
rule_name = str(rule_.label)
exe = ctx.outputs.executable
if ctx.attr.generates:
- prefix = rule_.label.package + "/"
+ # Generate the proper prefix to remove from generated files.
+ prefix_parts = []
+
+ if rule_.label.workspace_root:
+ # Create a prefix that is correctly relative to the output of this rule.
+ prefix_parts = ["..", strip_prefix("external/", rule_.label.workspace_root)]
+
+ if rule_.label.package:
+ prefix_parts.append(rule_.label.package)
+
+ prefix = "/".join(prefix_parts)
+
+ if prefix:
+ # If the prefix isn't empty, it needs a trailing slash.
+ prefix = prefix + "/"
+
# TODO(bazel-team): Use set() instead of sorted() once
# set comparison is implemented.
+ # TODO(bazel-team): Use a better way to determine if two paths refer to
+ # the same file.
generates = sorted(ctx.attr.generates)
generated = sorted([strip_prefix(prefix, f.short_path)
for f in rule_.files])