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.NoCloneCheck;
30
31 public class XpathRegressionNoCloneTest extends AbstractXpathTestSupport {
32
33 private final String checkName = NoCloneCheck.class.getSimpleName();
34
35 @Override
36 protected String getCheckName() {
37 return checkName;
38 }
39
40 @Test
41 public void testMethod() throws Exception {
42 final File fileToProcess =
43 new File(getPath("InputXpathNoCloneMethod.java"));
44
45 final DefaultConfiguration moduleConfig =
46 createModuleConfig(NoCloneCheck.class);
47
48 final String[] expectedViolation = {
49 "5:5: " + getCheckMessage(NoCloneCheck.class, NoCloneCheck.MSG_KEY),
50 };
51
52 final List<String> expectedXpathQueries = Arrays.asList(
53 "/COMPILATION_UNIT/CLASS_DEF"
54 + "[./IDENT[@text='InputXpathNoCloneMethod']]/OBJBLOCK"
55 + "/METHOD_DEF[./IDENT[@text='clone']]",
56 "/COMPILATION_UNIT/CLASS_DEF"
57 + "[./IDENT[@text='InputXpathNoCloneMethod']]/OBJBLOCK"
58 + "/METHOD_DEF[./IDENT[@text='clone']]/MODIFIERS",
59 "/COMPILATION_UNIT/CLASS_DEF"
60 + "[./IDENT[@text='InputXpathNoCloneMethod']]/OBJBLOCK"
61 + "/METHOD_DEF[./IDENT[@text='clone']]/MODIFIERS/LITERAL_PUBLIC"
62 );
63
64 runVerifications(moduleConfig, fileToProcess, expectedViolation,
65 expectedXpathQueries);
66 }
67
68 @Test
69 public void testTwo() throws Exception {
70 final File fileToProcess =
71 new File(getPath("InputXpathNoCloneInnerClass.java"));
72
73 final DefaultConfiguration moduleConfig =
74 createModuleConfig(NoCloneCheck.class);
75
76 final String[] expectedViolation = {
77 "6:5: " + getCheckMessage(NoCloneCheck.class, NoCloneCheck.MSG_KEY),
78 };
79
80 final List<String> expectedXpathQueries = Arrays.asList(
81 "/COMPILATION_UNIT/CLASS_DEF[./IDENT[@text='InputXpathNoCloneInnerClass']]"
82 + "/OBJBLOCK"
83 + "/CLASS_DEF[./IDENT[@text='InnerClass']]/OBJBLOCK"
84 + "/METHOD_DEF[./IDENT[@text='clone']]",
85 "/COMPILATION_UNIT/CLASS_DEF[./IDENT[@text='InputXpathNoCloneInnerClass']]"
86 + "/OBJBLOCK"
87 + "/CLASS_DEF[./IDENT[@text='InnerClass']]/OBJBLOCK/"
88 + "METHOD_DEF[./IDENT[@text='clone']]/MODIFIERS",
89 "/COMPILATION_UNIT/CLASS_DEF[./IDENT[@text='InputXpathNoCloneInnerClass']]"
90 + "/OBJBLOCK"
91 + "/CLASS_DEF[./IDENT[@text='InnerClass']]/OBJBLOCK"
92 + "/METHOD_DEF[./IDENT[@text='clone']]/MODIFIERS/LITERAL_PUBLIC"
93 );
94
95 runVerifications(moduleConfig, fileToProcess, expectedViolation,
96 expectedXpathQueries);
97 }
98 }