Remove assumptions from BootInfo and move them to the DSL extension
parent
5708eaf41b
commit
188c9e0f42
@ -0,0 +1,128 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2017 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.gradle.buildinfo;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import org.gradle.testkit.runner.TaskOutcome;
|
||||||
|
import org.junit.Rule;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import org.springframework.boot.gradle.testkit.GradleBuild;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Integration tests for {@link BuildInfo} created using the
|
||||||
|
* {@link org.springframework.boot.gradle.SpringBootExtension DSL}.
|
||||||
|
*
|
||||||
|
* @author Andy Wilkinson
|
||||||
|
*/
|
||||||
|
public class BuildInfoDslIntegrationTests {
|
||||||
|
|
||||||
|
@Rule
|
||||||
|
public final GradleBuild gradleBuild = new GradleBuild();
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void basicJar() throws IOException {
|
||||||
|
assertThat(this.gradleBuild.build("bootBuildInfo", "--stacktrace")
|
||||||
|
.task(":bootBuildInfo").getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
|
||||||
|
Properties properties = buildInfoProperties();
|
||||||
|
assertThat(properties).containsEntry("build.name",
|
||||||
|
this.gradleBuild.getProjectDir().getName());
|
||||||
|
assertThat(properties).containsEntry("build.artifact",
|
||||||
|
this.gradleBuild.getProjectDir().getName());
|
||||||
|
assertThat(properties).containsEntry("build.group", "com.example");
|
||||||
|
assertThat(properties).containsEntry("build.version", "1.0");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void jarWithCustomName() throws IOException {
|
||||||
|
assertThat(this.gradleBuild.build("bootBuildInfo", "--stacktrace")
|
||||||
|
.task(":bootBuildInfo").getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
|
||||||
|
Properties properties = buildInfoProperties();
|
||||||
|
assertThat(properties).containsEntry("build.name",
|
||||||
|
this.gradleBuild.getProjectDir().getName());
|
||||||
|
assertThat(properties).containsEntry("build.artifact", "foo");
|
||||||
|
assertThat(properties).containsEntry("build.group", "com.example");
|
||||||
|
assertThat(properties).containsEntry("build.version", "1.0");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void basicWar() throws IOException {
|
||||||
|
assertThat(this.gradleBuild.build("bootBuildInfo", "--stacktrace")
|
||||||
|
.task(":bootBuildInfo").getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
|
||||||
|
Properties properties = buildInfoProperties();
|
||||||
|
assertThat(properties).containsEntry("build.name",
|
||||||
|
this.gradleBuild.getProjectDir().getName());
|
||||||
|
assertThat(properties).containsEntry("build.artifact",
|
||||||
|
this.gradleBuild.getProjectDir().getName());
|
||||||
|
assertThat(properties).containsEntry("build.group", "com.example");
|
||||||
|
assertThat(properties).containsEntry("build.version", "1.0");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void warWithCustomName() throws IOException {
|
||||||
|
assertThat(this.gradleBuild.build("bootBuildInfo", "--stacktrace")
|
||||||
|
.task(":bootBuildInfo").getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
|
||||||
|
Properties properties = buildInfoProperties();
|
||||||
|
assertThat(properties).containsEntry("build.name",
|
||||||
|
this.gradleBuild.getProjectDir().getName());
|
||||||
|
assertThat(properties).containsEntry("build.artifact", "foo");
|
||||||
|
assertThat(properties).containsEntry("build.group", "com.example");
|
||||||
|
assertThat(properties).containsEntry("build.version", "1.0");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void additionalProperties() throws IOException {
|
||||||
|
assertThat(this.gradleBuild.build("bootBuildInfo", "--stacktrace")
|
||||||
|
.task(":bootBuildInfo").getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
|
||||||
|
Properties properties = buildInfoProperties();
|
||||||
|
assertThat(properties).containsEntry("build.name",
|
||||||
|
this.gradleBuild.getProjectDir().getName());
|
||||||
|
assertThat(properties).containsEntry("build.artifact",
|
||||||
|
this.gradleBuild.getProjectDir().getName());
|
||||||
|
assertThat(properties).containsEntry("build.group", "com.example");
|
||||||
|
assertThat(properties).containsEntry("build.version", "1.0");
|
||||||
|
assertThat(properties).containsEntry("build.a", "alpha");
|
||||||
|
assertThat(properties).containsEntry("build.b", "bravo");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void classesDependency() throws IOException {
|
||||||
|
assertThat(this.gradleBuild.build("classes", "--stacktrace")
|
||||||
|
.task(":bootBuildInfo").getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Properties buildInfoProperties() {
|
||||||
|
File file = new File(this.gradleBuild.getProjectDir(),
|
||||||
|
"build/resources/main/META-INF/build-info.properties");
|
||||||
|
assertThat(file).isFile();
|
||||||
|
Properties properties = new Properties();
|
||||||
|
try (FileReader reader = new FileReader(file)) {
|
||||||
|
properties.load(reader);
|
||||||
|
return properties;
|
||||||
|
}
|
||||||
|
catch (IOException ex) {
|
||||||
|
throw new RuntimeException(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,88 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-2017 the original author or authors.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.springframework.boot.gradle.buildinfo;
|
||||||
|
|
||||||
|
import org.gradle.testkit.runner.TaskOutcome;
|
||||||
|
import org.junit.Rule;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import org.springframework.boot.gradle.testkit.GradleBuild;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Integration tests for {@link BuildInfo}.
|
||||||
|
*
|
||||||
|
* @author Andy Wilkinson
|
||||||
|
*/
|
||||||
|
public class BuildInfoIntegrationTests {
|
||||||
|
|
||||||
|
@Rule
|
||||||
|
public final GradleBuild gradleBuild = new GradleBuild();
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void basicExecution() {
|
||||||
|
assertThat(this.gradleBuild.build("buildInfo").task(":buildInfo").getOutcome())
|
||||||
|
.isEqualTo(TaskOutcome.SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void upToDateWhenExecutedTwice() {
|
||||||
|
assertThat(this.gradleBuild.build("buildInfo").task(":buildInfo").getOutcome())
|
||||||
|
.isEqualTo(TaskOutcome.SUCCESS);
|
||||||
|
assertThat(this.gradleBuild.build("buildInfo").task(":buildInfo").getOutcome())
|
||||||
|
.isEqualTo(TaskOutcome.UP_TO_DATE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void notUpToDateWhenDestinationDirChanges() {
|
||||||
|
notUpToDateWithChangeToProperty("buildInfoDestinationDir");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void notUpToDateWhenProjectArtifactChanges() {
|
||||||
|
notUpToDateWithChangeToProperty("buildInfoProjectArtifact");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void notUpToDateWhenProjectGroupChanges() {
|
||||||
|
notUpToDateWithChangeToProperty("buildInfoProjectGroup");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void notUpToDateWhenProjectVersionChanges() {
|
||||||
|
notUpToDateWithChangeToProperty("buildInfoProjectVersion");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void notUpToDateWhenProjectNameChanges() {
|
||||||
|
notUpToDateWithChangeToProperty("buildInfoProjectName");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void notUpToDateWhenAdditionalPropertyChanges() {
|
||||||
|
notUpToDateWithChangeToProperty("buildInfoAdditionalProperty");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void notUpToDateWithChangeToProperty(String name) {
|
||||||
|
assertThat(this.gradleBuild.build("buildInfo").task(":buildInfo").getOutcome())
|
||||||
|
.isEqualTo(TaskOutcome.SUCCESS);
|
||||||
|
assertThat(this.gradleBuild.build("buildInfo", "-P" + name + "=changed")
|
||||||
|
.task(":buildInfo").getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
buildscript {
|
||||||
|
dependencies {
|
||||||
|
classpath files(pluginClasspath.split(','))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
apply plugin: 'org.springframework.boot'
|
||||||
|
apply plugin: 'java'
|
||||||
|
|
||||||
|
group = 'com.example'
|
||||||
|
version = '1.0'
|
||||||
|
|
||||||
|
springBoot {
|
||||||
|
buildInfo {
|
||||||
|
additionalProperties 'a': 'alpha', 'b': 'bravo'
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
buildscript {
|
||||||
|
dependencies {
|
||||||
|
classpath files(pluginClasspath.split(','))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
apply plugin: 'org.springframework.boot'
|
||||||
|
apply plugin: 'java'
|
||||||
|
|
||||||
|
group = 'com.example'
|
||||||
|
version = '1.0'
|
||||||
|
|
||||||
|
springBoot {
|
||||||
|
buildInfo()
|
||||||
|
}
|
@ -0,0 +1,15 @@
|
|||||||
|
buildscript {
|
||||||
|
dependencies {
|
||||||
|
classpath files(pluginClasspath.split(','))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
apply plugin: 'org.springframework.boot'
|
||||||
|
apply plugin: 'war'
|
||||||
|
|
||||||
|
group = 'com.example'
|
||||||
|
version = '1.0'
|
||||||
|
|
||||||
|
springBoot {
|
||||||
|
buildInfo()
|
||||||
|
}
|
@ -0,0 +1,12 @@
|
|||||||
|
buildscript {
|
||||||
|
dependencies {
|
||||||
|
classpath files(pluginClasspath.split(','))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
apply plugin: 'org.springframework.boot'
|
||||||
|
apply plugin: 'java'
|
||||||
|
|
||||||
|
springBoot {
|
||||||
|
buildInfo()
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
buildscript {
|
||||||
|
dependencies {
|
||||||
|
classpath files(pluginClasspath.split(','))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
apply plugin: 'org.springframework.boot'
|
||||||
|
apply plugin: 'java'
|
||||||
|
|
||||||
|
group = 'com.example'
|
||||||
|
version = '1.0'
|
||||||
|
|
||||||
|
bootJar {
|
||||||
|
baseName = 'foo'
|
||||||
|
}
|
||||||
|
|
||||||
|
springBoot {
|
||||||
|
buildInfo()
|
||||||
|
}
|
@ -0,0 +1,19 @@
|
|||||||
|
buildscript {
|
||||||
|
dependencies {
|
||||||
|
classpath files(pluginClasspath.split(','))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
apply plugin: 'org.springframework.boot'
|
||||||
|
apply plugin: 'war'
|
||||||
|
|
||||||
|
group = 'com.example'
|
||||||
|
version = '1.0'
|
||||||
|
|
||||||
|
bootWar {
|
||||||
|
baseName = 'foo'
|
||||||
|
}
|
||||||
|
|
||||||
|
springBoot {
|
||||||
|
buildInfo()
|
||||||
|
}
|
@ -0,0 +1,18 @@
|
|||||||
|
buildscript {
|
||||||
|
dependencies {
|
||||||
|
classpath files(pluginClasspath.split(','))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
def property(String name, Object defaultValue) {
|
||||||
|
project.hasProperty(name) ? project.getProperty(name) : defaultValue
|
||||||
|
}
|
||||||
|
|
||||||
|
task buildInfo(type: org.springframework.boot.gradle.buildinfo.BuildInfo) {
|
||||||
|
destinationDir file(property('buildInfoDestinationDir', project.buildDir))
|
||||||
|
projectArtifact property('buildInfoProjectArtifact', 'foo')
|
||||||
|
projectVersion property('buildInfoProjectVersion', '1.0')
|
||||||
|
projectGroup property('buildInfoProjectGroup', 'foo')
|
||||||
|
projectName property('buildInfoProjectName', 'foo')
|
||||||
|
additionalProperties 'additional': property('buildInfoAdditionalProperty', 'foo')
|
||||||
|
}
|
Loading…
Reference in New Issue