Merge pull request #20190 from mikesmithson
* pr/20190: Polish "Revisit PluginXmlParserTests" Revisit PluginXmlParserTests Closes gh-20190
This commit is contained in:
commit
5cb24c2584
|
@ -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("<", "<").replace(">", ">")
|
return input.replace("<code>", "`").replace("</code>", "`").replace("<", "<").replace(">", ">")
|
||||||
.replace("<br>", " ").replace("\n", " ").replace(""", "\"").replaceAll("\\{@code (.*?)\\}", "`$1`")
|
.replace("<br>", " ").replace("\n", " ").replace(""", "\"").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]");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue