diff options
author | 2017-09-12 14:35:11 +0200 | |
---|---|---|
committer | 2017-09-12 15:48:13 +0200 | |
commit | 139543d3320f0336b012c2af020ed68fe5c49367 (patch) | |
tree | f9cd5cc6f590d5f635de4d4c573b2af4c3930f07 /src | |
parent | 1a72fb7b89ccff0841a71e461ada84cd1a24958c (diff) |
Fix string representations for root objects
Root objects should not expose their absolute paths as they break hermeticity.
PiperOrigin-RevId: 168363549
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/actions/Root.java | 5 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/skylark/SkylarkStringRepresentationsTest.java | 21 |
2 files changed, 24 insertions, 2 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/actions/Root.java b/src/main/java/com/google/devtools/build/lib/actions/Root.java index 48abb2385e..81cab786ef 100644 --- a/src/main/java/com/google/devtools/build/lib/actions/Root.java +++ b/src/main/java/com/google/devtools/build/lib/actions/Root.java @@ -222,6 +222,11 @@ public final class Root implements Comparable<Root>, Serializable, SkylarkValue @Override public void repr(SkylarkPrinter printer) { + printer.append(isSourceRoot() ? "<source root>" : "<derived root>"); + } + + @Override + public void reprLegacy(SkylarkPrinter printer) { printer.append(toString()); } } diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkStringRepresentationsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkStringRepresentationsTest.java index 8db33169eb..78618b5fd5 100644 --- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkStringRepresentationsTest.java +++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkStringRepresentationsTest.java @@ -179,6 +179,8 @@ public class SkylarkStringRepresentationsTest extends SkylarkTestCase { ")", "", "def _check_impl(ctx):", + " source_file = ctx.attr.srcs[0].files.to_list()[0]", + " generated_file = ctx.attr.srcs[1].files.to_list()[0]", " objects = {", " 'target': ctx.attr.deps[0],", " 'alias_target': ctx.attr.deps[1],", @@ -188,8 +190,10 @@ public class SkylarkStringRepresentationsTest extends SkylarkTestCase { " 'rule_ctx': ctx,", " 'aspect_ctx': ctx.attr.asp_deps[0][aspect_ctx_provider].ctx,", " 'aspect_ctx.rule': ctx.attr.asp_deps[0][aspect_ctx_provider].rule,", - " 'source_file': ctx.attr.srcs[0].files.to_list()[0],", - " 'generated_file': ctx.attr.srcs[1].files.to_list()[0],", + " 'source_file': source_file,", + " 'generated_file': generated_file,", + " 'source_root': source_file.root,", + " 'generated_root': generated_file.root,", " }", " return struct(**prepare_params(objects))", "check = rule(", @@ -335,6 +339,19 @@ public class SkylarkStringRepresentationsTest extends SkylarkTestCase { } @Test + public void testStringRepresentations_Root() throws Exception { + setSkylarkSemanticsOptions("--incompatible_descriptive_string_representations=true"); + + generateFilesToTestStrings(); + ConfiguredTarget target = getConfiguredTarget("//test/skylark:check"); + + for (String suffix : SUFFIXES) { + assertThat(target.get("source_root" + suffix)).isEqualTo("<source root>"); + assertThat(target.get("generated_root" + suffix)).isEqualTo("<derived root>"); + } + } + + @Test public void testStringRepresentations_Glob() throws Exception { setSkylarkSemanticsOptions("--incompatible_descriptive_string_representations=true"); |