forked from phoedos/pmd
[test-schema] Fix trim indentation for test codes
Co-authored-by: Juan Martín Sotuyo Dodero <juansotuyo@gmail.com>
This commit is contained in:
@ -98,7 +98,7 @@ class BaseTestParserImpl {
|
|||||||
if (description == null) {
|
if (description == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
descriptor.setDescription(description);
|
descriptor.setDescription(description.trim());
|
||||||
}
|
}
|
||||||
|
|
||||||
parseBoolAttribute(testCode, "reinitializeRule", true, err, "Attribute 'reinitializeRule' is deprecated and ignored, assumed true");
|
parseBoolAttribute(testCode, "reinitializeRule", true, err, "Attribute 'reinitializeRule' is deprecated and ignored, assumed true");
|
||||||
@ -206,11 +206,9 @@ class BaseTestParserImpl {
|
|||||||
}
|
}
|
||||||
usedFragments.add(id.getValue());
|
usedFragments.add(id.getValue());
|
||||||
code = parseTextNodeNoTrim(fragment);
|
code = parseTextNodeNoTrim(fragment);
|
||||||
// first trim empty lines at beginning/end
|
|
||||||
code = code.trim();
|
|
||||||
// then trim any indentation
|
|
||||||
code = StringUtil.trimIndent(Chars.wrap(code)).toString();
|
|
||||||
}
|
}
|
||||||
|
// first trim empty lines at beginning/end, then trim any indentation
|
||||||
|
code = StringUtil.trimIndent(Chars.wrap(code).trimBlankLines()).toString();
|
||||||
return code;
|
return code;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -296,7 +294,7 @@ class BaseTestParserImpl {
|
|||||||
if (node == null) {
|
if (node == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return parseTextNode(node);
|
return parseTextNodeNoTrim(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Element getSingleChild(Element parentElm, String nodeName, boolean required, PmdXmlReporter err) {
|
private Element getSingleChild(Element parentElm, String nodeName, boolean required, PmdXmlReporter err) {
|
||||||
|
@ -6,6 +6,7 @@ package net.sourceforge.pmd.test.schema;
|
|||||||
|
|
||||||
import static org.hamcrest.MatcherAssert.assertThat;
|
import static org.hamcrest.MatcherAssert.assertThat;
|
||||||
import static org.hamcrest.Matchers.containsString;
|
import static org.hamcrest.Matchers.containsString;
|
||||||
|
import static org.hamcrest.Matchers.equalTo;
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
import static org.junit.jupiter.api.Assertions.assertThrows;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
|
|
||||||
@ -39,6 +40,7 @@ class TestSchemaParserTest {
|
|||||||
+ " <expected-problems>4</expected-problems>\n"
|
+ " <expected-problems>4</expected-problems>\n"
|
||||||
+ " <code><![CDATA[\n"
|
+ " <code><![CDATA[\n"
|
||||||
+ " public class Foo {\n"
|
+ " public class Foo {\n"
|
||||||
|
+ " private int i;\n"
|
||||||
+ " }\n"
|
+ " }\n"
|
||||||
+ " ]]></code>\n"
|
+ " ]]></code>\n"
|
||||||
+ " </test-code>\n"
|
+ " </test-code>\n"
|
||||||
@ -55,6 +57,34 @@ class TestSchemaParserTest {
|
|||||||
RuleTestCollection parsed = parseFile(file);
|
RuleTestCollection parsed = parseFile(file);
|
||||||
|
|
||||||
assertEquals(2, parsed.getTests().size());
|
assertEquals(2, parsed.getTests().size());
|
||||||
|
assertThat("Indentation should be removed",
|
||||||
|
parsed.getTests().get(0).getCode(), equalTo("public class Foo {\n private int i;\n}"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testSharedCodeFragment() throws IOException {
|
||||||
|
String file = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
|
||||||
|
+ "<test-data\n"
|
||||||
|
+ " xmlns=\"http://pmd.sourceforge.net/rule-tests\"\n"
|
||||||
|
+ " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
|
||||||
|
+ " xsi:schemaLocation=\"http://pmd.sourceforge.net/rule-tests net/sourceforge/pmd/test/schema/rule-tests_1_0_0.xsd\">\n"
|
||||||
|
+ " <code-fragment id=\"code1\"><![CDATA[\n"
|
||||||
|
+ " public class Foo {\n"
|
||||||
|
+ " private int i;\n"
|
||||||
|
+ " }\n"
|
||||||
|
+ " ]]></code-fragment>\n"
|
||||||
|
+ " <test-code>\n"
|
||||||
|
+ " <description>equality operators with Double.NaN</description>\n"
|
||||||
|
+ " <expected-problems>4</expected-problems>\n"
|
||||||
|
+ " <code-ref id=\"code1\" />\n"
|
||||||
|
+ " </test-code>\n"
|
||||||
|
+ "</test-data>\n";
|
||||||
|
|
||||||
|
RuleTestCollection parsed = parseFile(file);
|
||||||
|
|
||||||
|
assertEquals(1, parsed.getTests().size());
|
||||||
|
assertThat("Indentation should be removed",
|
||||||
|
parsed.getTests().get(0).getCode(), equalTo("public class Foo {\n private int i;\n}"));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Reference in New Issue
Block a user