1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.checkstyle.suppressionxpathfilter;
21
22 import java.io.File;
23 import java.util.Collections;
24 import java.util.List;
25
26 import org.junit.jupiter.api.Test;
27
28 import com.puppycrawl.tools.checkstyle.DefaultConfiguration;
29 import com.puppycrawl.tools.checkstyle.checks.naming.AbstractNameCheck;
30 import com.puppycrawl.tools.checkstyle.checks.naming.StaticVariableNameCheck;
31
32 public class XpathRegressionStaticVariableNameTest extends AbstractXpathTestSupport {
33
34 private final String checkName = StaticVariableNameCheck.class.getSimpleName();
35
36 @Override
37 protected String getCheckName() {
38 return checkName;
39 }
40
41 @Test
42 public void testStaticVariableName() throws Exception {
43 final File fileToProcess =
44 new File(getPath("InputXpathStaticVariableName.java"));
45
46 final String pattern = "^[a-z][a-zA-Z0-9]*$";
47 final DefaultConfiguration moduleConfig =
48 createModuleConfig(StaticVariableNameCheck.class);
49
50 final String[] expectedViolation = {
51 "6:24: " + getCheckMessage(StaticVariableNameCheck.class,
52 AbstractNameCheck.MSG_INVALID_PATTERN, "NUM2", pattern),
53 };
54
55 final List<String> expectedXpathQueries = Collections.singletonList(
56 "/COMPILATION_UNIT"
57 + "/CLASS_DEF[./IDENT[@text"
58 + "='InputXpathStaticVariableName']]"
59 + "/OBJBLOCK/VARIABLE_DEF/IDENT[@text='NUM2']"
60
61 );
62 runVerifications(moduleConfig, fileToProcess, expectedViolation,
63 expectedXpathQueries);
64 }
65
66 @Test
67 public void testInnerClassField() throws Exception {
68 final File fileToProcess =
69 new File(getNonCompilablePath(
70 "InputXpathStaticVariableNameInnerClassField.java"));
71
72 final String pattern = "^[a-z][a-zA-Z0-9]*$";
73 final DefaultConfiguration moduleConfig =
74 createModuleConfig(StaticVariableNameCheck.class);
75
76 final String[] expectedViolation = {
77 "14:24: " + getCheckMessage(StaticVariableNameCheck.class,
78 AbstractNameCheck.MSG_INVALID_PATTERN, "NUM3", pattern),
79 };
80
81 final List<String> expectedXpathQueries = Collections.singletonList(
82 "/COMPILATION_UNIT"
83 + "/CLASS_DEF[./IDENT[@text"
84 + "='InputXpathStaticVariableNameInnerClassField']]"
85 + "/OBJBLOCK/METHOD_DEF[./IDENT[@text='outerMethod']]"
86 + "/SLIST/CLASS_DEF[./IDENT[@text='MyLocalClass']]"
87 + "/OBJBLOCK/VARIABLE_DEF/IDENT[@text='NUM3']"
88 );
89 runVerifications(moduleConfig, fileToProcess, expectedViolation,
90 expectedXpathQueries);
91 }
92
93 @Test
94 public void testNoAccessModifier() throws Exception {
95 final File fileToProcess =
96 new File(getNonCompilablePath(
97 "InputXpathStaticVariableNameNoAccessModifier.java"));
98
99 final String pattern = "^[a-z][a-zA-Z0-9]*$";
100 final DefaultConfiguration moduleConfig =
101 createModuleConfig(StaticVariableNameCheck.class);
102
103 final String[] expectedViolation = {
104 "6:19: " + getCheckMessage(StaticVariableNameCheck.class,
105 AbstractNameCheck.MSG_INVALID_PATTERN, "NUM3", pattern),
106 };
107
108 final List<String> expectedXpathQueries = Collections.singletonList(
109 "/COMPILATION_UNIT"
110 + "/CLASS_DEF[./IDENT[@text"
111 + "='InputXpathStaticVariableNameNoAccessModifier']]"
112 + "/OBJBLOCK/INSTANCE_INIT/SLIST/VARIABLE_DEF/IDENT[@text='NUM3']"
113 );
114 runVerifications(moduleConfig, fileToProcess, expectedViolation,
115 expectedXpathQueries);
116 }
117 }