diff --git a/docs/pages/release_notes.md b/docs/pages/release_notes.md
index e5a964f245..257df53c7e 100644
--- a/docs/pages/release_notes.md
+++ b/docs/pages/release_notes.md
@@ -33,6 +33,7 @@ This is a {{ site.pmd.release_type }} release.
* core
* [#2014](https://github.com/pmd/pmd/issues/2014): \[core] Making add(SourceCode sourceCode) public for alternative file systems
* [#2036](https://github.com/pmd/pmd/issues/2036): \[core] Wrong include/exclude patterns are silently ignored
+ * [#2067](https://github.com/pmd/pmd/issues/2067): \[core] Build issue on Windows
* java
* [#2042](https://github.com/pmd/pmd/issues/2042): \[java] PMD crashes with ClassFormatError: Absent Code attribute...
* java-bestpractices
@@ -95,6 +96,7 @@ This is a {{ site.pmd.release_type }} release.
* [#2032](https://github.com/pmd/pmd/pull/2032): \[core] Allow adding SourceCode directly into CPD - [Nathan Braun](https://github.com/nbraun-Google)
* [#2047](https://github.com/pmd/pmd/pull/2047): \[java] Fix computation of metrics with annotations - [Andi](https://github.com/andipabst)
* [#2065](https://github.com/pmd/pmd/pull/2065): \[java] Stop checking UR anomalies - [Carlos Macasaet](https://github.com/l0s)
+* [#2070](https://github.com/pmd/pmd/pull/2070): \[core] Fix renderer tests for windows builds - [Saladoc](https://github.com/Saladoc)
{% endtocmaker %}
diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/renderers/AbstractRendererTst.java b/pmd-core/src/test/java/net/sourceforge/pmd/renderers/AbstractRendererTest.java
similarity index 98%
rename from pmd-core/src/test/java/net/sourceforge/pmd/renderers/AbstractRendererTst.java
rename to pmd-core/src/test/java/net/sourceforge/pmd/renderers/AbstractRendererTest.java
index 7ed01ca1c9..bf3892f032 100644
--- a/pmd-core/src/test/java/net/sourceforge/pmd/renderers/AbstractRendererTst.java
+++ b/pmd-core/src/test/java/net/sourceforge/pmd/renderers/AbstractRendererTest.java
@@ -22,7 +22,7 @@ import net.sourceforge.pmd.lang.ast.DummyNode;
import net.sourceforge.pmd.lang.ast.Node;
import net.sourceforge.pmd.lang.rule.ParametricRuleViolation;
-public abstract class AbstractRendererTst {
+public abstract class AbstractRendererTest {
public abstract Renderer getRenderer();
@@ -53,7 +53,7 @@ public abstract class AbstractRendererTst {
}
protected String getSourceCodeFilename() {
- return "n/a";
+ return "notAvailable.ext";
}
@Test(expected = NullPointerException.class)
diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/renderers/CSVRendererTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/renderers/CSVRendererTest.java
index 844b659e8d..dbc7a04c21 100644
--- a/pmd-core/src/test/java/net/sourceforge/pmd/renderers/CSVRendererTest.java
+++ b/pmd-core/src/test/java/net/sourceforge/pmd/renderers/CSVRendererTest.java
@@ -8,7 +8,7 @@ import net.sourceforge.pmd.PMD;
import net.sourceforge.pmd.Report.ConfigurationError;
import net.sourceforge.pmd.Report.ProcessingError;
-public class CSVRendererTest extends AbstractRendererTst {
+public class CSVRendererTest extends AbstractRendererTest {
@Override
public Renderer getRenderer() {
@@ -18,7 +18,7 @@ public class CSVRendererTest extends AbstractRendererTst {
@Override
public String getExpected() {
return getHeader()
- + "\"1\",\"\",\"n/a\",\"5\",\"1\",\"blah\",\"RuleSet\",\"Foo\"" + PMD.EOL;
+ + "\"1\",\"\",\"" + getSourceCodeFilename() + "\",\"5\",\"1\",\"blah\",\"RuleSet\",\"Foo\"" + PMD.EOL;
}
@Override
@@ -29,8 +29,8 @@ public class CSVRendererTest extends AbstractRendererTst {
@Override
public String getExpectedMultiple() {
return getHeader()
- + "\"1\",\"\",\"n/a\",\"5\",\"1\",\"blah\",\"RuleSet\",\"Foo\"" + PMD.EOL
- + "\"2\",\"\",\"n/a\",\"5\",\"1\",\"blah\",\"RuleSet\",\"Foo\"" + PMD.EOL;
+ + "\"1\",\"\",\"" + getSourceCodeFilename() + "\",\"5\",\"1\",\"blah\",\"RuleSet\",\"Foo\"" + PMD.EOL
+ + "\"2\",\"\",\"" + getSourceCodeFilename() + "\",\"5\",\"1\",\"blah\",\"RuleSet\",\"Foo\"" + PMD.EOL;
}
@Override
diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/renderers/CodeClimateRendererTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/renderers/CodeClimateRendererTest.java
index 5d31161523..d3044c62f3 100644
--- a/pmd-core/src/test/java/net/sourceforge/pmd/renderers/CodeClimateRendererTest.java
+++ b/pmd-core/src/test/java/net/sourceforge/pmd/renderers/CodeClimateRendererTest.java
@@ -19,7 +19,7 @@ import net.sourceforge.pmd.lang.ast.Node;
import net.sourceforge.pmd.lang.rule.ParametricRuleViolation;
import net.sourceforge.pmd.lang.rule.XPathRule;
-public class CodeClimateRendererTest extends AbstractRendererTst {
+public class CodeClimateRendererTest extends AbstractRendererTest {
@Override
public Renderer getRenderer() {
@@ -37,7 +37,7 @@ public class CodeClimateRendererTest extends AbstractRendererTst {
+ "Name | Value | Description\\n" + "--- | --- | ---\\n"
+ "violationSuppressRegex | | Suppress violations with messages matching a regular expression\\n"
+ "violationSuppressXPath | | Suppress violations on nodes which match a given relative XPath expression.\\n"
- + "\"},\"categories\":[\"Style\"],\"location\":{\"path\":\"n/a\",\"lines\":{\"begin\":1,\"end\":1}},\"severity\":\"info\",\"remediation_points\":50000}"
+ + "\"},\"categories\":[\"Style\"],\"location\":{\"path\":\"" + getSourceCodeFilename() + "\",\"lines\":{\"begin\":1,\"end\":1}},\"severity\":\"info\",\"remediation_points\":50000}"
+ "\u0000" + PMD.EOL;
}
@@ -54,7 +54,7 @@ public class CodeClimateRendererTest extends AbstractRendererTst {
+ "violationSuppressXPath | | Suppress violations on nodes which match a given relative XPath expression.\\n"
+ "multiString | default1,default2 | multi string property\\n"
+ "stringProperty | the string value\\nsecond line with 'quotes' | simple string property\\n"
- + "\"},\"categories\":[\"Style\"],\"location\":{\"path\":\"n/a\",\"lines\":{\"begin\":1,\"end\":1}},\"severity\":\"info\",\"remediation_points\":50000}"
+ + "\"},\"categories\":[\"Style\"],\"location\":{\"path\":\"" + getSourceCodeFilename() + "\",\"lines\":{\"begin\":1,\"end\":1}},\"severity\":\"info\",\"remediation_points\":50000}"
+ "\u0000" + PMD.EOL;
}
@@ -74,7 +74,7 @@ public class CodeClimateRendererTest extends AbstractRendererTst {
+ "Name | Value | Description\\n" + "--- | --- | ---\\n"
+ "violationSuppressRegex | | Suppress violations with messages matching a regular expression\\n"
+ "violationSuppressXPath | | Suppress violations on nodes which match a given relative XPath expression.\\n"
- + "\"},\"categories\":[\"Style\"],\"location\":{\"path\":\"n/a\",\"lines\":{\"begin\":1,\"end\":1}},\"severity\":\"info\",\"remediation_points\":50000}"
+ + "\"},\"categories\":[\"Style\"],\"location\":{\"path\":\"" + getSourceCodeFilename() + "\",\"lines\":{\"begin\":1,\"end\":1}},\"severity\":\"info\",\"remediation_points\":50000}"
+ "\u0000" + PMD.EOL + "{\"type\":\"issue\",\"check_name\":\"Foo\",\"description\":\"blah\","
+ "\"content\":{\"body\":\"## Foo\\n\\nSince: PMD null\\n\\nPriority: Low\\n\\n"
+ "[Categories](https://github.com/codeclimate/spec/blob/master/SPEC.md#categories): Style\\n\\n"
@@ -84,7 +84,7 @@ public class CodeClimateRendererTest extends AbstractRendererTst {
+ "Name | Value | Description\\n" + "--- | --- | ---\\n"
+ "violationSuppressRegex | | Suppress violations with messages matching a regular expression\\n"
+ "violationSuppressXPath | | Suppress violations on nodes which match a given relative XPath expression.\\n"
- + "\"},\"categories\":[\"Style\"],\"location\":{\"path\":\"n/a\",\"lines\":{\"begin\":1,\"end\":1}},\"severity\":\"info\",\"remediation_points\":50000}"
+ + "\"},\"categories\":[\"Style\"],\"location\":{\"path\":\"" + getSourceCodeFilename() + "\",\"lines\":{\"begin\":1,\"end\":1}},\"severity\":\"info\",\"remediation_points\":50000}"
+ "\u0000" + PMD.EOL;
}
diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/renderers/EmacsRendererTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/renderers/EmacsRendererTest.java
index 1914f3f1c7..bf39ff9df4 100644
--- a/pmd-core/src/test/java/net/sourceforge/pmd/renderers/EmacsRendererTest.java
+++ b/pmd-core/src/test/java/net/sourceforge/pmd/renderers/EmacsRendererTest.java
@@ -6,7 +6,7 @@ package net.sourceforge.pmd.renderers;
import net.sourceforge.pmd.PMD;
-public class EmacsRendererTest extends AbstractRendererTst {
+public class EmacsRendererTest extends AbstractRendererTest {
@Override
public Renderer getRenderer() {
@@ -15,7 +15,7 @@ public class EmacsRendererTest extends AbstractRendererTst {
@Override
public String getExpected() {
- return "n/a:1: blah" + PMD.EOL;
+ return getSourceCodeFilename() + ":1: blah" + PMD.EOL;
}
@Override
@@ -25,6 +25,6 @@ public class EmacsRendererTest extends AbstractRendererTst {
@Override
public String getExpectedMultiple() {
- return "n/a:1: blah" + PMD.EOL + "n/a:1: blah" + PMD.EOL;
+ return getSourceCodeFilename() + ":1: blah" + PMD.EOL + getSourceCodeFilename() + ":1: blah" + PMD.EOL;
}
}
diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/renderers/EmptyRendererTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/renderers/EmptyRendererTest.java
index 19d5e54e8d..db6c11942e 100644
--- a/pmd-core/src/test/java/net/sourceforge/pmd/renderers/EmptyRendererTest.java
+++ b/pmd-core/src/test/java/net/sourceforge/pmd/renderers/EmptyRendererTest.java
@@ -6,7 +6,7 @@ package net.sourceforge.pmd.renderers;
import org.junit.Test;
-public class EmptyRendererTest extends AbstractRendererTst {
+public class EmptyRendererTest extends AbstractRendererTest {
@Override
public Renderer getRenderer() {
diff --git a/pmd-core/src/test/java/net/sourceforge/pmd/renderers/HTMLRendererTest.java b/pmd-core/src/test/java/net/sourceforge/pmd/renderers/HTMLRendererTest.java
index 82d0db4e91..88caa8c339 100644
--- a/pmd-core/src/test/java/net/sourceforge/pmd/renderers/HTMLRendererTest.java
+++ b/pmd-core/src/test/java/net/sourceforge/pmd/renderers/HTMLRendererTest.java
@@ -8,23 +8,27 @@ import net.sourceforge.pmd.PMD;
import net.sourceforge.pmd.Report.ConfigurationError;
import net.sourceforge.pmd.Report.ProcessingError;
-public class HTMLRendererTest extends AbstractRendererTst {
+public class HTMLRendererTest extends AbstractRendererTest {
+
+ @Override
+ protected String getSourceCodeFilename() {
+ return "someFilename
thatNeedsEscaping.ext";
+ }
+
+ private String getEscapedFilename() {
+ return "someFilename<br>thatNeedsEscaping.ext";
+ }
@Override
public Renderer getRenderer() {
return new HTMLRenderer();
}
- @Override
- protected String getSourceCodeFilename() {
- return "filename/that/needs escaping.ext";
- }
-
@Override
public String getExpected() {
return getHeader()
+ "