1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugins.checkstyle.exec;
20
21 import java.io.File;
22 import java.util.HashMap;
23 import java.util.Map;
24
25 import com.puppycrawl.tools.checkstyle.api.AuditEvent;
26 import com.puppycrawl.tools.checkstyle.api.SeverityLevel;
27 import com.puppycrawl.tools.checkstyle.api.Violation;
28 import junit.framework.TestCase;
29
30
31
32
33
34 public class CheckstyleReportListenerTest extends TestCase {
35 private Map<SeverityLevel, CheckstyleCheckerListener> listenerMap;
36
37
38 protected void setUp() throws Exception {
39 listenerMap = new HashMap<>();
40
41 CheckstyleCheckerListener listener = new CheckstyleCheckerListener(new File("/source/path"));
42 listener.setSeverityLevelFilter(SeverityLevel.INFO);
43 listenerMap.put(listener.getSeverityLevelFilter(), listener);
44
45 listener = new CheckstyleCheckerListener(new File("/source/path"));
46 listener.setSeverityLevelFilter(SeverityLevel.WARNING);
47 listenerMap.put(listener.getSeverityLevelFilter(), listener);
48
49 listener = new CheckstyleCheckerListener(new File("/source/path"));
50 listener.setSeverityLevelFilter(SeverityLevel.ERROR);
51 listenerMap.put(listener.getSeverityLevelFilter(), listener);
52
53 listener = new CheckstyleCheckerListener(new File("/source/path"));
54 listener.setSeverityLevelFilter(SeverityLevel.IGNORE);
55 listenerMap.put(listener.getSeverityLevelFilter(), listener);
56 }
57
58 public void testListeners() {
59 fireAuditStarted(null);
60
61 AuditEvent event = new AuditEvent(this, "/source/path/file1", null);
62 fireFileStarted(event);
63 Violation message = new Violation(0, 0, "", "", null, SeverityLevel.INFO, null, getClass(), null);
64 fireAddError(new AuditEvent(this, "/source/path/file1", message));
65 fireFileFinished(event);
66
67 event = new AuditEvent(this, "/source/path/file2", null);
68 fireFileStarted(event);
69 message = new Violation(0, 0, "", "", null, SeverityLevel.WARNING, null, getClass(), null);
70 fireAddError(new AuditEvent(this, "/source/path/file2", message));
71 fireAddError(new AuditEvent(this, "/source/path/file2", message));
72 fireFileFinished(event);
73
74 event = new AuditEvent(this, "/source/path/file3", null);
75 fireFileStarted(event);
76 message = new Violation(0, 0, "", "", null, SeverityLevel.ERROR, null, getClass(), null);
77 fireAddError(new AuditEvent(this, "/source/path/file3", message));
78 fireAddError(new AuditEvent(this, "/source/path/file3", message));
79 fireAddError(new AuditEvent(this, "/source/path/file3", message));
80 fireFileFinished(event);
81
82 event = new AuditEvent(this, "/source/path/file4", null);
83 fireFileStarted(event);
84 message = new Violation(0, 0, "", "", null, SeverityLevel.IGNORE, null, getClass(), null);
85 fireAddError(new AuditEvent(this, "/source/path/file4", message));
86 fireAddError(new AuditEvent(this, "/source/path/file4", message));
87 fireAddError(new AuditEvent(this, "/source/path/file4", message));
88 fireAddError(new AuditEvent(this, "/source/path/file4", message));
89 fireFileFinished(event);
90
91 fireAuditFinished(null);
92
93 CheckstyleCheckerListener listener = listenerMap.get(SeverityLevel.INFO);
94 CheckstyleResults results = listener.getResults();
95 assertEquals("Test total files", 4, results.getFiles().size());
96 assertEquals("Test file count", 4, results.getFileCount());
97 assertEquals(
98 "test file violations", 1, results.getFileViolations("file1").size());
99 assertEquals("test file severities", 1, results.getSeverityCount("file1", SeverityLevel.INFO));
100 assertEquals("test file severities", 0, results.getSeverityCount("file1", SeverityLevel.WARNING));
101 assertEquals("test file severities", 0, results.getSeverityCount("file1", SeverityLevel.ERROR));
102 assertEquals("test file severities", 0, results.getSeverityCount("file1", SeverityLevel.IGNORE));
103
104 listener = listenerMap.get(SeverityLevel.WARNING);
105 results = listener.getResults();
106 assertEquals("Test total files", 4, results.getFiles().size());
107 assertEquals("Test file count", 4, results.getFileCount());
108 assertEquals(
109 "test file violations", 2, results.getFileViolations("file2").size());
110 assertEquals("test file severities", 0, results.getSeverityCount("file2", SeverityLevel.INFO));
111 assertEquals("test file severities", 2, results.getSeverityCount("file2", SeverityLevel.WARNING));
112 assertEquals("test file severities", 0, results.getSeverityCount("file2", SeverityLevel.ERROR));
113 assertEquals("test file severities", 0, results.getSeverityCount("file2", SeverityLevel.IGNORE));
114
115 listener = listenerMap.get(SeverityLevel.ERROR);
116 results = listener.getResults();
117 assertEquals("Test total files", 4, results.getFiles().size());
118 assertEquals("Test file count", 4, results.getFileCount());
119 assertEquals(
120 "test file violations", 3, results.getFileViolations("file3").size());
121 assertEquals("test file severities", 0, results.getSeverityCount("file3", SeverityLevel.INFO));
122 assertEquals("test file severities", 0, results.getSeverityCount("file3", SeverityLevel.WARNING));
123 assertEquals("test file severities", 3, results.getSeverityCount("file3", SeverityLevel.ERROR));
124 assertEquals("test file severities", 0, results.getSeverityCount("file3", SeverityLevel.IGNORE));
125
126 listener = listenerMap.get(SeverityLevel.IGNORE);
127 results = listener.getResults();
128 assertEquals("Test total files", 4, results.getFiles().size());
129 assertEquals("Test file count", 4, results.getFileCount());
130 assertEquals(
131 "test file violations", 0, results.getFileViolations("file4").size());
132 assertEquals("test file severities", 0, results.getSeverityCount("file4", SeverityLevel.INFO));
133 assertEquals("test file severities", 0, results.getSeverityCount("file4", SeverityLevel.WARNING));
134 assertEquals("test file severities", 0, results.getSeverityCount("file4", SeverityLevel.ERROR));
135 assertEquals("test file severities", 0, results.getSeverityCount("file4", SeverityLevel.IGNORE));
136 }
137
138 private void fireAuditStarted(AuditEvent event) {
139 for (CheckstyleCheckerListener listener : listenerMap.values()) {
140 listener.auditStarted(event);
141 }
142 }
143
144 private void fireAuditFinished(AuditEvent event) {
145 for (CheckstyleCheckerListener listener : listenerMap.values()) {
146 listener.auditFinished(event);
147 }
148 }
149
150 private void fireFileStarted(AuditEvent event) {
151 for (CheckstyleCheckerListener listener : listenerMap.values()) {
152 listener.fileStarted(event);
153 }
154 }
155
156 private void fireFileFinished(AuditEvent event) {
157 for (CheckstyleCheckerListener listener : listenerMap.values()) {
158 listener.fileFinished(event);
159 }
160 }
161
162 private void fireAddError(AuditEvent event) {
163 for (CheckstyleCheckerListener listener : listenerMap.values()) {
164 listener.addError(event);
165 }
166 }
167 }