1   ////////////////////////////////////////////////////////////////////////////////
2   // checkstyle: Checks Java source code for adherence to a set of rules.
3   // Copyright (C) 2001-2019 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 org.junit.Assert.assertFalse;
23  import static org.junit.Assert.assertTrue;
24  
25  import java.util.regex.Pattern;
26  
27  import org.junit.Test;
28  
29  import com.puppycrawl.tools.checkstyle.AbstractModuleTestSupport;
30  import com.puppycrawl.tools.checkstyle.DefaultConfiguration;
31  import com.puppycrawl.tools.checkstyle.TreeWalker;
32  import com.puppycrawl.tools.checkstyle.checks.coding.FinalLocalVariableCheck;
33  import com.puppycrawl.tools.checkstyle.utils.CommonUtil;
34  
35  public class BeforeExecutionExclusionFileFilterTest extends AbstractModuleTestSupport {
36  
37      @Override
38      protected String getPackageLocation() {
39          return "com/puppycrawl/tools/checkstyle/filefilters/beforeexecutionexclusionfilefilter";
40      }
41  
42      @Test
43      public void testAccept() {
44          final String fileName = "BAD";
45          final BeforeExecutionExclusionFileFilter filter =
46                  createExclusionBeforeExecutionFileFilter(fileName);
47  
48          assertTrue("Should accept if file does not exist", filter.accept("ATest.java"));
49      }
50  
51      @Test
52      public void testAcceptOnNullFile() {
53          final String fileName = null;
54          final BeforeExecutionExclusionFileFilter filter =
55                  createExclusionBeforeExecutionFileFilter(fileName);
56  
57          assertTrue("Should accept if file is null", filter.accept("AnyJava.java"));
58      }
59  
60      @Test
61      public void testReject() {
62          final String fileName = "Test";
63          final BeforeExecutionExclusionFileFilter filter =
64                  createExclusionBeforeExecutionFileFilter(fileName);
65  
66          assertFalse("Should reject file, but did not", filter.accept("ATest.java"));
67      }
68  
69      @Test
70      public void testRejectBadFile() throws Exception {
71          final DefaultConfiguration filterConfig =
72                  createModuleConfig(BeforeExecutionExclusionFileFilter.class);
73          filterConfig.addAttribute("fileNamePattern", "IncorrectClass\\.java");
74  
75          final DefaultConfiguration checkConfig = createModuleConfig(FinalLocalVariableCheck.class);
76          final DefaultConfiguration treeWalkerConfig = createModuleConfig(TreeWalker.class);
77          treeWalkerConfig.addChild(checkConfig);
78          final DefaultConfiguration checkerConfig = createRootConfig(treeWalkerConfig);
79          checkerConfig.addChild(filterConfig);
80  
81          final String[] violations = CommonUtil.EMPTY_STRING_ARRAY;
82          verify(checkerConfig,
83                  getNonCompilablePath("InputBeforeExecutionExclusionFileFilterIncorrectClass.java"),
84                  violations);
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  }