aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar Florian Weikert <fwe@google.com>2016-04-12 11:26:58 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2016-04-12 13:59:08 +0000
commit1250fdac4c7769cfa200af8b4f9b061024356fea (patch)
tree90298c1ac2d939d61a7774d3d3e7be93f9afb12e /src/test/java/com/google/devtools/build/lib
parent6ebc7dbc141926882da81bebb4a75dd5370cda80 (diff)
*** Reason for rollback *** -- MOS_MIGRATED_REVID=119625653
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib')
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java4
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java62
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java5
3 files changed, 69 insertions, 2 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
index a690340f7c..c7fa352d40 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
@@ -1449,8 +1449,8 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
}
protected String getErrorMsgNonEmptyList(String attrName, String ruleType, String ruleName) {
- return "in " + attrName + " attribute of " + ruleType + " rule " + ruleName + ": attribute "
- + "must be non empty";
+ return "non empty attribute '" + attrName + "' in '" + ruleType
+ + "' rule '" + ruleName + "' has to have at least one value";
}
protected String getErrorMsgMandatoryMissing(String attrName, String ruleType) {
diff --git a/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java b/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java
index 36d539a6ec..93ca76a9b3 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/RuleClassTest.java
@@ -613,6 +613,68 @@ public class RuleClassTest extends PackageLoadingTestCase {
attributes.get("my-sorted-stringlist-attr", Type.STRING_LIST));
}
+ @Test
+ public void testNonEmptyGood() throws Exception {
+ RuleClass mneRuleClass = setupNonEmpty(
+ attr("list1", LABEL_LIST).mandatory().legacyAllowAnyFileType().build(),
+ attr("list2", LABEL_LIST).nonEmpty().legacyAllowAnyFileType().build(),
+ attr("list3", STRING_LIST).nonEmpty().build());
+
+ Map<String, Object> attributeValues = new LinkedHashMap<>();
+ attributeValues.put("list1", Lists.newArrayList());
+ attributeValues.put("list2", Lists.newArrayList(":nodup1", ":nodup2"));
+ attributeValues.put("list3", Lists.newArrayList("val1", "val2"));
+
+ createRule(mneRuleClass, "ruleTestMNE", attributeValues, testRuleLocation);
+ }
+
+ @Test
+ public void testNonEmptyFail() throws Exception {
+ RuleClass mandNonEmptyRuleClass = setupNonEmpty(
+ attr("list", LABEL_LIST).nonEmpty().legacyAllowAnyFileType().build());
+
+ Map<String, Object> attributeValues = new LinkedHashMap<>();
+ attributeValues.put("list", Lists.newArrayList());
+
+ reporter.removeHandler(failFastHandler);
+ createRule(mandNonEmptyRuleClass, "ruleTestMNE", attributeValues, testRuleLocation);
+
+ assertSame(1, eventCollector.count());
+ assertContainsEvent(getErrorMsgNonEmptyList(
+ "list", "ruleMNE", "//testpackage:ruleTestMNE"));
+ }
+
+ private RuleClass setupNonEmpty(Attribute... attributes) {
+ RuleClass mandNonEmptyRuleClass = new RuleClass(
+ "ruleMNE", false, false, false, false, false, false,
+ ImplicitOutputsFunction.NONE, RuleClass.NO_CHANGE, DUMMY_CONFIGURED_TARGET_FACTORY,
+ PredicatesWithMessage.<Rule>alwaysTrue(), PREFERRED_DEPENDENCY_PREDICATE,
+ ImmutableSet.<Class<?>>of(), null, NO_EXTERNAL_BINDINGS, null, ImmutableSet.<Class<?>>of(),
+ MissingFragmentPolicy.FAIL_ANALYSIS, true, attributes);
+ return mandNonEmptyRuleClass;
+ }
+
+ @Test
+ public void testNonEmptyWrongDefVal() throws Exception {
+ List<Label> emptyList = ImmutableList.of();
+ RuleClass mandNonEmptyRuleClass = new RuleClass(
+ "ruleMNE", false, false, false, false, false, false,
+ ImplicitOutputsFunction.NONE, RuleClass.NO_CHANGE, DUMMY_CONFIGURED_TARGET_FACTORY,
+ PredicatesWithMessage.<Rule>alwaysTrue(), PREFERRED_DEPENDENCY_PREDICATE,
+ ImmutableSet.<Class<?>>of(), null, NO_EXTERNAL_BINDINGS, null, ImmutableSet.<Class<?>>of(),
+ MissingFragmentPolicy.FAIL_ANALYSIS, true, attr("list", LABEL_LIST)
+ .nonEmpty().legacyAllowAnyFileType().value(emptyList).build());
+
+ Map<String, Object> attributeValues = new LinkedHashMap<>();
+ reporter.removeHandler(failFastHandler);
+ createRule(mandNonEmptyRuleClass, "ruleTestMNE", attributeValues, testRuleLocation);
+
+ assertSame(1, eventCollector.count());
+
+ assertContainsEvent(getErrorMsgNonEmptyList(
+ "list", "ruleMNE", "//testpackage:ruleTestMNE"));
+ }
+
private Rule createRule(RuleClass ruleClass, String name, Map<String, Object> attributeValues,
Location location) throws LabelSyntaxException, InterruptedException {
Package.Builder pkgBuilder = createDummyPackageBuilder();
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java b/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java
index 7af31eccd8..1a0c5d9877 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java
@@ -276,4 +276,9 @@ public abstract class PackageLoadingTestCase extends FoundationTestCase {
skyframeExecutor.invalidateFilesUnderPathForTesting(
reporter, ModifiedFileSet.EVERYTHING_MODIFIED, rootDirectory);
}
+
+ protected String getErrorMsgNonEmptyList(String attrName, String ruleType, String ruleName) {
+ return "non empty attribute '" + attrName + "' in '" + ruleType
+ + "' rule '" + ruleName + "' has to have at least one value";
+ }
}