From 020ae2c7baaed85920336fe67db3b9cccfbfe3d9 Mon Sep 17 00:00:00 2001 From: Mike Smithson Date: Fri, 14 Feb 2020 18:59:12 -0500 Subject: [PATCH] Revisit PluginXmlParserTests See gh-20190 --- .../build/mavenplugin/PluginXmlParser.java | 10 +++---- .../mavenplugin/PluginXmlParserTests.java | 27 +++++++++++++++---- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/buildSrc/src/main/java/org/springframework/boot/build/mavenplugin/PluginXmlParser.java b/buildSrc/src/main/java/org/springframework/boot/build/mavenplugin/PluginXmlParser.java index 688d77b89d..fddd516374 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/mavenplugin/PluginXmlParser.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/mavenplugin/PluginXmlParser.java @@ -36,6 +36,7 @@ import org.w3c.dom.NodeList; * A parser for a Maven plugin's {@code plugin.xml} file. * * @author Andy Wilkinson + * @author Mike Smithson */ class PluginXmlParser { @@ -98,21 +99,20 @@ class PluginXmlParser { private Parameter parseParameter(Node parameterNode, Map defaultValues, Map userProperties) throws XPathExpressionException { - Parameter parameter = new Parameter(textAt("name", parameterNode), textAt("type", parameterNode), + return new Parameter(textAt("name", parameterNode), textAt("type", parameterNode), booleanAt("required", parameterNode), booleanAt("editable", parameterNode), format(textAt("description", parameterNode)), defaultValues.get(textAt("name", parameterNode)), userProperties.get(textAt("name", parameterNode)), textAt("since", parameterNode)); - return parameter; } private boolean booleanAt(String path, Node node) throws XPathExpressionException { - return Boolean.valueOf(textAt(path, node)); + return Boolean.parseBoolean(textAt(path, node)); } private String format(String input) { return input.replace("", "`").replace("", "`").replace("<", "<").replace(">", ">") - .replace("
", " ").replace("\n", " ").replace(""", "\"").replaceAll("\\{@code (.*?)\\}", "`$1`") - .replaceAll("\\{@link (.*?)\\}", "`$1`").replaceAll("\\{@literal (.*?)\\}", "`$1`") + .replace("
", " ").replace("\n", " ").replace(""", "\"").replaceAll("\\{@code (.*?)}", "`$1`") + .replaceAll("\\{@link (.*?)}", "`$1`").replaceAll("\\{@literal (.*?)}", "`$1`") .replaceAll("(.*?)", "\\$1[\\$2]"); } diff --git a/buildSrc/src/test/java/org/springframework/boot/build/mavenplugin/PluginXmlParserTests.java b/buildSrc/src/test/java/org/springframework/boot/build/mavenplugin/PluginXmlParserTests.java index 0cbdd408ce..9e70453a27 100644 --- a/buildSrc/src/test/java/org/springframework/boot/build/mavenplugin/PluginXmlParserTests.java +++ b/buildSrc/src/test/java/org/springframework/boot/build/mavenplugin/PluginXmlParserTests.java @@ -16,25 +16,42 @@ package org.springframework.boot.build.mavenplugin; -import java.io.File; - import org.junit.jupiter.api.Test; - import org.springframework.boot.build.mavenplugin.PluginXmlParser.Plugin; +import java.io.File; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; + /** * Tests for {@link PluginXmlParser}. * * @author Andy Wilkinson + * @author Mike Smithson */ public class PluginXmlParserTests { private final PluginXmlParser parser = new PluginXmlParser(); @Test - void dunno() { + void parsingAValidPluginXMLFileReturnsTheGAVForThePlugin() { Plugin plugin = this.parser.parse(new File("src/test/resources/plugin.xml")); - System.out.println(plugin); + assertThat(plugin.getGroupId()).isEqualTo("org.springframework.boot"); + assertThat(plugin.getArtifactId()).isEqualTo("spring-boot-maven-plugin"); + assertThat(plugin.getVersion()).isEqualTo("2.2.0.GRADLE-SNAPSHOT"); + assertThat(plugin.getGoalPrefix()).isEqualTo("spring-boot"); + assertThat(plugin.getMojos().stream().map(PluginXmlParser.Mojo::getGoal).collect(Collectors.toList())) + .isEqualTo(Arrays.asList("build-info", "help", "repackage", "run", "start", "stop")); + } + + @Test + void aNonExistentPluginFileThrowsARuntimeException() { + assertThrows(RuntimeException.class, () -> + this.parser.parse(new File("src/test/resources/nonexistent.xml"))); } }