From 9be65ef2ebd7fc2719004c796237ee2ec79c041e Mon Sep 17 00:00:00 2001 From: Andreas Dangel Date: Tue, 1 Nov 2016 18:30:39 +0100 Subject: [PATCH] Add unit test for #1537 Implement strict ruleset parsing --- .../sourceforge/pmd/RuleSetFactoryTest.java | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetFactoryTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetFactoryTest.java index 286f29fc18..412c56dbb0 100644 --- a/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetFactoryTest.java +++ b/pmd-core/src/test/java/net/sourceforge/pmd/RuleSetFactoryTest.java @@ -627,6 +627,63 @@ public class RuleSetFactoryTest { ruleSetFactory.createRuleSet(ref); } + /** + * This unit test manifests the current behavior - which might change in the future. See #1537. + * + * Currently, if a ruleset is imported twice, the excludes of the first import are ignored. + * Duplicated rules are silently ignored. + * + * @throws Exception any error + * @see #1537 Implement strict ruleset parsing + * @see stackoverflow - custom ruleset not working + */ + @Test + public void testExcludeAndImportTwice() throws Exception { + RuleSetReferenceId ref1 = createRuleSetReferenceId("\n" + + "\n" + + " Custom ruleset for tests\n" + + " \n" + + " \n" + + " \n" + + "\n"); + RuleSetFactory ruleSetFactory = new RuleSetFactory(); + RuleSet ruleset = ruleSetFactory.createRuleSet(ref1); + Assert.assertNull(ruleset.getRuleByName("DummyBasicMockRule")); + + RuleSetReferenceId ref2 = createRuleSetReferenceId("\n" + + "\n" + + " Custom ruleset for tests\n" + + " \n" + + " \n" + + " \n" + + " \n" + + "\n"); + RuleSetFactory ruleSetFactory2 = new RuleSetFactory(); + RuleSet ruleset2 = ruleSetFactory2.createRuleSet(ref2); + Assert.assertNotNull(ruleset2.getRuleByName("DummyBasicMockRule")); + + RuleSetReferenceId ref3 = createRuleSetReferenceId("\n" + + "\n" + + " Custom ruleset for tests\n" + + " \n" + + " \n" + + " \n" + + " \n" + + "\n"); + RuleSetFactory ruleSetFactory3 = new RuleSetFactory(); + RuleSet ruleset3 = ruleSetFactory3.createRuleSet(ref3); + Assert.assertNotNull(ruleset3.getRuleByName("DummyBasicMockRule")); +} + private static final String REF_OVERRIDE_ORIGINAL_NAME = "" + PMD.EOL + ""