1
2 package test.net.sourceforge.pmd;
3
4 import static org.junit.Assert.assertEquals;
5 import static org.junit.Assert.assertTrue;
6 import net.sourceforge.pmd.PMD;
7 import net.sourceforge.pmd.Report;
8 import net.sourceforge.pmd.Rule;
9 import net.sourceforge.pmd.RuleContext;
10 import net.sourceforge.pmd.RuleSet;
11 import net.sourceforge.pmd.RuleSets;
12 import net.sourceforge.pmd.SourceTypeToRuleLanguageMapper;
13
14 import org.junit.Before;
15 import org.junit.Test;
16
17 import test.net.sourceforge.pmd.testframework.RuleTst;
18 import test.net.sourceforge.pmd.testframework.TestDescriptor;
19
20 import java.io.StringReader;
21
22 import junit.framework.JUnit4TestAdapter;
23
24 public class ExcludeLinesTest extends RuleTst {
25 private Rule rule;
26
27 @Before
28 public void setUp() {
29 rule = findRule("unusedcode", "UnusedLocalVariable");
30 }
31
32 @Test
33 public void testAcceptance() {
34 runTest(new TestDescriptor(TEST1, "NOPMD should work", 0, rule));
35 runTest(new TestDescriptor(TEST2, "Should fail without exclude marker", 1, rule));
36 }
37
38 @Test
39 public void testAlternateMarker() throws Throwable {
40 PMD p = new PMD();
41 p.setExcludeMarker("FOOBAR");
42 RuleContext ctx = new RuleContext();
43 Report r = new Report();
44 ctx.setReport(r);
45 ctx.setSourceCodeFilename("n/a");
46 RuleSet rules = new RuleSet();
47 rules.addRule(rule);
48 rules.setLanguage(SourceTypeToRuleLanguageMapper.getMappedLanguage(DEFAULT_SOURCE_TYPE));
49 p.processFile(new StringReader(TEST3), new RuleSets(rules), ctx, DEFAULT_SOURCE_TYPE);
50 assertTrue(r.isEmpty());
51 assertEquals(r.getSuppressedRuleViolations().size(), 1);
52 }
53
54 private static final String TEST1 =
55 "public class Foo {" + PMD.EOL +
56 " void foo() {" + PMD.EOL +
57 " int x; //NOPMD " + PMD.EOL +
58 " } " + PMD.EOL +
59 "}";
60
61 private static final String TEST2 =
62 "public class Foo {" + PMD.EOL +
63 " void foo() {" + PMD.EOL +
64 " int x;" + PMD.EOL +
65 " } " + PMD.EOL +
66 "}";
67
68 private static final String TEST3 =
69 "public class Foo {" + PMD.EOL +
70 " void foo() {" + PMD.EOL +
71 " int x; // FOOBAR" + PMD.EOL +
72 " } " + PMD.EOL +
73 "}";
74
75 public static junit.framework.Test suite() {
76 return new JUnit4TestAdapter(ExcludeLinesTest.class);
77 }
78 }