Skip to content

Commit c6f1745

Browse files
author
Julien NICOL
committed
Issue 2302 : Using system dependent file paths
Using system dependent file paths for XUnit reports test case filenames should logically prevent duplications and allows successfull location on every file systems
1 parent cc40b41 commit c6f1745

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

cxx-sensors/src/main/java/org/sonar/cxx/sensors/tests/xunit/XunitReportParser.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,17 @@
1919
*/
2020
package org.sonar.cxx.sensors.tests.xunit;
2121

22+
import java.nio.file.Path;
23+
import java.nio.file.Paths;
2224
import java.text.ParseException;
2325
import java.util.Collection;
2426
import java.util.HashMap;
2527
import java.util.Locale;
2628
import java.util.Map;
29+
import java.util.Optional;
30+
2731
import javax.xml.stream.XMLStreamException;
32+
2833
import org.codehaus.staxmate.in.ElementFilter;
2934
import org.codehaus.staxmate.in.SMHierarchicCursor;
3035
import org.codehaus.staxmate.in.SMInputCursor;
@@ -39,7 +44,7 @@
3944
public class XunitReportParser implements XmlStreamHandler {
4045

4146
private final String baseDir;
42-
private final Map<String, TestFile> testFiles = new HashMap<>();
47+
private final Map<Path, TestFile> testFiles = new HashMap<>();
4348

4449
public XunitReportParser(String baseDir) {
4550
this.baseDir = baseDir;
@@ -127,15 +132,15 @@ private void parseTestCaseTag(SMInputCursor testCaseCursor, String tsName, Strin
127132
}
128133

129134
private TestFile getTestFile(String filename) {
130-
String absolute = CxxUtils.resolveAntPath(baseDir, filename);
131-
if (absolute != null) {
132-
absolute = absolute.toLowerCase();
133-
}
134-
var file = testFiles.get(absolute);
135+
var absolute = Optional.ofNullable(CxxUtils.resolveAntPath(baseDir, filename))
136+
.map(p -> Paths.get(p));
137+
138+
var file = testFiles.get(absolute.orElse(null));
135139
if (file == null) {
136-
file = new TestFile(absolute);
137-
testFiles.put(absolute, file);
140+
file = new TestFile(absolute.map(Object::toString).orElse(null));
141+
testFiles.put(absolute.orElse(null), file);
138142
}
143+
139144
return file;
140145
}
141146

0 commit comments

Comments
 (0)