1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.checkstyle.suppressionxpathfilter.coding;
21
22 import java.io.File;
23 import java.util.Collections;
24 import java.util.List;
25
26 import org.checkstyle.suppressionxpathfilter.AbstractXpathTestSupport;
27 import org.junit.jupiter.api.Test;
28
29 import com.puppycrawl.tools.checkstyle.DefaultConfiguration;
30 import com.puppycrawl.tools.checkstyle.checks.coding.UnnecessarySemicolonInTryWithResourcesCheck;
31
32 public class XpathRegressionUnnecessarySemicolonInTryWithResourcesTest
33 extends AbstractXpathTestSupport {
34
35 private final String checkName =
36 UnnecessarySemicolonInTryWithResourcesCheck.class.getSimpleName();
37
38 @Override
39 protected String getCheckName() {
40 return checkName;
41 }
42
43 @Override
44 protected String getPackageLocation() {
45 return "org/checkstyle/suppressionxpathfilter/coding/"
46 + "unnecessarysemicolonintrywithresources";
47 }
48
49 @Test
50 public void testDefault() throws Exception {
51 final File fileToProcess = new File(
52 getPath("InputXpathUnnecessarySemicolonInTryWithResourcesDefault.java"));
53 final DefaultConfiguration moduleConfig =
54 createModuleConfig(UnnecessarySemicolonInTryWithResourcesCheck.class);
55 final String[] expectedViolation = {
56 "11:76: " + getCheckMessage(UnnecessarySemicolonInTryWithResourcesCheck.class,
57 UnnecessarySemicolonInTryWithResourcesCheck.MSG_SEMI),
58 };
59 final List<String> expectedXpathQueries = Collections.singletonList(
60 "/COMPILATION_UNIT/CLASS_DEF[./IDENT[@text="
61 + "'InputXpathUnnecessarySemicolonInTryWithResourcesDefault']]"
62 + "/OBJBLOCK/METHOD_DEF[./IDENT[@text='m']]/SLIST/LITERAL_TRY"
63 + "/RESOURCE_SPECIFICATION/SEMI"
64 );
65 runVerifications(moduleConfig, fileToProcess, expectedViolation, expectedXpathQueries);
66 }
67
68 @Test
69 public void testNoBrace() throws Exception {
70 final File fileToProcess = new File(getPath(
71 "InputXpathUnnecessarySemicolonInTryWithResourcesNoBrace.java"
72 ));
73
74 final DefaultConfiguration moduleConfig =
75 createModuleConfig(UnnecessarySemicolonInTryWithResourcesCheck.class);
76 moduleConfig.addProperty("allowWhenNoBraceAfterSemicolon", "false");
77
78 final String[] expectedViolation = {
79 "8:44: " + getCheckMessage(UnnecessarySemicolonInTryWithResourcesCheck.class,
80 UnnecessarySemicolonInTryWithResourcesCheck.MSG_SEMI),
81 };
82
83 final List<String> expectedXpathQueries = Collections.singletonList(
84 "/COMPILATION_UNIT/CLASS_DEF[./IDENT[@text="
85 + "'InputXpathUnnecessarySemicolonInTryWithResourcesNoBrace']]"
86 + "/OBJBLOCK/METHOD_DEF[./IDENT[@text='test']]"
87 + "/SLIST/LITERAL_TRY/RESOURCE_SPECIFICATION/SEMI"
88 );
89 runVerifications(moduleConfig, fileToProcess, expectedViolation, expectedXpathQueries);
90 }
91 }