View Javadoc
1   package com.github.mikkoi.maven.plugins.enforcer.rule.charsetencoding;
2   
3   import org.apache.commons.lang.StringUtils;
4   import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
5   import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
6   import org.apache.maven.plugins.enforcer.EnforcerTestUtils;
7   import org.junit.Test;
8   
9   import javax.annotation.Nonnull;
10  
11  import static org.junit.Assert.assertTrue;
12  
13  /**
14   * Test class CharacterSetEncodingRule.
15   */
16  public final class TestCharacterSetEncodingRule {
17  
18      @Test
19      public void testValidFiles1() {
20          testFiles(true, 0, "UTF-8", "src/test/resources", "utf-8.txt", StringUtils.EMPTY);
21      }
22  
23      @Test
24      public void testValidFiles1_1() {
25          testFiles(true, 0, "ISO-8859-1", "src/test/resources", "iso.txt", StringUtils.EMPTY);
26      }
27  
28      @Test
29      public void testValidFiles1_2() {
30          testFiles(false, 1, "UTF-8", "src/test/resources", StringUtils.EMPTY, StringUtils.EMPTY);
31      }
32  
33      @Test
34      public void testValidFiles2() {
35          testFiles(false, 2, "ASCII", "src/test/resources", StringUtils.EMPTY, StringUtils.EMPTY);
36      }
37  
38      @Test
39      public void testValidFiles3() {
40          // TestClassInUTF8 can be interpreted as iso-8859-1
41          testFiles(true, 0, "iso-8859-1", "src/test/java", StringUtils.EMPTY, StringUtils.EMPTY);
42      }
43  
44      @Test
45      public void testValidFiles4() {
46          // This file (officially - defined by Maven - as utf-8) has no 8-bit chars so it can be ANY encoding!
47          testFiles(true, 0, "utf-8", "src/test/java", StringUtils.EMPTY, StringUtils.EMPTY);
48      }
49  
50      @Test
51      public void testValidFiles5() {
52          testFiles(false, 1, "ascii", "src/test/java", StringUtils.EMPTY, StringUtils.EMPTY);
53      }
54  
55      @Test
56      public void testValidFiles6() {
57          testFiles(true, 0, "ISO-8859-1", "src/test/resources", StringUtils.EMPTY, StringUtils.EMPTY);
58      }
59  
60      private void testFiles(
61              boolean expected,
62              int expectedFaultyFilesAmount,
63              @Nonnull String encoding,
64              @Nonnull String dir,
65              @Nonnull String includeRegex,
66              @Nonnull String excludeRegex
67      ) {
68          boolean isValid;
69          CharacterSetEncodingRule rule = new CharacterSetEncodingRule();
70          rule.setRequireEncoding(encoding);
71          rule.setDirectory(dir);
72          rule.setIncludeRegex(includeRegex);
73          rule.setExcludeRegex(excludeRegex);
74          try {
75              EnforcerRuleHelper helper = EnforcerTestUtils.getHelper();
76              rule.execute(helper);
77              isValid = true;
78          } catch (EnforcerRuleException e) {
79              // e.printStackTrace();
80              isValid = false;
81          }
82          assertTrue(isValid == expected && rule.getFaultyFiles().size() == expectedFaultyFilesAmount);
83      }
84  
85  }