diff options
author | 2016-04-12 11:26:58 +0000 | |
---|---|---|
committer | 2016-04-12 13:59:08 +0000 | |
commit | 1250fdac4c7769cfa200af8b4f9b061024356fea (patch) | |
tree | 90298c1ac2d939d61a7774d3d3e7be93f9afb12e /src/test/java/com/google/devtools/build/lib | |
parent | 6ebc7dbc141926882da81bebb4a75dd5370cda80 (diff) |
Rollback of commit 351475627b9e94e5afdf472cbf465f49c433a25e.
*** Reason for rollback ***
--
MOS_MIGRATED_REVID=119625653
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib')
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"; + } } |