Merge pull request #20190 from mikesmithson

* pr/20190:
  Polish "Revisit PluginXmlParserTests"
  Revisit PluginXmlParserTests

Closes gh-20190
This commit is contained in:
Stephane Nicoll 2020-02-17 09:37:08 +01:00
commit 5cb24c2584
2 changed files with 26 additions and 8 deletions

View File

@ -36,6 +36,7 @@ import org.w3c.dom.NodeList;
* A parser for a Maven plugin's {@code plugin.xml} file. * A parser for a Maven plugin's {@code plugin.xml} file.
* *
* @author Andy Wilkinson * @author Andy Wilkinson
* @author Mike Smithson
*/ */
class PluginXmlParser { class PluginXmlParser {
@ -98,21 +99,20 @@ class PluginXmlParser {
private Parameter parseParameter(Node parameterNode, Map<String, String> defaultValues, private Parameter parseParameter(Node parameterNode, Map<String, String> defaultValues,
Map<String, String> userProperties) throws XPathExpressionException { Map<String, String> 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), booleanAt("required", parameterNode), booleanAt("editable", parameterNode),
format(textAt("description", parameterNode)), defaultValues.get(textAt("name", parameterNode)), format(textAt("description", parameterNode)), defaultValues.get(textAt("name", parameterNode)),
userProperties.get(textAt("name", parameterNode)), textAt("since", parameterNode)); userProperties.get(textAt("name", parameterNode)), textAt("since", parameterNode));
return parameter;
} }
private boolean booleanAt(String path, Node node) throws XPathExpressionException { 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) { private String format(String input) {
return input.replace("<code>", "`").replace("</code>", "`").replace("&lt;", "<").replace("&gt;", ">") return input.replace("<code>", "`").replace("</code>", "`").replace("&lt;", "<").replace("&gt;", ">")
.replace("<br>", " ").replace("\n", " ").replace("&quot;", "\"").replaceAll("\\{@code (.*?)\\}", "`$1`") .replace("<br>", " ").replace("\n", " ").replace("&quot;", "\"").replaceAll("\\{@code (.*?)}", "`$1`")
.replaceAll("\\{@link (.*?)\\}", "`$1`").replaceAll("\\{@literal (.*?)\\}", "`$1`") .replaceAll("\\{@link (.*?)}", "`$1`").replaceAll("\\{@literal (.*?)}", "`$1`")
.replaceAll("<a href=.\"(.*?)\".>(.*?)</a>", "\\$1[\\$2]"); .replaceAll("<a href=.\"(.*?)\".>(.*?)</a>", "\\$1[\\$2]");
} }

View File

@ -1,5 +1,5 @@
/* /*
* Copyright 2019-2020 the original author or authors. * Copyright 2012-2020 the original author or authors.
* *
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * you may not use this file except in compliance with the License.
@ -17,24 +17,42 @@
package org.springframework.boot.build.mavenplugin; package org.springframework.boot.build.mavenplugin;
import java.io.File; import java.io.File;
import java.io.FileNotFoundException;
import java.util.Arrays;
import java.util.stream.Collectors;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.springframework.boot.build.mavenplugin.PluginXmlParser.Plugin; import org.springframework.boot.build.mavenplugin.PluginXmlParser.Plugin;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
/** /**
* Tests for {@link PluginXmlParser}. * Tests for {@link PluginXmlParser}.
* *
* @author Andy Wilkinson * @author Andy Wilkinson
* @author Mike Smithson
*/ */
public class PluginXmlParserTests { public class PluginXmlParserTests {
private final PluginXmlParser parser = new PluginXmlParser(); private final PluginXmlParser parser = new PluginXmlParser();
@Test @Test
void dunno() { void parseExistingDescriptorReturnPluginDescriptor() {
Plugin plugin = this.parser.parse(new File("src/test/resources/plugin.xml")); 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.<String>asList("build-info", "help", "repackage", "run", "start", "stop"));
}
@Test
void parseNonExistingFileThrowException() {
assertThatThrownBy(() -> this.parser.parse(new File("src/test/resources/nonexistent.xml")))
.isInstanceOf(RuntimeException.class).hasCauseInstanceOf(FileNotFoundException.class);
} }
} }