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
+ ""