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