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
39 public class CheckstyleReportListenerTest
40 extends TestCase
41 {
42 private Map<SeverityLevel, CheckstyleCheckerListener> listenerMap;
43
44
45 protected void setUp()
46 throws Exception
47 {
48 listenerMap = new HashMap<SeverityLevel, CheckstyleCheckerListener>();
49
50 CheckstyleCheckerListener listener = new CheckstyleCheckerListener( new File( "/source/path" ) );
51 listener.setSeverityLevelFilter( SeverityLevel.INFO );
52 listenerMap.put( listener.getSeverityLevelFilter(), listener );
53
54 listener = new CheckstyleCheckerListener( new File( "/source/path" ) );
55 listener.setSeverityLevelFilter( SeverityLevel.WARNING );
56 listenerMap.put( listener.getSeverityLevelFilter(), listener );
57
58 listener = new CheckstyleCheckerListener( new File( "/source/path" ) );
59 listener.setSeverityLevelFilter( SeverityLevel.ERROR );
60 listenerMap.put( listener.getSeverityLevelFilter(), listener );
61
62 listener = new CheckstyleCheckerListener( new File( "/source/path" ) );
63 listener.setSeverityLevelFilter( SeverityLevel.IGNORE );
64 listenerMap.put( listener.getSeverityLevelFilter(), listener );
65 }
66
67 public void testListeners()
68 {
69 fireAuditStarted( null );
70
71 AuditEvent event = new AuditEvent( this, "/source/path/file1", null );
72 fireFileStarted( event );
73 LocalizedMessage message = new LocalizedMessage( 0, 0, "", "", null, SeverityLevel.INFO, null, getClass(), null );
74 fireAddError( new AuditEvent( this, "/source/path/file1", message ) );
75 fireFileFinished( event );
76
77 event = new AuditEvent( this, "/source/path/file2", null );
78 fireFileStarted( event );
79 message = new LocalizedMessage( 0, 0, "", "", null, SeverityLevel.WARNING, null, getClass(), null );
80 fireAddError( new AuditEvent( this, "/source/path/file2", message ) );
81 fireAddError( new AuditEvent( this, "/source/path/file2", message ) );
82 fireFileFinished( event );
83
84 event = new AuditEvent( this, "/source/path/file3", null );
85 fireFileStarted( event );
86 message = new LocalizedMessage( 0, 0, "", "", null, SeverityLevel.ERROR, null, getClass(), null );
87 fireAddError( new AuditEvent( this, "/source/path/file3", message ) );
88 fireAddError( new AuditEvent( this, "/source/path/file3", message ) );
89 fireAddError( new AuditEvent( this, "/source/path/file3", message ) );
90 fireFileFinished( event );
91
92 event = new AuditEvent( this, "/source/path/file4", null );
93 fireFileStarted( event );
94 message = new LocalizedMessage( 0, 0, "", "", null, SeverityLevel.IGNORE, null, getClass(), null );
95 fireAddError( new AuditEvent( this, "/source/path/file4", message ) );
96 fireAddError( new AuditEvent( this, "/source/path/file4", message ) );
97 fireAddError( new AuditEvent( this, "/source/path/file4", message ) );
98 fireAddError( new AuditEvent( this, "/source/path/file4", message ) );
99 fireFileFinished( event );
100
101 fireAuditFinished( null );
102
103 CheckstyleCheckerListener listener = listenerMap.get( SeverityLevel.INFO );
104 CheckstyleResults results = listener.getResults();
105 assertEquals( "Test total files", 4, results.getFiles().size() );
106 assertEquals( "Test file count", 4, results.getFileCount() );
107 assertEquals( "test file violations", 1, results.getFileViolations( "file1" ).size() );
108 assertEquals( "test file severities", 1, results.getSeverityCount( "file1", SeverityLevel.INFO ) );
109 assertEquals( "test file severities", 0, results.getSeverityCount( "file1", SeverityLevel.WARNING ) );
110 assertEquals( "test file severities", 0, results.getSeverityCount( "file1", SeverityLevel.ERROR ) );
111 assertEquals( "test file severities", 0, results.getSeverityCount( "file1", SeverityLevel.IGNORE ) );
112
113 listener = listenerMap.get( SeverityLevel.WARNING );
114 results = listener.getResults();
115 assertEquals( "Test total files", 4, results.getFiles().size() );
116 assertEquals( "Test file count", 4, results.getFileCount() );
117 assertEquals( "test file violations", 2, results.getFileViolations( "file2" ).size() );
118 assertEquals( "test file severities", 0, results.getSeverityCount( "file2", SeverityLevel.INFO ) );
119 assertEquals( "test file severities", 2, results.getSeverityCount( "file2", SeverityLevel.WARNING ) );
120 assertEquals( "test file severities", 0, results.getSeverityCount( "file2", SeverityLevel.ERROR ) );
121 assertEquals( "test file severities", 0, results.getSeverityCount( "file2", SeverityLevel.IGNORE ) );
122
123 listener = listenerMap.get( SeverityLevel.ERROR );
124 results = listener.getResults();
125 assertEquals( "Test total files", 4, results.getFiles().size() );
126 assertEquals( "Test file count", 4, results.getFileCount() );
127 assertEquals( "test file violations", 3, results.getFileViolations( "file3" ).size() );
128 assertEquals( "test file severities", 0, results.getSeverityCount( "file3", SeverityLevel.INFO ) );
129 assertEquals( "test file severities", 0, results.getSeverityCount( "file3", SeverityLevel.WARNING ) );
130 assertEquals( "test file severities", 3, results.getSeverityCount( "file3", SeverityLevel.ERROR ) );
131 assertEquals( "test file severities", 0, results.getSeverityCount( "file3", SeverityLevel.IGNORE ) );
132
133 listener = listenerMap.get( SeverityLevel.IGNORE );
134 results = listener.getResults();
135 assertEquals( "Test total files", 4, results.getFiles().size() );
136 assertEquals( "Test file count", 4, results.getFileCount() );
137 assertEquals( "test file violations", 0, results.getFileViolations( "file4" ).size() );
138 assertEquals( "test file severities", 0, results.getSeverityCount( "file4", SeverityLevel.INFO ) );
139 assertEquals( "test file severities", 0, results.getSeverityCount( "file4", SeverityLevel.WARNING ) );
140 assertEquals( "test file severities", 0, results.getSeverityCount( "file4", SeverityLevel.ERROR ) );
141 assertEquals( "test file severities", 0, results.getSeverityCount( "file4", SeverityLevel.IGNORE ) );
142 }
143
144 private void fireAuditStarted( AuditEvent event )
145 {
146 for ( CheckstyleCheckerListener listener : listenerMap.values() )
147 {
148 listener.auditStarted( event );
149 }
150 }
151
152 private void fireAuditFinished( AuditEvent event )
153 {
154 for ( CheckstyleCheckerListener listener : listenerMap.values() )
155 {
156 listener.auditFinished( event );
157 }
158 }
159
160 private void fireFileStarted( AuditEvent event )
161 {
162 for ( CheckstyleCheckerListener listener : listenerMap.values() )
163 {
164 listener.fileStarted( event );
165 }
166 }
167
168 private void fireFileFinished( AuditEvent event )
169 {
170 for ( CheckstyleCheckerListener listener : listenerMap.values() )
171 {
172 listener.fileFinished( event );
173 }
174 }
175
176 private void fireAddError( AuditEvent event )
177 {
178 for ( CheckstyleCheckerListener listener : listenerMap.values() )
179 {
180 listener.addError( event );
181 }
182 }
183 }