diff options
author | vladmos <vladmos@google.com> | 2017-07-17 23:15:21 +0200 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2017-07-18 09:49:16 +0200 |
commit | 7f6d3a13b63b702a6c56010610c3f0018490dfec (patch) | |
tree | 4d8ec17e33dafbc97bbcefc03e2d9d002dfbd844 /src/test/java/com/google/devtools/build | |
parent | b1829f138f444f5efcd65960c2a7a95879914325 (diff) |
Improve attribute and index error messages for targets
Instead of "object of type 'Target'" a representation of the
target can be used for improved readability.
PiperOrigin-RevId: 162267961
Diffstat (limited to 'src/test/java/com/google/devtools/build')
3 files changed, 16 insertions, 11 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcSkylarkTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcSkylarkTest.java index 4dea91f381..3f7e492882 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcSkylarkTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcSkylarkTest.java @@ -130,7 +130,8 @@ public class ObjcSkylarkTest extends ObjcRuleTestCase { assertThat(e).hasMessageThat().contains("dep.objc"); assertThat(e) .hasMessageThat() - .contains("target (rule class of 'cc_library') doesn't have provider 'objc'."); + .contains("<target //examples/apple_skylark:lib> (rule 'cc_library') " + + "doesn't have provider 'objc'"); } } diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java index 5dde93b421..0431e99845 100644 --- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java +++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleContextTest.java @@ -1552,7 +1552,9 @@ public class SkylarkRuleContextTest extends SkylarkTestCase { fail("Should have failed due to trying to access actions of a rule not marked " + "_skylark_testable"); } catch (Exception e) { - assertThat(e).hasMessage("Object of type Target doesn't contain declared provider Actions"); + assertThat(e).hasMessageThat().contains( + "<target //test:undertest> (rule 'undertest_rule') doesn't contain " + + "declared provider 'Actions'"); } } diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java index d539354696..72ae65e0b4 100644 --- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java +++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java @@ -704,16 +704,16 @@ public class SkylarkRuleImplementationFunctionsTest extends SkylarkTestCase { @Test public void testRunfilesBadMapGenericType() throws Exception { checkErrorContains( - "expected type 'string' for 'symlinks' key " + "but got type 'int' instead", + "expected type 'string' for 'symlinks' key but got type 'int' instead", "ruleContext.runfiles(symlinks = {123: ruleContext.files.srcs[0]})"); checkErrorContains( - "expected type 'File' for 'symlinks' value " + "but got type 'int' instead", + "expected type 'File' for 'symlinks' value but got type 'int' instead", "ruleContext.runfiles(symlinks = {'some string': 123})"); checkErrorContains( - "expected type 'string' for 'root_symlinks' key " + "but got type 'int' instead", + "expected type 'string' for 'root_symlinks' key but got type 'int' instead", "ruleContext.runfiles(root_symlinks = {123: ruleContext.files.srcs[0]})"); checkErrorContains( - "expected type 'File' for 'root_symlinks' value " + "but got type 'int' instead", + "expected type 'File' for 'root_symlinks' value but got type 'int' instead", "ruleContext.runfiles(root_symlinks = {'some string': 123})"); } @@ -844,7 +844,7 @@ public class SkylarkRuleImplementationFunctionsTest extends SkylarkTestCase { public void testNoSuchProviderErrorMessage() throws Exception { checkErrorContains( createRuleContext("//foo:bar"), - "target (rule class of 'java_library') " + "doesn't have provider 'my_provider'.", + "<target //foo:jl> (rule 'java_library') doesn't have provider 'my_provider'", "ruleContext.attr.srcs[0].my_provider"); } @@ -1345,7 +1345,8 @@ public class SkylarkRuleImplementationFunctionsTest extends SkylarkTestCase { } catch (AssertionError expected) { assertThat(expected) .hasMessageThat() - .contains("Object of type Target doesn't " + "contain declared provider unused_provider"); + .contains("<target //test:dep_rule> (rule 'foo_rule') doesn't contain " + + "declared provider 'unused_provider'"); } } @@ -1391,7 +1392,7 @@ public class SkylarkRuleImplementationFunctionsTest extends SkylarkTestCase { assertThat(expected) .hasMessageThat() .contains( - "Type Target only supports indexing " + "by object constructors, got string instead"); + "Type Target only supports indexing by object constructors, got string instead"); } } @@ -1421,7 +1422,8 @@ public class SkylarkRuleImplementationFunctionsTest extends SkylarkTestCase { } catch (AssertionError expected) { assertThat(expected) .hasMessageThat() - .contains("Object of type Target doesn't " + "contain declared provider unused_provider"); + .contains("<input file target //test:input.txt> doesn't contain " + + "declared provider 'unused_provider'"); } } @@ -1504,7 +1506,7 @@ public class SkylarkRuleImplementationFunctionsTest extends SkylarkTestCase { assertThat(expected) .hasMessageThat() .contains( - "Type Target only supports querying by object " + "constructors, got string instead"); + "Type Target only supports querying by object constructors, got string instead"); } } |