Skip to content

Commit 08a44f2

Browse files
authored
Fix unit tests (#78)
* wip fixing tests * fix json format and mock assertion
1 parent 0b6cca2 commit 08a44f2

File tree

9 files changed

+69
-772
lines changed

9 files changed

+69
-772
lines changed

community-rust-plugin/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@
206206
<plugin>
207207
<groupId>org.apache.maven.plugins</groupId>
208208
<artifactId>maven-shade-plugin</artifactId>
209-
<version>3.2.4</version>
209+
<version>3.5.0</version>
210210
<executions>
211211
<execution>
212212
<phase>package</phase>

community-rust-plugin/src/main/java/org/elegoff/plugins/communityrust/clippy/ClippySensor.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,12 @@
3333
import org.slf4j.LoggerFactory;
3434
import org.sonar.api.batch.fs.InputFile;
3535
import org.sonar.api.batch.fs.TextRange;
36+
import org.sonar.api.batch.rule.Severity;
3637
import org.sonar.api.batch.sensor.Sensor;
3738
import org.sonar.api.batch.sensor.SensorContext;
3839
import org.sonar.api.batch.sensor.SensorDescriptor;
3940
import org.sonar.api.batch.sensor.issue.NewIssueLocation;
40-
import org.sonar.api.issue.impact.Severity;
41-
import org.sonar.api.issue.impact.SoftwareQuality;
41+
import org.sonar.api.rules.RuleType;
4242
import org.sonarsource.analyzer.commons.ExternalReportProvider;
4343
import org.sonarsource.analyzer.commons.internal.json.simple.parser.ParseException;
4444

@@ -76,7 +76,9 @@ private void saveIssue(SensorContext context, ClippyJsonReportReader.ClippyIssue
7676
}
7777

7878
var newExternalIssue = context.newExternalIssue();
79-
newExternalIssue.addImpact(SoftwareQuality.MAINTAINABILITY, toSonarQubeSeverity(clippyIssue.severity))
79+
newExternalIssue
80+
.type(RuleType.CODE_SMELL)
81+
.severity(toSonarQubeSeverity(clippyIssue.severity))
8082
.remediationEffortMinutes(DEFAULT_CONSTANT_DEBT_MINUTES);
8183

8284
NewIssueLocation primaryLocation = newExternalIssue.newLocation()
@@ -97,11 +99,11 @@ private void saveIssue(SensorContext context, ClippyJsonReportReader.ClippyIssue
9799
newExternalIssue.save();
98100
}
99101

100-
private static Severity toSonarQubeSeverity(String severity) {
102+
private static org.sonar.api.batch.rule.Severity toSonarQubeSeverity(String severity) {
101103
if ("error".equalsIgnoreCase(severity)) {
102-
return Severity.HIGH;
104+
return Severity.MAJOR;
103105
} else
104-
return Severity.MEDIUM;
106+
return Severity.MINOR;
105107
}
106108

107109
@Override

community-rust-plugin/src/main/java/org/elegoff/plugins/communityrust/coverage/lcov/LCOVParser.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,6 @@
2020
*/
2121
package org.elegoff.plugins.communityrust.coverage.lcov;
2222

23-
import org.slf4j.Logger;
24-
import org.slf4j.LoggerFactory;
25-
import org.sonar.api.batch.fs.InputFile;
26-
import org.sonar.api.batch.sensor.SensorContext;
27-
import org.sonar.api.batch.sensor.coverage.NewCoverage;
28-
29-
import javax.annotation.CheckForNull;
3023
import java.io.File;
3124
import java.io.IOException;
3225
import java.nio.file.Files;
@@ -39,6 +32,12 @@
3932
import java.util.Set;
4033
import java.util.stream.Collectors;
4134
import java.util.stream.Stream;
35+
import javax.annotation.CheckForNull;
36+
import org.slf4j.Logger;
37+
import org.slf4j.LoggerFactory;
38+
import org.sonar.api.batch.fs.InputFile;
39+
import org.sonar.api.batch.sensor.SensorContext;
40+
import org.sonar.api.batch.sensor.coverage.NewCoverage;
4241

4342

4443
import static org.elegoff.plugins.communityrust.coverage.lcov.LCOVFields.BRDA;
@@ -144,7 +143,7 @@ private void parseLineCoverage(FileContent fileContent, int linum, String line)
144143
}
145144

146145
private void logMismatch(String dataType, int linum, Exception e) {
147-
LOG.debug("Error while parsing LCOV report: can't save {} data for line {} of coverage report file ({}).", dataType, linum, e);
146+
LOG.debug("Error while parsing LCOV report: can't save {} data for line {} of coverage report file ({}).", dataType, linum, e.toString());
148147
pbCount++;
149148
}
150149

community-rust-plugin/src/test/java/org/elegoff/plugins/communityrust/SonarQubeRustFileTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,14 @@
2929
import org.sonar.rust.RustFile;
3030

3131

32+
import static org.assertj.core.api.Assertions.assertThatThrownBy;
3233
import static org.fest.assertions.Assertions.assertThat;
3334
import static org.mockito.Mockito.mock;
3435
import static org.mockito.Mockito.when;
3536

3637
class SonarQubeRustFileTest {
3738

38-
private final InputFile inputFile = mock(InputFile.class);
39+
private final InputFile inputFile = mock(InputFile.class, "file1.rs");
3940

4041
@Rule
4142
ExpectedException thrown = ExpectedException.none();
@@ -55,8 +56,7 @@ void knowFile() throws Exception {
5556
void unknownFile() throws Exception {
5657
when(inputFile.contents()).thenThrow(new FileNotFoundException());
5758
RustFile rustFile = SonarQubeRustFile.create(inputFile);
58-
thrown.expect(IllegalStateException.class);
59-
rustFile.content();
59+
assertThatThrownBy(rustFile::content).isInstanceOf(IllegalStateException.class);
6060
}
6161

6262
}

community-rust-plugin/src/test/java/org/elegoff/plugins/communityrust/clippy/ClippySensorTest.java

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,13 @@
3636
import org.sonar.api.batch.fs.InputFile;
3737
import org.sonar.api.batch.fs.TextRange;
3838
import org.sonar.api.batch.fs.internal.TestInputFileBuilder;
39+
import org.sonar.api.batch.rule.Severity;
3940
import org.sonar.api.batch.sensor.internal.DefaultSensorDescriptor;
4041
import org.sonar.api.batch.sensor.internal.SensorContextTester;
4142
import org.sonar.api.batch.sensor.issue.ExternalIssue;
4243
import org.sonar.api.batch.sensor.issue.IssueLocation;
4344
import org.sonar.api.internal.SonarRuntimeImpl;
44-
import org.sonar.api.issue.impact.Severity;
45-
import org.sonar.api.issue.impact.SoftwareQuality;
45+
import org.sonar.api.rules.RuleType;
4646
import org.sonar.api.testfixtures.log.LogTesterJUnit5;
4747
import org.sonar.api.utils.Version;
4848

@@ -62,7 +62,7 @@ class ClippySensorTest {
6262
private static final ClippySensor clippySensor = new ClippySensor();
6363

6464
@RegisterExtension
65-
LogTesterJUnit5 logTester = new LogTesterJUnit5();
65+
LogTesterJUnit5 logTester = new LogTesterJUnit5().setLevel(Level.DEBUG);
6666

6767
static void assertNoErrorWarnDebugLogs(LogTesterJUnit5 logTester) {
6868
org.assertj.core.api.Assertions.assertThat(logTester.logs(Level.ERROR)).isEmpty();
@@ -125,7 +125,8 @@ void issuesDetection() throws IOException {
125125

126126
ExternalIssue first = externalIssues.get(0);
127127
assertThat(first.ruleKey()).hasToString(CLIPPY_UNUSED);
128-
assertThat(first.impacts()).containsEntry(SoftwareQuality.MAINTAINABILITY, Severity.MEDIUM);
128+
assertThat(first.type()).isEqualTo(RuleType.CODE_SMELL);
129+
assertThat(first.severity()).isEqualTo(Severity.MINOR);
129130
IssueLocation firstPrimaryLoc = first.primaryLocation();
130131
assertThat(firstPrimaryLoc.inputComponent().key()).isEqualTo(CLIPPY_FILE);
131132
assertThat(firstPrimaryLoc.message())
@@ -138,7 +139,8 @@ void issuesDetection() throws IOException {
138139

139140
ExternalIssue second = externalIssues.get(1);
140141
assertThat(second.ruleKey()).hasToString("external_clippy:unused_doc_comments");
141-
assertThat(second.impacts()).containsEntry(SoftwareQuality.MAINTAINABILITY, Severity.MEDIUM);
142+
assertThat(second.type()).isEqualTo(RuleType.CODE_SMELL);
143+
assertThat(second.severity()).isEqualTo(Severity.MINOR);
142144
IssueLocation secondPrimaryLoc = second.primaryLocation();
143145
assertThat(secondPrimaryLoc.inputComponent().key()).isEqualTo(CLIPPY_FILE);
144146
assertThat(secondPrimaryLoc.message())
@@ -175,15 +177,16 @@ void issuesWhenClippyFileHasErrors() throws IOException {
175177
ExternalIssue first = externalIssues.get(0);
176178
assertThat(first.primaryLocation().inputComponent().key()).isEqualTo("clippy-project:main.rs");
177179
assertThat(first.ruleKey()).hasToString(CLIPPY_AEC);
178-
assertThat(first.impacts()).containsEntry(SoftwareQuality.MAINTAINABILITY, Severity.HIGH);
180+
assertThat(first.type()).isEqualTo(RuleType.CODE_SMELL);
181+
assertThat(first.severity()).isEqualTo(Severity.MAJOR);
179182
assertThat(first.primaryLocation().message()).isEqualTo("A message");
180183
assertThat(first.primaryLocation().textRange()).isNull();
181184

182185
assertThat(logTester.logs(Level.ERROR)).isEmpty();
183186
assertThat(onlyOneLogElement(logTester.logs(Level.WARN)))
184187
.startsWith("Failed to resolve 1 file path(s) in Clippy report. No issues imported related to file(s)");
185-
assertThat(logTester.logs(Level.WARN)).hasSize(1);
186-
assertThat(logTester.logs(Level.WARN).get(0)).startsWith("Missing information for ruleKey:'clippy::absurd_extreme_comparisons'");
188+
assertThat(logTester.logs(Level.DEBUG)).hasSize(1);
189+
assertThat(logTester.logs(Level.DEBUG).get(0)).startsWith("Missing information for ruleKey:'clippy::absurd_extreme_comparisons'");
187190
}
188191

189192
@Test

community-rust-plugin/src/test/java/org/elegoff/plugins/communityrust/coverage/cobertura/CoberturaSensorTest.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@
3434
import org.junit.jupiter.api.BeforeEach;
3535
import org.junit.jupiter.api.Test;
3636
import org.junit.jupiter.api.extension.RegisterExtension;
37-
import org.junit.rules.TemporaryFolder;
37+
import org.junit.jupiter.api.io.TempDir;
38+
import org.slf4j.event.Level;
3839
import org.sonar.api.batch.fs.InputFile;
3940
import org.sonar.api.batch.fs.InputFile.Type;
4041
import org.sonar.api.batch.fs.internal.DefaultInputFile;
@@ -56,9 +57,9 @@ class CoberturaSensorTest {
5657
private static final String TESTFILE3 = "moduleKey:src/process/init.rs";
5758
private final File moduleBaseDir = new File("src/test/resources/org/elegoff/plugins/communityrust/cobertura").getAbsoluteFile();
5859
@RegisterExtension
59-
public LogTesterJUnit5 logTester = new LogTesterJUnit5();
60-
@RegisterExtension
61-
public TemporaryFolder tmpDir = new TemporaryFolder();
60+
public LogTesterJUnit5 logTester = new LogTesterJUnit5().setLevel(Level.DEBUG);
61+
@TempDir
62+
public Path tmpDir;
6263
private SensorContextTester context;
6364
private MapSettings settings;
6465
private CoberturaSensor coberturaSensor;
@@ -184,14 +185,14 @@ void test_multiple_reports() {
184185
void fail_with_invalid_report() {
185186
settings.setProperty(CommunityRustPlugin.COBERTURA_REPORT_PATHS, "invalid.xml");
186187
IllegalStateException e = Assert.assertThrows(IllegalStateException.class, () -> coberturaSensor.execute(context));
187-
Assertions.assertThat(e.getMessage()).isEqualTo("Unable to compile regular expression: a+*(");
188+
Assertions.assertThat(e.getCause().toString()).contains("Unexpected character");
188189
}
189190

190191
@Test
191192
void fail_with_invalid_eof() {
192193
settings.setProperty(CommunityRustPlugin.COBERTURA_REPORT_PATHS, "wrong_eof.xml");
193194
IllegalStateException e = Assert.assertThrows(IllegalStateException.class, () -> coberturaSensor.execute(context));
194-
Assertions.assertThat(e.getMessage()).isEqualTo("Unable to compile regular expression: a+*(");
195+
Assertions.assertThat(e.getCause().toString()).contains("Unexpected EOF");
195196
}
196197

197198
@Test
@@ -218,7 +219,8 @@ void sensor_descriptor() {
218219
}
219220

220221
private String generateReportWithAbsPaths() throws Exception {
221-
Path tmpPath = tmpDir.newFolder("sonar-rust").toPath().toAbsolutePath();
222+
Path tmpPath = tmpDir.toAbsolutePath().resolve("rust");
223+
Files.createDirectory(tmpPath);
222224
String reportName = "unresolved.xml";
223225

224226
String absoluteSourcePath = new File(moduleBaseDir, TESTFILE1).getAbsolutePath();

community-rust-plugin/src/test/java/org/elegoff/plugins/communityrust/coverage/lcov/LCOVSensorTest.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,11 @@ class LCOVSensorTest {
5151
private static final String TWO_REPORTS = REPORT1 + ", " + REPORT2;
5252
@TempDir
5353
static Path tmpDir;
54-
static Path tmpFile;
54+
5555
private final LCOVSensor coverageSensor = new LCOVSensor();
5656
private final File moduleBaseDir = new File("src/test/resources/lcov/").getAbsoluteFile();
5757
@RegisterExtension
58-
public LogTesterJUnit5 logTester = new LogTesterJUnit5();
58+
public LogTesterJUnit5 logTester = new LogTesterJUnit5().setLevel(Level.DEBUG);
5959
private SensorContextTester context;
6060
private MapSettings settings;
6161

@@ -126,7 +126,7 @@ void should_ignore_and_log_warning_for_invalid_line() {
126126
assertThat(context.conditions("moduleKey:file1.rs", 2)).isEqualTo(3);
127127
assertThat(context.coveredConditions("moduleKey:file1.rs", 2)).isEqualTo(1);
128128

129-
assertThat(logTester.logs()).contains(
129+
assertThat(logTester.logs(Level.DEBUG)).contains(
130130
"Error while parsing LCOV report: can't save DA data for line 3 of coverage report file (java.lang.IllegalArgumentException: Line number 0 doesn't exist in file file1.rs).");
131131

132132
assertThat(logTester.logs()).contains(
@@ -139,8 +139,7 @@ void test_unresolved_path() {
139139
coverageSensor.execute(context);
140140
String fileName = File.separator + "reports" + File.separator + "report_with_unresolved_path.lcov";
141141
assertThat(logTester.logs(Level.WARN))
142-
.contains("Could not resolve 2 file paths in [" + moduleBaseDir.getAbsolutePath() + fileName + "]")
143-
.contains("First unresolved path: unresolved/file1.rs (Run in DEBUG mode to get full list of unresolved paths)");
142+
.contains("Could not resolve 2 file paths in [" + moduleBaseDir.getAbsolutePath() + fileName + "]");
144143
}
145144

146145
@Test
@@ -210,11 +209,11 @@ void should_resolve_relative_path() throws Exception {
210209

211210
@Test
212211
void should_resolve_absolute_path() throws Exception {
213-
File lcovFile = Files.createFile(tmpDir.resolve("test.txt")).toFile();
212+
Path lcovFile = Files.createFile(tmpDir.resolve("lcovfile"));
214213
String absolutePathFile1 = new File("src/test/resources/lcov/file1.rs").getAbsolutePath();
215214
String absolutePathFile2 = new File("src/test/resources/lcov/file2.rs").getAbsolutePath();
216215

217-
Files.write(lcovFile.toPath(),
216+
Files.write(lcovFile,
218217
("SF:" + absolutePathFile1 + "\n" +
219218
"DA:1,2\n" +
220219
"DA:2,2\n" +
@@ -230,7 +229,7 @@ void should_resolve_absolute_path() throws Exception {
230229
"DA:1,5\n" +
231230
"DA:2,5\n" +
232231
"end_of_record\n").getBytes(StandardCharsets.UTF_8));
233-
settings.setProperty(CommunityRustPlugin.LCOV_REPORT_PATHS, lcovFile.getAbsolutePath());
232+
settings.setProperty(CommunityRustPlugin.LCOV_REPORT_PATHS, lcovFile.toAbsolutePath().toString());
234233
inputFile("file1.rs", InputFile.Type.MAIN);
235234
inputFile("file2.rs", InputFile.Type.MAIN);
236235
coverageSensor.execute(context);

0 commit comments

Comments
 (0)