View Javadoc
1   package org.apache.maven.plugin.checkstyle.exec;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
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       * {@inheritDoc}
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 }