Skip to content

Commit a4da7f4

Browse files
Change tests implementation to fit with SQ 9 and adapt some new rules names and remove some shell treatments
1 parent abddcfb commit a4da7f4

File tree

8 files changed

+63
-88
lines changed

8 files changed

+63
-88
lines changed

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,11 @@
132132
<artifactId>xstream</artifactId>
133133
<version>1.4.18</version>
134134
</dependency>
135+
<dependency>
136+
<groupId>org.sonarsource.sonarqube</groupId>
137+
<artifactId>sonar-plugin-api-impl</artifactId>
138+
<version>9.9.1.69595</version>
139+
</dependency>
135140
</dependencies>
136141

137142
<build>

src/main/java/fr/cnes/sonar/plugins/icode/check/ICodeSensor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,7 @@ protected Map<String, InputFile> getScannedFiles(final FileSystem fileSystem, fi
338338
for(final AnalysisFile file : files) {
339339
// Checks if the file system contains a file with corresponding path (relative or absolute).
340340
final String fileToFind = new File(fileSystem.baseDir(), file.getFileName()).getPath();
341-
final FilePredicate predicate = fileSystem.predicates().hasRelativePath(fileToFind);
341+
final FilePredicate predicate = fileSystem.predicates().hasPath(fileToFind);
342342
final InputFile inputFile = fileSystem.inputFile(predicate);
343343
if(inputFile!=null) {
344344
result.put(file.getFileName(), inputFile);

src/main/java/fr/cnes/sonar/plugins/icode/measures/ICodeMetricsProcessor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,11 +79,11 @@ public static void saveMeasure(final SensorContext context, final Map<String, In
7979
// Get i-Code rule id to test if issue must be saved here.
8080
final String metricKey = icodeMeasure.getAnalysisRuleId();
8181
// Take F77 / F90 ncloc into account
82-
if (metricKey.contains("MET.LineOfCode")) {
82+
if (metricKey.contains("MET.Line")) {
8383
saveSonarQubeNewMeasure(context, files, CoreMetrics.NCLOC, icodeMeasure);
8484
}
8585
// Take F77 / F90 number of comment lines into account
86-
else if (metricKey.contains("MET.LineOfComment")) {
86+
else if (metricKey.contains("MET.Line")) {
8787
saveSonarQubeNewMeasure(context, files, CoreMetrics.COMMENT_LINES, icodeMeasure);
8888
}
8989
}
@@ -206,7 +206,7 @@ private static void computeFunctions(final SensorContext context, final Map<Stri
206206

207207
// Collect all ncloc measures in one list.
208208
measures.forEach((x,y) -> {
209-
if(x.contains(".MET.LineOfCode")) {
209+
if(x.contains(".MET.Line")) {
210210
rawMeasures.addAll(y);
211211
}
212212
});

src/main/java/fr/cnes/sonar/plugins/icode/rules/ICodeRulesDefinition.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,12 @@ protected List<NewRule> createFortranRepository(final Context context, final Str
9696

9797
try {
9898
InputStream inputFile = this.getClass().getResourceAsStream(pathToRulesXml);
99+
100+
if (inputFile == null) {
101+
repository.done();
102+
return rules;
103+
}
104+
99105
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
100106
Document doc = dbFactory.newDocumentBuilder().parse(inputFile);
101107
doc.getDocumentElement().normalize();

src/test/java/fr/cnes/sonar/plugins/icode/check/ICodeSensorTest.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import org.mockito.Mockito;
3030
import org.sonar.api.batch.fs.InputFile;
3131
import org.sonar.api.batch.fs.internal.DefaultFileSystem;
32+
import org.sonar.api.batch.fs.FileSystem;
3233
import org.sonar.api.batch.fs.internal.DefaultInputFile;
3334
import org.sonar.api.batch.fs.internal.TestInputFileBuilder;
3435
import org.sonar.api.batch.sensor.SensorDescriptor;
@@ -58,10 +59,8 @@ public class ICodeSensorTest {
5859
public void prepare() throws URISyntaxException {
5960
fs = new DefaultFileSystem(new File(getClass().getResource("/project").toURI()));
6061
fs.setEncoding(StandardCharsets.UTF_8);
61-
62-
clanhb_f = TestInputFileBuilder.create(
63-
"ProjectKey",
64-
fs.resolvePath("clanhb.f").getPath())
62+
63+
clanhb_f = TestInputFileBuilder.create("ProjectKey", fs.baseDir(), new File(getClass().getResource("/project/clanhb.f").toURI()))
6564
.setLanguage("icode")
6665
.setType(InputFile.Type.MAIN)
6766
.setLines(10)
@@ -70,9 +69,7 @@ public void prepare() throws URISyntaxException {
7069
.build();
7170
fs.add(clanhb_f);
7271

73-
clanhb_f90 = TestInputFileBuilder.create(
74-
"ProjectKey",
75-
fs.resolvePath("clanhb.f90").getPath())
72+
clanhb_f90 = TestInputFileBuilder.create("ProjectKey", fs.baseDir(), new File(getClass().getResource("/project/clanhb.f90").toURI()))
7673
.setLanguage("icode")
7774
.setType(InputFile.Type.MAIN)
7875
.setLines(10)

src/test/java/fr/cnes/sonar/plugins/icode/languages/ICodeQualityProfilesTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,16 +19,21 @@
1919
import org.junit.Assert;
2020
import org.junit.Test;
2121
import org.sonar.api.server.profile.BuiltInQualityProfilesDefinition;
22+
import org.sonar.api.server.rule.RulesDefinition;
23+
import fr.cnes.sonar.plugins.icode.rules.ICodeRulesDefinition;
2224

2325
public class ICodeQualityProfilesTest {
2426

2527
@Test
2628
public void test_should_create_sonar_way_profile() {
2729
ICodeQualityProfiles profileDef = new ICodeQualityProfiles();
30+
31+
RulesDefinition.Context contextRules = new RulesDefinition.Context();
32+
new ICodeRulesDefinition().define(contextRules);
33+
2834
BuiltInQualityProfilesDefinition.Context context = new BuiltInQualityProfilesDefinition.Context();
2935
profileDef.define(context);
3036
Assert.assertNotNull(profileDef);
3137
Assert.assertEquals(2, context.profilesByLanguageAndName().keySet().size());
3238
}
33-
3439
}

src/test/java/fr/cnes/sonar/plugins/icode/measures/ICodeMetricsProcessorTest.java

Lines changed: 25 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -45,36 +45,36 @@ public class ICodeMetricsProcessorTest {
4545
private Map<String, InputFile> files;
4646
private AnalysisRule rule;
4747

48-
private DefaultInputFile bash_sh;
4948
private DefaultInputFile clanhb_f;
49+
private DefaultInputFile clanhb_f90;
5050

5151
@Before
5252
public void prepare() throws URISyntaxException {
53-
final URI projectPath = ICodeMetricsProcessor.class.getResource("/project/").toURI();
53+
final URI projectPath = ICodeMetricsProcessor.class.getResource("/project").toURI();
5454
fs = new DefaultFileSystem(new File(projectPath));
5555
fs.setEncoding(Charset.forName("UTF-8"));
5656

57-
bash_sh = TestInputFileBuilder.create(
57+
clanhb_f = TestInputFileBuilder.create(
5858
"ProjectKey",
59-
fs.resolvePath(projectPath.getRawPath()+"bash.sh").getPath())
59+
fs.baseDir(), new File(getClass().getResource("/project/clanhb.f").toURI()))
6060
.setLanguage("icode")
6161
.setType(InputFile.Type.MAIN)
6262
.build();
63-
fs.add(bash_sh);
64-
clanhb_f = TestInputFileBuilder.create(
65-
"ProjectKey",
66-
fs.resolvePath(projectPath.getRawPath()+"clanhb.f").getPath())
63+
fs.add(clanhb_f);
64+
65+
clanhb_f90 = TestInputFileBuilder.create("ProjectKey", fs.baseDir(), new File(getClass().getResource("/project/clanhb.f90").toURI()))
6766
.setLanguage("icode")
6867
.setType(InputFile.Type.MAIN)
6968
.build();
70-
fs.add(clanhb_f);
69+
fs.add(clanhb_f90);
70+
7171

7272
context = SensorContextTester.create(fs.baseDir());
7373
files = new HashMap<>();
7474
rule = new AnalysisRule();
7575

76-
files.put("bash.sh", bash_sh);
7776
files.put("clanhb.f", clanhb_f);
77+
files.put("clanhb.f90", clanhb_f90);
7878
}
7979

8080
@Test
@@ -89,23 +89,18 @@ public void test_is_metric_false() {
8989

9090
@Test
9191
public void test_save_nominal_measures() {
92-
String[] analysisRulesIds = {"SH.MET.LineOfCode","SH.MET.LineOfComment","F90.MET.Nesting","F90.MET.LineOfCode"};
93-
String[] fileNames = {"bash.sh", "bash.sh", "bash.sh", "zoulou.sh"};
94-
int[] expectedResults = {1,2,2,2}; // Size is incremented as context.measure(key) is not resetted after each iteration
95-
96-
for(int i=0;i<analysisRulesIds.length; ++i){
97-
rule.setResult(new Result());
98-
rule.setAnalysisRuleId(analysisRulesIds[i]);
99-
rule.getResult().setFileName(fileNames[i]);
100-
rule.getResult().setResultValue("3");
101-
rule.getResult().setResultLine("3");
102-
rule.getResult().setResultTypePlace("class");
103-
rule.getResult().setResultMessage("Small file");
104-
final String key = bash_sh.key();
105-
106-
ICodeMetricsProcessor.saveMeasure(context, files, rule);
107-
Assert.assertEquals(expectedResults[i], context.measures(key).size());
108-
}
92+
93+
final String key = clanhb_f.key();
94+
rule.setResult(new Result());
95+
rule.setAnalysisRuleId("F77.MET.Line");
96+
rule.getResult().setFileName("clanhb.f");
97+
rule.getResult().setResultValue("3");
98+
rule.getResult().setResultLine("3");
99+
rule.getResult().setResultTypePlace("class");
100+
rule.getResult().setResultMessage("Small file");
101+
102+
ICodeMetricsProcessor.saveMeasure(context, files, rule);
103+
Assert.assertEquals(1, context.measures(key).size());
109104
}
110105

111106
@Test
@@ -173,11 +168,11 @@ public void test_compute_nesting() {
173168
public void test_compute_functions() {
174169

175170
final AnalysisProject project = new AnalysisProject();
176-
final String key = bash_sh.key();
171+
final String key = clanhb_f.key();
177172

178173
rule.setResult(new Result());
179-
rule.setAnalysisRuleId("SH.MET.LineOfCode");
180-
rule.getResult().setFileName("bash.sh");
174+
rule.setAnalysisRuleId("F77.MET.Line");
175+
rule.getResult().setFileName("clanhb.f");
181176
rule.getResult().setResultValue("3");
182177
rule.getResult().setResultLine("3");
183178
rule.getResult().setResultTypePlace("method");
@@ -188,37 +183,4 @@ public void test_compute_functions() {
188183
ICodeMetricsProcessor.saveExtraMeasures(context, files, project);
189184
Assert.assertEquals(1, context.measures(key).size());
190185
}
191-
192-
@Test
193-
public void test_compute_comment() {
194-
195-
final AnalysisProject project = new AnalysisProject();
196-
final AnalysisRule rule2 = new AnalysisRule();
197-
final String key = bash_sh.key();
198-
199-
rule.setResult(new Result());
200-
rule.setAnalysisRuleId("SH.MET.LineOfCode");
201-
rule.getResult().setFileName("bash.sh");
202-
rule.getResult().setResultValue("20");
203-
rule.getResult().setResultLine("3");
204-
rule.getResult().setResultTypePlace("method");
205-
rule.getResult().setResultMessage("Small file");
206-
207-
rule2.setResult(new Result());
208-
rule2.setAnalysisRuleId("SH.MET.Nesting");
209-
rule2.getResult().setFileName("bash.sh");
210-
rule2.getResult().setResultValue("50");
211-
rule2.getResult().setResultLine("3");
212-
rule2.getResult().setResultTypePlace("method");
213-
rule2.getResult().setResultMessage("Small file");
214-
215-
project.setAnalysisRule(new AnalysisRule[]{rule, rule2});
216-
217-
ICodeMetricsProcessor.saveExtraMeasures(context, files, project);
218-
Assert.assertEquals(2, context.measures(key).size());
219-
Assert.assertEquals("functions", ((DefaultMeasure)context.measures(key).toArray()[0]).metric().key());
220-
Assert.assertEquals("icode-nesting-max", ((DefaultMeasure)context.measures(key).toArray()[1]).metric().key());
221-
Assert.assertEquals(50, ((DefaultMeasure)context.measures(key).toArray()[1]).value());
222-
}
223-
224186
}

src/test/java/fr/cnes/sonar/plugins/icode/rules/ICodeRulesDefinitionTest.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,18 @@ public void test_creation_of_repositories_and_rules() {
3232
Assert.assertEquals(64, context.repository("f90-rules").rules().size());
3333
}
3434

35-
// @Test
36-
// public void test_creation_of_repositories_and_rules_for_bad_language() {
37-
// RulesDefinition.Context context = new RulesDefinition.Context();
38-
// Assert.assertEquals(0, context.repositories().size());
39-
// new ICodeRulesDefinition(){
40-
// @Override
41-
// public void define(Context context) {
42-
// createRepository(context, "bad");
43-
// }
44-
// }.define(context);
45-
// Assert.assertEquals(1, context.repositories().size());
46-
// Assert.assertEquals(0, context.repository("bad-rules").rules().size());
47-
// }
35+
@Test
36+
public void test_creation_of_repositories_and_rules_for_bad_language() {
37+
RulesDefinition.Context context = new RulesDefinition.Context();
38+
Assert.assertEquals(0, context.repositories().size());
39+
new ICodeRulesDefinition(){
40+
@Override
41+
public void define(Context context) {
42+
createFortranRepository(context, "bad", "bad-rules", "bad_file");
43+
}
44+
}.define(context);
45+
Assert.assertEquals(1, context.repositories().size());
46+
Assert.assertEquals(0, context.repository("bad-rules").rules().size());
47+
}
4848

4949
}

0 commit comments

Comments
 (0)