View Javadoc
1   ///////////////////////////////////////////////////////////////////////////////////////////////
2   // checkstyle: Checks Java source code and other text files for adherence to a set of rules.
3   // Copyright (C) 2001-2024 the original author or authors.
4   //
5   // This library is free software; you can redistribute it and/or
6   // modify it under the terms of the GNU Lesser General Public
7   // License as published by the Free Software Foundation; either
8   // version 2.1 of the License, or (at your option) any later version.
9   //
10  // This library is distributed in the hope that it will be useful,
11  // but WITHOUT ANY WARRANTY; without even the implied warranty of
12  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13  // Lesser General Public License for more details.
14  //
15  // You should have received a copy of the GNU Lesser General Public
16  // License along with this library; if not, write to the Free Software
17  // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18  ///////////////////////////////////////////////////////////////////////////////////////////////
19  
20  package com.puppycrawl.tools.checkstyle.filefilters;
21  
22  import static com.google.common.truth.Truth.assertWithMessage;
23  import static com.puppycrawl.tools.checkstyle.checks.coding.FinalLocalVariableCheck.MSG_KEY;
24  
25  import java.util.regex.Pattern;
26  
27  import org.junit.jupiter.api.Test;
28  
29  import com.puppycrawl.tools.checkstyle.AbstractModuleTestSupport;
30  import com.puppycrawl.tools.checkstyle.checks.coding.FinalLocalVariableCheck;
31  import com.puppycrawl.tools.checkstyle.utils.CommonUtil;
32  
33  public class BeforeExecutionExclusionFileFilterTest extends AbstractModuleTestSupport {
34  
35      @Override
36      protected String getPackageLocation() {
37          return "com/puppycrawl/tools/checkstyle/filefilters/beforeexecutionexclusionfilefilter";
38      }
39  
40      @Test
41      public void testAccept() {
42          final String fileName = "BAD";
43          final BeforeExecutionExclusionFileFilter filter =
44                  createExclusionBeforeExecutionFileFilter(fileName);
45  
46          assertWithMessage("Should accept if file does not exist")
47                  .that(filter.accept("ATest.java"))
48                  .isTrue();
49      }
50  
51      @Test
52      public void testAcceptOnNullFile() {
53          final String fileName = null;
54          final BeforeExecutionExclusionFileFilter filter =
55                  createExclusionBeforeExecutionFileFilter(fileName);
56  
57          assertWithMessage("Should accept if file is null")
58                  .that(filter.accept("AnyJava.java"))
59                  .isTrue();
60      }
61  
62      @Test
63      public void testReject() {
64          final String fileName = "Test";
65          final BeforeExecutionExclusionFileFilter filter =
66                  createExclusionBeforeExecutionFileFilter(fileName);
67  
68          assertWithMessage("Should reject file, but did not")
69                  .that(filter.accept("ATest.java"))
70                  .isFalse();
71      }
72  
73      @Test
74      public void testFileExclusion() throws Exception {
75          final String[] filteredViolations = CommonUtil.EMPTY_STRING_ARRAY;
76  
77          final String[] unfilteredViolations = {
78              "17:13: " + getCheckMessage(FinalLocalVariableCheck.class, MSG_KEY, "i"),
79          };
80  
81          verifyFilterWithInlineConfigParser(
82                  getPath("InputBeforeExecutionExclusionFileFilter.java"),
83                  unfilteredViolations, filteredViolations
84          );
85      }
86  
87      private static BeforeExecutionExclusionFileFilter
88              createExclusionBeforeExecutionFileFilter(String fileName) {
89          final BeforeExecutionExclusionFileFilter exclusionBeforeExecutionFileFilter =
90                  new BeforeExecutionExclusionFileFilter();
91          if (fileName != null) {
92              exclusionBeforeExecutionFileFilter.setFileNamePattern(Pattern.compile(fileName));
93          }
94          return exclusionBeforeExecutionFileFilter;
95      }
96  
97  }