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   * @author Edwin Punzalan
37   * @version $Id: CheckstyleReportListenerTest.html 937799 2015-01-27 00:57:50Z hboutemy $
38   */
39  public class CheckstyleReportListenerTest
40      extends TestCase
41  {
42      private Map<SeverityLevel, CheckstyleCheckerListener> listenerMap;
43  
44      /** {@inheritDoc} */
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 }