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.Arrays;
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.coding.UnusedCatchParameterShouldBeUnnamedCheck;
30
31 public class XpathRegressionUnusedCatchParameterShouldBeUnnamedTest
32 extends AbstractXpathTestSupport {
33
34 private final String checkName = UnusedCatchParameterShouldBeUnnamedCheck.class
35 .getSimpleName();
36
37 @Override
38 protected String getCheckName() {
39 return checkName;
40 }
41
42 @Test
43 public void testSimple() throws Exception {
44 final File fileToProcess =
45 new File(getNonCompilablePath(
46 "InputXpathUnusedCatchParameterShouldBeUnnamedSimple.java"));
47
48 final DefaultConfiguration moduleConfig =
49 createModuleConfig(UnusedCatchParameterShouldBeUnnamedCheck.class);
50
51 final String[] expectedViolation = {
52 "10:16: " + getCheckMessage(UnusedCatchParameterShouldBeUnnamedCheck.class,
53 UnusedCatchParameterShouldBeUnnamedCheck.MSG_UNUSED_CATCH_PARAMETER,
54 "e"),
55 };
56
57 final List<String> expectedXpathQueries = Arrays.asList(
58 "/COMPILATION_UNIT/CLASS_DEF[./IDENT"
59 + "[@text='InputXpathUnusedCatchParameterShouldBeUnnamedSimple']]"
60 + "/OBJBLOCK/METHOD_DEF[./IDENT[@text='test']]/SLIST/LITERAL_TRY/"
61 + "LITERAL_CATCH/PARAMETER_DEF[./IDENT[@text='e']]",
62 "/COMPILATION_UNIT/CLASS_DEF["
63 + "./IDENT[@text='InputXpathUnusedCatchParameterShouldBeUnnamedSimple']]"
64 + "/OBJBLOCK/METHOD_DEF[./IDENT[@text='test']]/SLIST/"
65 + "LITERAL_TRY/LITERAL_CATCH/PARAMETER_DEF[./IDENT[@text='e']]/MODIFIERS",
66 "/COMPILATION_UNIT/CLASS_DEF["
67 + "./IDENT[@text='InputXpathUnusedCatchParameterShouldBeUnnamedSimple']]"
68 + "/OBJBLOCK/METHOD_DEF[./IDENT[@text='test']]/SLIST/LITERAL_TRY/"
69 + "LITERAL_CATCH/PARAMETER_DEF[./IDENT[@text='e']]"
70 + "/TYPE[./IDENT[@text='Exception']]",
71 "/COMPILATION_UNIT/CLASS_DEF"
72 + "[./IDENT[@text='InputXpathUnusedCatchParameterShouldBeUnnamedSimple']]"
73 + "/OBJBLOCK/METHOD_DEF[./IDENT[@text='test']]/SLIST/LITERAL_TRY"
74 + "/LITERAL_CATCH/PARAMETER_DEF[./IDENT[@text='e']]"
75 + "/TYPE/IDENT[@text='Exception']"
76 );
77
78 runVerifications(moduleConfig, fileToProcess, expectedViolation,
79 expectedXpathQueries);
80 }
81
82 @Test
83 public void testNested() throws Exception {
84 final File fileToProcess =
85 new File(getNonCompilablePath(
86 "InputXpathUnusedCatchParameterShouldBeUnnamedNested.java"));
87
88 final DefaultConfiguration moduleConfig =
89 createModuleConfig(UnusedCatchParameterShouldBeUnnamedCheck.class);
90
91 final String[] expectedViolation = {
92 "14:20: " + getCheckMessage(UnusedCatchParameterShouldBeUnnamedCheck.class,
93 UnusedCatchParameterShouldBeUnnamedCheck.MSG_UNUSED_CATCH_PARAMETER,
94 "exception"),
95 };
96
97 final List<String> expectedXpathQueries = Arrays.asList(
98 "/COMPILATION_UNIT/CLASS_DEF["
99 + "./IDENT[@text='InputXpathUnusedCatchParameterShouldBeUnnamedNested']]"
100 + "/OBJBLOCK/METHOD_DEF[./IDENT[@text='test']]/SLIST/LITERAL_TRY/"
101 + "LITERAL_CATCH/SLIST/LITERAL_TRY/LITERAL_CATCH/PARAMETER_DEF"
102 + "[./IDENT[@text='exception']]",
103 "/COMPILATION_UNIT/CLASS_DEF[./IDENT"
104 + "[@text='InputXpathUnusedCatchParameterShouldBeUnnamedNested']]"
105 + "/OBJBLOCK/METHOD_DEF[./IDENT[@text='test']]/SLIST/LITERAL_TRY"
106 + "/LITERAL_CATCH/SLIST/LITERAL_TRY/LITERAL_CATCH/PARAMETER_DEF["
107 + "./IDENT[@text='exception']]/MODIFIERS",
108 "/COMPILATION_UNIT/CLASS_DEF"
109 + "[./IDENT[@text='InputXpathUnusedCatchParameterShouldBeUnnamedNested']]"
110 + "/OBJBLOCK/METHOD_DEF[./IDENT[@text='test']]/SLIST/LITERAL_TRY/"
111 + "LITERAL_CATCH/SLIST/LITERAL_TRY/LITERAL_CATCH/PARAMETER_DEF"
112 + "[./IDENT[@text='exception']]/TYPE[./IDENT[@text='Exception']]",
113 "/COMPILATION_UNIT/CLASS_DEF"
114 + "[./IDENT[@text='InputXpathUnusedCatchParameterShouldBeUnnamedNested']]"
115 + "/OBJBLOCK/METHOD_DEF[./IDENT[@text='test']]/SLIST/LITERAL_TRY"
116 + "/LITERAL_CATCH/SLIST/LITERAL_TRY/LITERAL_CATCH/PARAMETER_DEF"
117 + "[./IDENT[@text='exception']]/TYPE/IDENT[@text='Exception']"
118 );
119 runVerifications(moduleConfig, fileToProcess, expectedViolation,
120 expectedXpathQueries);
121 }
122 }