Skip to content

Commit c02263e

Browse files
committed
Fix quality flaw: fix issues on test codes from latest rules
1 parent fd34d97 commit c02263e

12 files changed

Lines changed: 68 additions & 58 deletions

File tree

java-checks-testkit/src/test/java/org/sonar/java/checks/verifier/JavaCheckVerifierTest.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,9 @@ void verify_issue_on_project() {
128128

129129
@Test
130130
void verify_issue_on_file_incorrect() {
131+
FakeVisitor visitor = new FakeVisitor().withDefaultIssues();
131132
try {
132-
JavaCheckVerifier.verifyIssueOnFile(FILENAME_ISSUES, "messageOnFile", new FakeVisitor().withDefaultIssues());
133+
JavaCheckVerifier.verifyIssueOnFile(FILENAME_ISSUES, "messageOnFile", visitor);
133134
Fail.fail("Should have failed");
134135
} catch (AssertionError e) {
135136
assertThat(e).hasMessage("A single issue is expected on the file, but 10 issues have been raised");
@@ -264,8 +265,9 @@ void test_with_no_semantic() throws Exception {
264265
IssuableSubscriptionVisitor noIssueVisitor = new FakeVisitor();
265266
JavaCheckVerifier.verifyNoIssueWithoutSemantic(FILENAME_ISSUES, noIssueVisitor);
266267
JavaCheckVerifier.verifyNoIssueWithoutSemantic(FILENAME_NO_ISSUE, noIssueVisitor);
268+
FakeVisitor visitor = new FakeVisitor().withDefaultIssues();
267269
try {
268-
JavaCheckVerifier.verifyNoIssueWithoutSemantic(FILENAME_ISSUES, new FakeVisitor().withDefaultIssues());
270+
JavaCheckVerifier.verifyNoIssueWithoutSemantic(FILENAME_ISSUES, visitor);
269271
Fail.fail("Should have failed");
270272
} catch (AssertionError e) {
271273
assertThat(e.getMessage()).contains("No issues expected but got 10 issue(s):");
@@ -278,8 +280,9 @@ void test_with_no_semantic_and_java_version() throws Exception {
278280
IssuableSubscriptionVisitor noIssueVisitor = new FakeVisitor();
279281
JavaCheckVerifier.verifyNoIssueWithoutSemantic(FILENAME_ISSUES, noIssueVisitor, java_8);
280282
JavaCheckVerifier.verifyNoIssueWithoutSemantic(FILENAME_NO_ISSUE, noIssueVisitor, java_8);
283+
FakeVisitor visitor = new FakeVisitor().withDefaultIssues();
281284
try {
282-
JavaCheckVerifier.verifyNoIssueWithoutSemantic(FILENAME_ISSUES, new FakeVisitor().withDefaultIssues(), java_8);
285+
JavaCheckVerifier.verifyNoIssueWithoutSemantic(FILENAME_ISSUES, visitor, java_8);
283286
Fail.fail("Should have failed");
284287
} catch (AssertionError e) {
285288
assertThat(e.getMessage()).contains("No issues expected but got 10 issue(s):");

java-checks-testkit/src/test/java/org/sonar/java/checks/verifier/MultipleFilesJavaCheckVerifierTest.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import java.util.List;
2525
import org.assertj.core.api.Fail;
2626
import org.junit.jupiter.api.Test;
27+
import org.sonar.java.checks.verifier.JavaCheckVerifierTest.FakeVisitor;
2728
import org.sonar.plugins.java.api.IssuableSubscriptionVisitor;
2829
import org.sonar.plugins.java.api.tree.Tree;
2930

@@ -44,8 +45,9 @@ public List<Tree.Kind> nodesToVisit() {
4445
@Test
4546
void verify_unexpected_issue() {
4647
IssuableSubscriptionVisitor visitor = new JavaCheckVerifierTest.FakeVisitor().withDefaultIssues().withIssue(4, "extra message");
48+
List<String> files = Arrays.asList(FILENAME_ISSUES_FIRST, FILENAME_NO_ISSUE);
4749
try {
48-
MultipleFilesJavaCheckVerifier.verify(Arrays.asList(FILENAME_ISSUES_FIRST, FILENAME_NO_ISSUE), visitor);
50+
MultipleFilesJavaCheckVerifier.verify(files, visitor);
4951
Fail.fail("Should have failed");
5052
} catch (AssertionError e) {
5153
assertThat(e).hasMessage("Unexpected at [4]");
@@ -55,8 +57,9 @@ void verify_unexpected_issue() {
5557
@Test
5658
void verify_combined_missing_expected_and_unexpected_issues() {
5759
IssuableSubscriptionVisitor visitor = new JavaCheckVerifierTest.FakeVisitor().withDefaultIssues().withIssue(4, "extra message").withoutIssue(1);
60+
List<String> files = Arrays.asList(FILENAME_ISSUES_FIRST, FILENAME_NO_ISSUE);
5861
try {
59-
MultipleFilesJavaCheckVerifier.verify(Arrays.asList(FILENAME_ISSUES_FIRST, FILENAME_NO_ISSUE), visitor);
62+
MultipleFilesJavaCheckVerifier.verify(files, visitor);
6063
Fail.fail("Should have failed");
6164
} catch (AssertionError e) {
6265
assertThat(e).hasMessage("Expected at [1], Unexpected at [4]");
@@ -71,9 +74,10 @@ void verify_issues_in_multiple_files() {
7174

7275
@Test
7376
void test_issues_with_no_semantic() {
77+
List<String> files = Arrays.asList(FILENAME_ISSUES_FIRST, FILENAME_NO_ISSUE);
78+
FakeVisitor visitor = new JavaCheckVerifierTest.FakeVisitor().withDefaultIssues();
7479
try {
75-
MultipleFilesJavaCheckVerifier.verifyNoIssueWithoutSemantic(Arrays.asList(FILENAME_ISSUES_FIRST, FILENAME_NO_ISSUE),
76-
new JavaCheckVerifierTest.FakeVisitor().withDefaultIssues());
80+
MultipleFilesJavaCheckVerifier.verifyNoIssueWithoutSemantic(files, visitor);
7781
Fail.fail("Should have failed");
7882
} catch (AssertionError e) {
7983
assertThat(e.getMessage()).contains("No issues expected but got 10 issue(s):");

java-checks/src/test/java/org/sonar/java/checks/PackageInfoCheckTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ void no_package_info() {
5252

5353
Set<File> set = check.directoriesWithoutPackageFile;
5454
assertThat(set).hasSize(1);
55-
assertThat(set.iterator().next().getName()).isEqualTo("nopackageinfo");
55+
assertThat(set.iterator().next()).hasName("nopackageinfo");
5656

5757
// only one issue per package
5858
JavaCheckVerifier.newVerifier()

java-frontend/src/test/java/org/sonar/java/JavaClasspathTest.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,7 @@ void libraries_should_accept_path_ending_with_wildcard() {
167167
assertThat(javaClasspath.getElements().get(2)).exists();
168168
assertThat(javaClasspath.getElements()).extracting("name").contains("hello.jar", "world.jar", "target");
169169
}
170-
170+
171171
@Test
172172
void libraries_should_keep_order() {
173173
settings.setProperty(JavaClasspathProperties.SONAR_JAVA_LIBRARIES, "lib/world.jar,lib/hello.jar,lib/target/classes/*");
@@ -224,8 +224,9 @@ void libraries_should_accept_path_ending_with_wildcard_jar() {
224224
javaClasspath = createJavaClasspath();
225225
assertThat(javaClasspath.getElements()).hasSize(1);
226226
File jar = javaClasspath.getElements().get(0);
227-
assertThat(jar).exists();
228-
assertThat(jar.getName()).isEqualTo("hello.jar");
227+
assertThat(jar)
228+
.exists()
229+
.hasName("hello.jar");
229230

230231
settings.setProperty(JavaClasspathProperties.SONAR_JAVA_LIBRARIES, "lib/*.jar");
231232
javaClasspath = createJavaClasspath();

java-frontend/src/test/java/org/sonar/java/ast/JavaAstScannerTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,8 +214,9 @@ public void init(MethodTree methodTree, CFG cfg) {
214214
void should_propagate_SOError() {
215215
JavaAstScanner scanner = new JavaAstScanner(null);
216216
scanner.setVisitorBridge(new VisitorsBridge(new CheckThrowingSOError()));
217+
List<InputFile> files = Collections.singletonList(TestUtils.inputFile("src/test/resources/AstScannerNoParseError.txt"));
217218
try {
218-
scanner.scan(Collections.singletonList(TestUtils.inputFile("src/test/resources/AstScannerNoParseError.txt")));
219+
scanner.scan(files);
219220
fail("Should have triggered a StackOverflowError and not reach this point.");
220221
} catch (Error e) {
221222
assertThat(e).isInstanceOf(StackOverflowError.class);

java-frontend/src/test/java/org/sonar/java/se/xproc/HappyPathYieldTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,10 @@ void test_equals() {
6262
yield.setResult(-1, NOT_NULL_CONSTRAINT);
6363
otherYield = new HappyPathYield(mb);
6464
otherYield.setResult(-1, NOT_NULL_CONSTRAINT);
65-
assertThat(yield).isEqualTo(otherYield);
66-
67-
// same arity and parameters but exceptional yield
68-
assertThat(yield).isNotEqualTo(new ExceptionalYield(mb));
65+
assertThat(yield)
66+
.isEqualTo(otherYield)
67+
// same arity and parameters but exceptional yield
68+
.isNotEqualTo(new ExceptionalYield(mb));
6969
}
7070

7171
@Test

java-frontend/src/test/java/org/sonar/java/se/xproc/MethodYieldTest.java

Lines changed: 13 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -147,29 +147,19 @@ void yields_are_not_generated_by_check() {
147147
void test_yield_equality() {
148148
MethodBehavior methodBehavior = mockMethodBehavior(1, false);
149149
MethodYield yield = newMethodYield(methodBehavior);
150-
MethodYield otherYield;
151-
152-
assertThat(yield).isNotEqualTo(null);
153-
assertThat(yield).isNotEqualTo(new Object());
154-
155-
// same instance
156-
assertThat(yield).isEqualTo(yield);
157-
158-
// method behavior not taken into account
159-
MethodYield myYield = newMethodYield(null);
160-
assertThat(yield).isEqualTo(myYield);
161-
162-
// node not taken into account
163-
otherYield = newMethodYield(mockNode(), methodBehavior);
164-
assertThat(yield).isEqualTo(otherYield);
165-
166-
// same arity and constraints on parameters but exceptional path
167-
otherYield = new ExceptionalYield(methodBehavior);
168-
assertThat(yield).isNotEqualTo(otherYield);
169-
170-
// same arity and constraints on parameters but happy path path
171-
otherYield = new HappyPathYield(methodBehavior);
172-
assertThat(yield).isNotEqualTo(otherYield);
150+
assertThat(yield)
151+
.isNotEqualTo(null)
152+
.isNotEqualTo(new Object())
153+
// same instance
154+
.isEqualTo(yield)
155+
// method behavior not taken into account
156+
.isEqualTo(newMethodYield(null))
157+
// node not taken into account
158+
.isEqualTo(newMethodYield(mockNode(), methodBehavior))
159+
// same arity and constraints on parameters but exceptional path
160+
.isNotEqualTo(new ExceptionalYield(methodBehavior))
161+
// same arity and constraints on parameters but happy path path
162+
.isNotEqualTo(new HappyPathYield(methodBehavior));
173163

174164
ConstraintsByDomain nullConstraint = ConstraintsByDomain.empty().put(ObjectConstraint.NULL);
175165
MethodYield yield1 = newMethodYield(methodBehavior);

java-frontend/src/test/java/org/sonar/java/testing/ExpectationsTest.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@
2727
import java.util.stream.Collectors;
2828
import org.assertj.core.api.Fail;
2929
import org.junit.jupiter.api.Test;
30-
import org.sonar.java.testing.Expectations;
30+
import org.sonar.java.testing.Expectations.Parser;
31+
3132
import static org.sonar.java.testing.Expectations.IssueAttribute.END_COLUMN;
3233
import static org.sonar.java.testing.Expectations.IssueAttribute.END_LINE;
3334
import static org.sonar.java.testing.Expectations.IssueAttribute.FLOWS;
@@ -72,8 +73,9 @@ void relative_end_line_attribute() {
7273

7374
@Test
7475
void invalid_attribute_name() {
76+
Parser parser = new Expectations().parser();
7577
try {
76-
new Expectations().parser().parseIssue("// Noncompliant [[invalid]]", LINE);
78+
parser.parseIssue("// Noncompliant [[invalid]]", LINE);
7779
Fail.fail("exception expected");
7880
} catch (AssertionError e) {
7981
assertThat(e).hasMessage("// Noncompliant attributes not valid: 'invalid'");
@@ -98,8 +100,9 @@ void issue_with_attributes_and_comment_switched() {
98100

99101
@Test
100102
void end_line_attribute() {
103+
Parser parser = new Expectations().parser();
101104
try {
102-
new Expectations().parser().parseIssue("// Noncompliant [[endLine=-1]] {{message}}", 0);
105+
parser.parseIssue("// Noncompliant [[endLine=-1]] {{message}}", 0);
103106
Fail.fail("exception expected");
104107
} catch (AssertionError e) {
105108
assertThat(e).hasMessage("endLine attribute should be relative to the line and must be +N with N integer");

java-frontend/src/test/java/org/sonar/plugins/java/api/CheckRegistrarTest.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121

2222
import org.junit.jupiter.api.Test;
2323

24-
import java.util.ArrayList;
24+
import java.util.Collections;
25+
import java.util.List;
2526

2627
import static org.assertj.core.api.Assertions.assertThat;
2728
import static org.assertj.core.api.Assertions.fail;
@@ -30,8 +31,11 @@ class CheckRegistrarTest {
3031

3132
@Test
3233
void repository_key_is_mandatory() throws Exception {
34+
CheckRegistrar.RegistrarContext registrarContext = new CheckRegistrar.RegistrarContext();
35+
List<Class<? extends JavaCheck>> checkClasses = Collections.emptyList();
36+
List<Class<? extends JavaCheck>> testCheckClasses = Collections.emptyList();
3337
try {
34-
new CheckRegistrar.RegistrarContext().registerClassesForRepository(" ", new ArrayList<>(), new ArrayList<>());
38+
registrarContext.registerClassesForRepository(" ", checkClasses, testCheckClasses);
3539
fail("");
3640
} catch (IllegalArgumentException e) {
3741
assertThat(e).hasMessage("Please specify a valid repository key to register your custom rules");

java-frontend/src/test/java/org/sonar/plugins/java/api/IssuableSubscriptionVisitorTest.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,10 @@ void test_custom_rules_report_issues() throws Exception {
4848

4949
@Test
5050
void check_issuable_subscription_visitor_does_not_visit_tree_on_its_own() {
51+
CompilationUnitTree tree = Mockito.mock(CompilationUnitTree.class);
52+
CustomRule visitor = new CustomRule();
5153
try {
52-
new CustomRule().scanTree(Mockito.mock(CompilationUnitTree.class));
54+
visitor.scanTree(tree);
5355
fail("Analysis should have failed");
5456
} catch (UnsupportedOperationException e) {
5557
assertThat(e).hasMessage("IssuableSubscriptionVisitor should not drive visit of AST.");

0 commit comments

Comments
 (0)