Extract project generation test utility to dedicated module

This commit extracts various test utilities to a dedicated
initializr-generator-test module for easier consumption. The previous
test-jar are no longer published and a dependency to this new module
should be equivalent.

This commit also cleans various resources that were located in the wrong
place. In particular initializr-generator does not know anything about
metadata anymore.

Closes gh-988
This commit is contained in:
Stephane Nicoll
2019-08-20 15:24:13 +02:00
parent dbd1198996
commit 1082ac7bf7
83 changed files with 512 additions and 204 deletions

View File

@@ -80,14 +80,7 @@
</dependency>
<dependency>
<groupId>io.spring.initializr</groupId>
<artifactId>initializr-generator</artifactId>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.spring.initializr</groupId>
<artifactId>initializr-generator-spring</artifactId>
<type>test-jar</type>
<artifactId>initializr-generator-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>

View File

@@ -18,7 +18,7 @@ package io.spring.initializr.actuate.info;
import java.util.Map;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.metadata.BillOfMaterials;
import io.spring.initializr.metadata.InitializrMetadata;
import io.spring.initializr.metadata.SimpleInitializrMetadataProvider;

View File

@@ -18,7 +18,7 @@ package io.spring.initializr.actuate.info;
import java.util.Map;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.metadata.BillOfMaterials;
import io.spring.initializr.metadata.Dependency;
import io.spring.initializr.metadata.InitializrMetadata;

View File

@@ -24,7 +24,7 @@ import java.util.Collections;
import java.util.UUID;
import io.spring.initializr.actuate.stat.StatsProperties.Elastic;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.metadata.InitializrMetadata;
import io.spring.initializr.web.project.ProjectGeneratedEvent;
import io.spring.initializr.web.project.ProjectRequest;

View File

@@ -18,7 +18,7 @@ package io.spring.initializr.actuate.stat;
import java.util.Arrays;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.metadata.InitializrMetadata;
import io.spring.initializr.web.project.ProjectFailedEvent;
import io.spring.initializr.web.project.ProjectGeneratedEvent;

View File

@@ -28,12 +28,6 @@
<artifactId>initializr-generator</artifactId>
<version>${revision}</version>
</dependency>
<dependency>
<groupId>io.spring.initializr</groupId>
<artifactId>initializr-generator</artifactId>
<version>${revision}</version>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>io.spring.initializr</groupId>
<artifactId>initializr-generator-spring</artifactId>
@@ -41,9 +35,8 @@
</dependency>
<dependency>
<groupId>io.spring.initializr</groupId>
<artifactId>initializr-generator-spring</artifactId>
<artifactId>initializr-generator-test</artifactId>
<version>${revision}</version>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>io.spring.initializr</groupId>

View File

@@ -28,6 +28,11 @@
<artifactId>initializr-generator-spring</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>io.spring.initializr</groupId>
<artifactId>initializr-generator-test</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>io.spring.initializr</groupId>
<artifactId>initializr-metadata</artifactId>
@@ -54,6 +59,11 @@
<artifactId>javax.servlet-api</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>

View File

@@ -32,9 +32,8 @@
<dependency>
<groupId>io.spring.initializr</groupId>
<artifactId>initializr-generator</artifactId>
<artifactId>initializr-generator-test</artifactId>
<scope>test</scope>
<type>test-jar</type>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
@@ -63,20 +62,4 @@
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@@ -27,8 +27,8 @@ import io.spring.initializr.generator.language.Language;
import io.spring.initializr.generator.project.ProjectDescription;
import io.spring.initializr.generator.project.ProjectGenerationContext;
import io.spring.initializr.generator.project.ResolvedProjectDescription;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.spring.test.ProjectAssert;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.project.ProjectAssert;
import io.spring.initializr.generator.test.project.ProjectGeneratorTester;
import io.spring.initializr.generator.test.project.ProjectStructure;
import io.spring.initializr.generator.version.Version;

View File

@@ -24,7 +24,7 @@ import io.spring.initializr.generator.language.java.JavaLanguage;
import io.spring.initializr.generator.project.ProjectDescription;
import io.spring.initializr.generator.project.ProjectGenerationConfiguration;
import io.spring.initializr.generator.project.ProjectGenerator;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.project.ProjectGeneratorTester;
import io.spring.initializr.generator.version.Version;
import io.spring.initializr.metadata.InitializrMetadata;

View File

@@ -27,8 +27,8 @@ import io.spring.initializr.generator.language.java.JavaLanguage;
import io.spring.initializr.generator.language.kotlin.KotlinLanguage;
import io.spring.initializr.generator.packaging.Packaging;
import io.spring.initializr.generator.spring.AbstractComplianceTests;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.spring.test.ProjectAssert;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.project.ProjectAssert;
import io.spring.initializr.generator.version.Version;
import io.spring.initializr.generator.version.VersionProperty;
import io.spring.initializr.metadata.BillOfMaterials;

View File

@@ -21,7 +21,7 @@ import java.util.Arrays;
import io.spring.initializr.generator.buildsystem.Build;
import io.spring.initializr.generator.buildsystem.DependencyScope;
import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.version.Version;
import io.spring.initializr.metadata.Dependency;
import io.spring.initializr.metadata.InitializrMetadata;

View File

@@ -18,7 +18,7 @@ package io.spring.initializr.generator.spring.build;
import io.spring.initializr.generator.buildsystem.Build;
import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.version.Version;
import io.spring.initializr.metadata.Dependency;
import io.spring.initializr.metadata.InitializrMetadata;

View File

@@ -19,7 +19,7 @@ package io.spring.initializr.generator.spring.build;
import io.spring.initializr.generator.buildsystem.Build;
import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
import io.spring.initializr.generator.project.ProjectDescription;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.version.Version;
import io.spring.initializr.metadata.BillOfMaterials;
import io.spring.initializr.metadata.Dependency;

View File

@@ -20,7 +20,7 @@ import java.util.Collections;
import io.spring.initializr.generator.buildsystem.Build;
import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.version.Version;
import io.spring.initializr.metadata.Dependency;
import io.spring.initializr.metadata.InitializrMetadata;

View File

@@ -31,7 +31,7 @@ import io.spring.initializr.generator.language.java.JavaLanguage;
import io.spring.initializr.generator.packaging.war.WarPackaging;
import io.spring.initializr.generator.project.ProjectDescription;
import io.spring.initializr.generator.spring.build.BuildProjectGenerationConfiguration;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.project.ProjectAssetTester;
import io.spring.initializr.generator.test.project.ProjectStructure;
import io.spring.initializr.generator.version.Version;

View File

@@ -32,7 +32,7 @@ import io.spring.initializr.generator.language.java.JavaLanguage;
import io.spring.initializr.generator.packaging.war.WarPackaging;
import io.spring.initializr.generator.project.ProjectDescription;
import io.spring.initializr.generator.spring.build.BuildProjectGenerationConfiguration;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.project.ProjectAssetTester;
import io.spring.initializr.generator.test.project.ProjectStructure;
import io.spring.initializr.generator.version.Version;

View File

@@ -22,7 +22,7 @@ import io.spring.initializr.generator.buildsystem.maven.MavenParent;
import io.spring.initializr.generator.language.java.JavaLanguage;
import io.spring.initializr.generator.project.ProjectDescription;
import io.spring.initializr.generator.project.ResolvedProjectDescription;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.version.Version;
import io.spring.initializr.generator.version.VersionProperty;
import io.spring.initializr.metadata.InitializrMetadata;

View File

@@ -26,7 +26,7 @@ import io.spring.initializr.generator.language.java.JavaLanguage;
import io.spring.initializr.generator.packaging.war.WarPackaging;
import io.spring.initializr.generator.project.ProjectDescription;
import io.spring.initializr.generator.spring.build.BuildProjectGenerationConfiguration;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.project.ProjectAssetTester;
import io.spring.initializr.generator.test.project.ProjectStructure;
import io.spring.initializr.generator.version.Version;

View File

@@ -26,7 +26,7 @@ import io.spring.initializr.generator.language.java.JavaLanguage;
import io.spring.initializr.generator.language.kotlin.KotlinLanguage;
import io.spring.initializr.generator.packaging.Packaging;
import io.spring.initializr.generator.spring.AbstractComplianceTests;
import io.spring.initializr.generator.spring.test.ProjectAssert;
import io.spring.initializr.generator.test.project.ProjectAssert;
import io.spring.initializr.generator.version.Version;
import io.spring.initializr.metadata.support.MetadataBuildItemMapper;
import org.junit.jupiter.params.ParameterizedTest;

View File

@@ -22,7 +22,7 @@ import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
import io.spring.initializr.generator.language.java.JavaLanguage;
import io.spring.initializr.generator.language.kotlin.KotlinLanguage;
import io.spring.initializr.generator.project.ProjectDescription;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.version.Version;
import io.spring.initializr.metadata.Dependency;
import io.spring.initializr.metadata.InitializrMetadata;

View File

@@ -21,7 +21,7 @@ import java.util.Collections;
import io.spring.initializr.generator.buildsystem.gradle.GradleBuild;
import io.spring.initializr.generator.buildsystem.gradle.GradlePlugin;
import io.spring.initializr.generator.buildsystem.gradle.StandardGradlePlugin;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.version.Version;
import io.spring.initializr.metadata.Dependency;
import io.spring.initializr.metadata.InitializrMetadata;

View File

@@ -20,7 +20,7 @@ import java.util.Collections;
import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
import io.spring.initializr.generator.buildsystem.maven.MavenPlugin;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.version.Version;
import io.spring.initializr.metadata.Dependency;
import io.spring.initializr.metadata.InitializrMetadata;

View File

@@ -28,7 +28,7 @@ import io.spring.initializr.generator.project.ProjectDescription;
import io.spring.initializr.generator.spring.build.BuildProjectGenerationConfiguration;
import io.spring.initializr.generator.spring.build.maven.MavenProjectGenerationConfiguration;
import io.spring.initializr.generator.spring.code.SourceCodeProjectGenerationConfiguration;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.project.ProjectAssetTester;
import io.spring.initializr.generator.test.project.ProjectStructure;
import io.spring.initializr.generator.version.Version;

View File

@@ -22,7 +22,7 @@ import java.util.Collections;
import io.spring.initializr.generator.buildsystem.Build;
import io.spring.initializr.generator.buildsystem.maven.MavenBuild;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.version.Version;
import io.spring.initializr.metadata.Dependency;
import io.spring.initializr.metadata.InitializrMetadata;

View File

@@ -21,7 +21,7 @@ import java.nio.file.Path;
import io.spring.initializr.generator.io.template.MustacheTemplateRenderer;
import io.spring.initializr.generator.project.ProjectDescription;
import io.spring.initializr.generator.spring.scm.git.GitIgnoreCustomizer;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.project.ProjectAssetTester;
import io.spring.initializr.generator.test.project.ProjectStructure;
import io.spring.initializr.metadata.Dependency;

View File

@@ -22,7 +22,7 @@ import io.spring.initializr.generator.io.template.MustacheTemplateRenderer;
import io.spring.initializr.generator.io.text.BulletedSection;
import io.spring.initializr.generator.project.ProjectDescription;
import io.spring.initializr.generator.project.ResolvedProjectDescription;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.metadata.Dependency;
import io.spring.initializr.metadata.InitializrMetadata;
import io.spring.initializr.metadata.Link;

View File

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>io.spring.initializr</groupId>
<artifactId>initializr-parent</artifactId>
<version>${revision}</version>
<relativePath>../initializr-parent</relativePath>
</parent>
<artifactId>initializr-generator-test</artifactId>
<name>Spring Initializr :: Generator (Test Infrastructure)</name>
<properties>
<main.basedir>${basedir}/..</main.basedir>
</properties>
<dependencies>
<dependency>
<groupId>io.spring.initializr</groupId>
<artifactId>initializr-generator</artifactId>
</dependency>
<dependency>
<groupId>io.spring.initializr</groupId>
<artifactId>initializr-metadata</artifactId>
</dependency>
<dependency>
<groupId>com.samskivert</groupId>
<artifactId>jmustache</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package io.spring.initializr.generator.spring.test;
package io.spring.initializr.generator.test;
import java.net.MalformedURLException;
import java.net.URL;

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package io.spring.initializr.generator.spring.test.build;
package io.spring.initializr.generator.test.buildsystem.gradle;
import org.assertj.core.api.AbstractStringAssert;

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package io.spring.initializr.generator.spring.test.build;
package io.spring.initializr.generator.test.buildsystem.gradle;
import static org.assertj.core.api.Assertions.assertThat;

View File

@@ -0,0 +1,20 @@
/*
* Copyright 2012-2019 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
*
* https://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.
*/
/**
* Support for testing a Gradle build.
*/
package io.spring.initializr.generator.test.buildsystem.gradle;

View File

@@ -14,12 +14,12 @@
* limitations under the License.
*/
package io.spring.initializr.generator.spring.test.build;
package io.spring.initializr.generator.test.buildsystem.maven;
import java.net.MalformedURLException;
import java.net.URL;
import io.spring.initializr.generator.test.assertj.NodeAssert;
import io.spring.initializr.generator.test.io.NodeAssert;
import io.spring.initializr.metadata.BillOfMaterials;
import io.spring.initializr.metadata.Dependency;
import io.spring.initializr.metadata.Repository;

View File

@@ -0,0 +1,20 @@
/*
* Copyright 2012-2019 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
*
* https://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.
*/
/**
* Support for testing a Maven build.
*/
package io.spring.initializr.generator.test.buildsystem.maven;

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package io.spring.initializr.generator.test.assertj;
package io.spring.initializr.generator.test.io;
import java.io.ByteArrayInputStream;
import java.nio.charset.StandardCharsets;

View File

@@ -16,16 +16,15 @@
package io.spring.initializr.generator.test.io;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.StringWriter;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.List;
import org.springframework.util.FileCopyUtils;
import org.springframework.util.StreamUtils;
import static org.assertj.core.api.Assertions.assertThat;
@@ -64,11 +63,8 @@ public final class TextTestUtils {
*/
public static String readContent(Path source) {
assertThat(source).isRegularFile();
try {
BufferedReader reader = Files.newBufferedReader(source, StandardCharsets.UTF_8);
StringWriter writer = new StringWriter();
FileCopyUtils.copy(reader, writer);
return writer.toString();
try (InputStream stream = Files.newInputStream(source)) {
return StreamUtils.copyToString(stream, StandardCharsets.UTF_8);
}
catch (IOException ex) {
throw new IllegalStateException(ex);

View File

@@ -0,0 +1,20 @@
/*
* Copyright 2012-2019 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
*
* https://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.
*/
/**
* Support for testing project assets.
*/
package io.spring.initializr.generator.test.io;

View File

@@ -14,11 +14,11 @@
* limitations under the License.
*/
package io.spring.initializr.generator.spring.test.code;
package io.spring.initializr.generator.test.language;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import org.springframework.core.io.Resource;
import org.springframework.util.StreamUtils;
@@ -43,7 +43,7 @@ public class SourceCodeAssert {
public SourceCodeAssert equalsTo(Resource expected) {
try (InputStream in = expected.getInputStream()) {
String expectedContent = StreamUtils.copyToString(in, Charset.forName("UTF-8"));
String expectedContent = StreamUtils.copyToString(in, StandardCharsets.UTF_8);
assertThat(this.content).describedAs("Content for %s", this.name)
.isEqualTo(expectedContent.replaceAll("\r\n", "\n"));
}

View File

@@ -0,0 +1,20 @@
/*
* Copyright 2012-2019 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
*
* https://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.
*/
/**
* Support for testing source code.
*/
package io.spring.initializr.generator.test.language;

View File

@@ -0,0 +1,20 @@
/*
* Copyright 2012-2019 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
*
* https://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.
*/
/**
* Support for testing project generation.
*/
package io.spring.initializr.generator.test;

View File

@@ -14,19 +14,18 @@
* limitations under the License.
*/
package io.spring.initializr.generator.spring.test;
package io.spring.initializr.generator.test.project;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Properties;
import io.spring.initializr.generator.spring.test.build.GradleBuildAssert;
import io.spring.initializr.generator.spring.test.build.GradleSettingsAssert;
import io.spring.initializr.generator.spring.test.build.PomAssert;
import io.spring.initializr.generator.spring.test.code.SourceCodeAssert;
import io.spring.initializr.generator.test.buildsystem.gradle.GradleBuildAssert;
import io.spring.initializr.generator.test.buildsystem.gradle.GradleSettingsAssert;
import io.spring.initializr.generator.test.buildsystem.maven.PomAssert;
import io.spring.initializr.generator.test.io.TextTestUtils;
import io.spring.initializr.generator.test.project.ProjectStructure;
import io.spring.initializr.generator.test.language.SourceCodeAssert;
import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.support.PropertiesLoaderUtils;
@@ -41,8 +40,14 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
public class ProjectAssert {
/**
* Default package name.
*/
public static final String DEFAULT_PACKAGE_NAME = "com.example.demo";
/**
* Default application name.
*/
public static final String DEFAULT_APPLICATION_NAME = "DemoApplication";
private final ProjectStructure projectStructure;
@@ -95,7 +100,7 @@ public class ProjectAssert {
/**
* Return a {@link GradleSettingsAssert} for this project.
* @return A gradle settings assert
* @return a Gradle Settings assertion utility
*/
public GradleSettingsAssert gradleSettingsAssert() {
return new GradleSettingsAssert(TextTestUtils.readContent(this.projectStructure.resolve("settings.gradle")));
@@ -104,7 +109,7 @@ public class ProjectAssert {
/**
* Return a {@link SourceCodeAssert} for the specified source code.
* @param sourceCodePath the source code path
* @return a source assert
* @return a source code assertion utility
*/
public SourceCodeAssert sourceCodeAssert(String sourceCodePath) {
hasFile(sourceCodePath);

View File

@@ -0,0 +1,20 @@
/*
* Copyright 2012-2019 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
*
* https://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.
*/
/**
* Support for testing project generation.
*/
package io.spring.initializr.generator.test.project;

View File

@@ -14,16 +14,18 @@
* limitations under the License.
*/
package io.spring.initializr.generator.project;
package io.spring.initializr.generator.test.project;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.function.Consumer;
import io.spring.initializr.generator.buildsystem.maven.MavenBuildSystem;
import io.spring.initializr.generator.project.ProjectDescription;
import io.spring.initializr.generator.project.ProjectDescriptionCustomizer;
import io.spring.initializr.generator.project.ProjectGenerator;
import io.spring.initializr.generator.project.ResolvedProjectDescription;
import io.spring.initializr.generator.project.contributor.ProjectContributor;
import io.spring.initializr.generator.test.project.ProjectGeneratorTester;
import io.spring.initializr.generator.test.project.ProjectStructure;
import io.spring.initializr.generator.version.Version;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<statusListener class="ch.qos.logback.core.status.NopStatusListener" />
<property name="CONSOLE_LOG_PATTERN" value="%d{yyyy-MM-dd HH:mm:ss.SSS} %5p --- [%15.15t] %-40.40logger{1.} : %m%n"/>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
</encoder>
</appender>
<root level="warn">
<appender-ref ref="CONSOLE"/>
</root>
</configuration>

View File

@@ -49,20 +49,4 @@
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>

View File

@@ -18,12 +18,12 @@ package io.spring.initializr.generator.buildsystem.gradle;
import java.io.IOException;
import java.io.StringWriter;
import java.util.Arrays;
import java.util.List;
import io.spring.initializr.generator.buildsystem.Dependency;
import io.spring.initializr.generator.buildsystem.DependencyScope;
import io.spring.initializr.generator.io.IndentingWriter;
import io.spring.initializr.generator.test.io.TextTestUtils;
import io.spring.initializr.generator.version.VersionReference;
import org.junit.jupiter.api.Test;
@@ -138,7 +138,8 @@ class Gradle3BuildWriterTests {
Gradle3BuildWriter writer = new Gradle3BuildWriter();
StringWriter out = new StringWriter();
writer.writeTo(new IndentingWriter(out), build);
return TextTestUtils.readAllLines(out.toString());
String[] lines = out.toString().split("\\r?\\n");
return Arrays.asList(lines);
}
}

View File

@@ -18,13 +18,13 @@ package io.spring.initializr.generator.buildsystem.gradle;
import java.io.IOException;
import java.io.StringWriter;
import java.util.Arrays;
import java.util.List;
import io.spring.initializr.generator.buildsystem.Dependency;
import io.spring.initializr.generator.buildsystem.Dependency.Exclusion;
import io.spring.initializr.generator.buildsystem.DependencyScope;
import io.spring.initializr.generator.io.IndentingWriter;
import io.spring.initializr.generator.test.io.TextTestUtils;
import io.spring.initializr.generator.version.VersionProperty;
import io.spring.initializr.generator.version.VersionReference;
import org.junit.jupiter.api.Test;
@@ -433,7 +433,8 @@ class GroovyDslGradleBuildWriterTests {
GradleBuildWriter writer = new GroovyDslGradleBuildWriter();
StringWriter out = new StringWriter();
writer.writeTo(new IndentingWriter(out), build);
return TextTestUtils.readAllLines(out.toString());
String[] lines = out.toString().split("\\r?\\n");
return Arrays.asList(lines);
}
}

View File

@@ -18,10 +18,10 @@ package io.spring.initializr.generator.buildsystem.gradle;
import java.io.IOException;
import java.io.StringWriter;
import java.util.Arrays;
import java.util.List;
import io.spring.initializr.generator.io.IndentingWriter;
import io.spring.initializr.generator.test.io.TextTestUtils;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
@@ -88,7 +88,8 @@ class GroovyDslGradleSettingsWriterTests {
GradleSettingsWriter writer = new GroovyDslGradleSettingsWriter();
StringWriter out = new StringWriter();
writer.writeTo(new IndentingWriter(out), build);
return TextTestUtils.readAllLines(out.toString());
String[] lines = out.toString().split("\\r?\\n");
return Arrays.asList(lines);
}
}

View File

@@ -18,13 +18,13 @@ package io.spring.initializr.generator.buildsystem.gradle;
import java.io.IOException;
import java.io.StringWriter;
import java.util.Arrays;
import java.util.List;
import io.spring.initializr.generator.buildsystem.Dependency;
import io.spring.initializr.generator.buildsystem.Dependency.Exclusion;
import io.spring.initializr.generator.buildsystem.DependencyScope;
import io.spring.initializr.generator.io.IndentingWriter;
import io.spring.initializr.generator.test.io.TextTestUtils;
import io.spring.initializr.generator.version.VersionProperty;
import io.spring.initializr.generator.version.VersionReference;
import org.junit.jupiter.api.Test;
@@ -441,7 +441,8 @@ class KotlinDslGradleBuildWriterTests {
GradleBuildWriter writer = new KotlinDslGradleBuildWriter();
StringWriter out = new StringWriter();
writer.writeTo(new IndentingWriter(out), build);
return TextTestUtils.readAllLines(out.toString());
String[] lines = out.toString().split("\\r?\\n");
return Arrays.asList(lines);
}
}

View File

@@ -18,10 +18,10 @@ package io.spring.initializr.generator.buildsystem.gradle;
import java.io.IOException;
import java.io.StringWriter;
import java.util.Arrays;
import java.util.List;
import io.spring.initializr.generator.io.IndentingWriter;
import io.spring.initializr.generator.test.io.TextTestUtils;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
@@ -87,7 +87,8 @@ class KotlinDslGradleSettingsWriterTests {
GradleSettingsWriter writer = new KotlinDslGradleSettingsWriter();
StringWriter out = new StringWriter();
writer.writeTo(new IndentingWriter(out), build);
return TextTestUtils.readAllLines(out.toString());
String[] lines = out.toString().split("\\r?\\n");
return Arrays.asList(lines);
}
}

View File

@@ -23,7 +23,6 @@ import io.spring.initializr.generator.buildsystem.Dependency;
import io.spring.initializr.generator.buildsystem.Dependency.Exclusion;
import io.spring.initializr.generator.buildsystem.DependencyScope;
import io.spring.initializr.generator.io.IndentingWriter;
import io.spring.initializr.generator.test.assertj.NodeAssert;
import io.spring.initializr.generator.version.VersionProperty;
import io.spring.initializr.generator.version.VersionReference;
import org.junit.jupiter.api.Test;

View File

@@ -0,0 +1,111 @@
/*
* Copyright 2012-2019 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
*
* https://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 io.spring.initializr.generator.buildsystem.maven;
import java.io.ByteArrayInputStream;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;
import org.assertj.core.api.AbstractAssert;
import org.assertj.core.api.AssertProvider;
import org.assertj.core.api.ListAssert;
import org.assertj.core.api.StringAssert;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
/**
* AssertJ {@link AssertProvider} for {@link Node} assertions.
*
* @author Andy Wilkinson
*/
class NodeAssert extends AbstractAssert<NodeAssert, Node> implements AssertProvider<NodeAssert> {
private static final DocumentBuilderFactory FACTORY = DocumentBuilderFactory.newInstance();
private final XPathFactory xpathFactory = XPathFactory.newInstance();
private final XPath xpath = this.xpathFactory.newXPath();
NodeAssert(String xmlContent) {
this(read(xmlContent));
}
NodeAssert(Node actual) {
super(actual, NodeAssert.class);
}
private static Document read(String xmlContent) {
try {
return FACTORY.newDocumentBuilder()
.parse(new ByteArrayInputStream(xmlContent.getBytes(StandardCharsets.UTF_8)));
}
catch (Exception ex) {
throw new RuntimeException(ex);
}
}
NodeAssert nodeAtPath(String xpath) {
try {
return new NodeAssert((Node) this.xpath.evaluate(xpath, this.actual, XPathConstants.NODE));
}
catch (XPathExpressionException ex) {
throw new RuntimeException(ex);
}
}
ListAssert<Node> nodesAtPath(String xpath) {
try {
NodeList nodeList = (NodeList) this.xpath.evaluate(xpath, this.actual, XPathConstants.NODESET);
return new ListAssert<>(toList(nodeList));
}
catch (XPathExpressionException ex) {
throw new RuntimeException(ex);
}
}
StringAssert textAtPath(String xpath) {
try {
return new StringAssert(
(String) this.xpath.evaluate(xpath + "/text()", this.actual, XPathConstants.STRING));
}
catch (XPathExpressionException ex) {
throw new RuntimeException(ex);
}
}
@Override
public NodeAssert assertThat() {
return this;
}
private static List<Node> toList(NodeList nodeList) {
List<Node> nodes = new ArrayList<>();
for (int i = 0; i < nodeList.getLength(); i++) {
nodes.add(nodeList.item(i));
}
return nodes;
}
}

View File

@@ -21,7 +21,8 @@ import java.util.Map;
import io.spring.initializr.generator.buildsystem.gradle.GradleBuildSystem;
import io.spring.initializr.generator.buildsystem.maven.MavenBuildSystem;
import io.spring.initializr.generator.project.ProjectDescription;
import io.spring.initializr.generator.test.project.ProjectAssetTester;
import io.spring.initializr.generator.project.ProjectGenerationContext;
import io.spring.initializr.generator.project.ResolvedProjectDescription;
import org.junit.jupiter.api.Test;
import org.springframework.context.annotation.Bean;
@@ -36,8 +37,6 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
class ConditionalOnBuildSystemTests {
private final ProjectAssetTester projectTester = new ProjectAssetTester();
@Test
void outcomeWithMavenBuildSystem() {
ProjectDescription projectDescription = new ProjectDescription();
@@ -61,8 +60,12 @@ class ConditionalOnBuildSystemTests {
}
private Map<String, String> candidatesFor(ProjectDescription projectDescription, Class<?>... extraConfigurations) {
return this.projectTester.withConfiguration(extraConfigurations).generate(projectDescription,
(projectGenerationContext) -> projectGenerationContext.getBeansOfType(String.class));
try (ProjectGenerationContext context = new ProjectGenerationContext()) {
context.registerBean(ResolvedProjectDescription.class, projectDescription::resolve);
context.register(extraConfigurations);
context.refresh();
return context.getBeansOfType(String.class);
}
}
@Configuration

View File

@@ -16,11 +16,14 @@
package io.spring.initializr.generator.condition;
import java.util.function.Consumer;
import io.spring.initializr.generator.language.groovy.GroovyLanguage;
import io.spring.initializr.generator.language.java.JavaLanguage;
import io.spring.initializr.generator.language.kotlin.KotlinLanguage;
import io.spring.initializr.generator.project.ProjectDescription;
import io.spring.initializr.generator.test.project.ProjectAssetTester;
import io.spring.initializr.generator.project.ProjectGenerationContext;
import io.spring.initializr.generator.project.ResolvedProjectDescription;
import org.junit.jupiter.api.Test;
import org.springframework.context.annotation.Bean;
@@ -35,49 +38,46 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
class ConditionalOnLanguageTests {
private final ProjectAssetTester projectTester = new ProjectAssetTester()
.withConfiguration(LanguageTestConfiguration.class);
@Test
void outcomeWithJavaLanguage() {
ProjectDescription projectDescription = new ProjectDescription();
projectDescription.setLanguage(new JavaLanguage());
String bean = outcomeFor(projectDescription);
assertThat(bean).isEqualTo("testJava");
assertCondition(projectDescription, (context) -> {
assertThat(context.getBeansOfType(String.class)).hasSize(1);
assertThat(context.getBean(String.class)).isEqualTo("testJava");
});
}
@Test
void outcomeWithGroovyBuildSystem() {
ProjectDescription projectDescription = new ProjectDescription();
projectDescription.setLanguage(new GroovyLanguage());
String bean = outcomeFor(projectDescription);
assertThat(bean).isEqualTo("testGroovy");
assertCondition(projectDescription, (context) -> {
assertThat(context.getBeansOfType(String.class)).hasSize(1);
assertThat(context.getBean(String.class)).isEqualTo("testGroovy");
});
}
@Test
void outcomeWithNoMatch() {
ProjectDescription projectDescription = new ProjectDescription();
projectDescription.setLanguage(new KotlinLanguage());
this.projectTester.generate(projectDescription, (projectGenerationContext) -> {
assertThat(projectGenerationContext.getBeansOfType(String.class)).isEmpty();
return null;
});
assertCondition(projectDescription, (context) -> assertThat(context.getBeansOfType(String.class)).isEmpty());
}
@Test
void outcomeWithNoAvailableLanguage() {
ProjectDescription projectDescription = new ProjectDescription();
this.projectTester.generate(projectDescription, (projectGenerationContext) -> {
assertThat(projectGenerationContext.getBeansOfType(String.class)).isEmpty();
return null;
});
assertCondition(projectDescription, (context) -> assertThat(context.getBeansOfType(String.class)).isEmpty());
}
private String outcomeFor(ProjectDescription projectDescription) {
return this.projectTester.generate(projectDescription, (projectGenerationContext) -> {
assertThat(projectGenerationContext.getBeansOfType(String.class)).hasSize(1);
return projectGenerationContext.getBean(String.class);
});
private void assertCondition(ProjectDescription projectDescription, Consumer<ProjectGenerationContext> context) {
try (ProjectGenerationContext projectContext = new ProjectGenerationContext()) {
projectContext.registerBean(ResolvedProjectDescription.class, projectDescription::resolve);
projectContext.register(LanguageTestConfiguration.class);
projectContext.refresh();
context.accept(projectContext);
}
}
@Configuration

View File

@@ -16,10 +16,13 @@
package io.spring.initializr.generator.condition;
import java.util.function.Consumer;
import io.spring.initializr.generator.packaging.jar.JarPackaging;
import io.spring.initializr.generator.packaging.war.WarPackaging;
import io.spring.initializr.generator.project.ProjectDescription;
import io.spring.initializr.generator.test.project.ProjectAssetTester;
import io.spring.initializr.generator.project.ProjectGenerationContext;
import io.spring.initializr.generator.project.ResolvedProjectDescription;
import org.junit.jupiter.api.Test;
import org.springframework.context.annotation.Bean;
@@ -34,39 +37,39 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
class ConditionalOnPackagingTests {
private final ProjectAssetTester projectTester = new ProjectAssetTester()
.withConfiguration(PackagingTestConfiguration.class);
@Test
void outcomeWithJarPackaging() {
ProjectDescription projectDescription = new ProjectDescription();
projectDescription.setPackaging(new JarPackaging());
String bean = outcomeFor(projectDescription);
assertThat(bean).isEqualTo("testJar");
assertCondition(projectDescription, (context) -> {
assertThat(context.getBeansOfType(String.class)).hasSize(1);
assertThat(context.getBean(String.class)).isEqualTo("testJar");
});
}
@Test
void outcomeWithWarPackaging() {
ProjectDescription projectDescription = new ProjectDescription();
projectDescription.setPackaging(new WarPackaging());
String bean = outcomeFor(projectDescription);
assertThat(bean).isEqualTo("testWar");
assertCondition(projectDescription, (context) -> {
assertThat(context.getBeansOfType(String.class)).hasSize(1);
assertThat(context.getBean(String.class)).isEqualTo("testWar");
});
}
@Test
void outcomeWithNoAvailablePackaging() {
ProjectDescription projectDescription = new ProjectDescription();
this.projectTester.generate(projectDescription, (projectGenerationContext) -> {
assertThat(projectGenerationContext.getBeansOfType(String.class)).isEmpty();
return null;
});
assertCondition(projectDescription, (context) -> assertThat(context.getBeansOfType(String.class)).isEmpty());
}
private String outcomeFor(ProjectDescription projectDescription) {
return this.projectTester.generate(projectDescription, (projectGenerationContext) -> {
assertThat(projectGenerationContext.getBeansOfType(String.class)).hasSize(1);
return projectGenerationContext.getBean(String.class);
});
private void assertCondition(ProjectDescription projectDescription, Consumer<ProjectGenerationContext> context) {
try (ProjectGenerationContext projectContext = new ProjectGenerationContext()) {
projectContext.registerBean(ResolvedProjectDescription.class, projectDescription::resolve);
projectContext.register(PackagingTestConfiguration.class);
projectContext.refresh();
context.accept(projectContext);
}
}
@Configuration

View File

@@ -19,7 +19,8 @@ package io.spring.initializr.generator.condition;
import java.util.Map;
import io.spring.initializr.generator.project.ProjectDescription;
import io.spring.initializr.generator.test.project.ProjectAssetTester;
import io.spring.initializr.generator.project.ProjectGenerationContext;
import io.spring.initializr.generator.project.ResolvedProjectDescription;
import io.spring.initializr.generator.version.Version;
import org.junit.jupiter.api.Test;
@@ -35,9 +36,6 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
class ConditionalOnPlatformVersionTests {
private final ProjectAssetTester projectTester = new ProjectAssetTester()
.withConfiguration(PlatformVersionTestConfiguration.class);
@Test
void outcomeWithMatchingRange() {
ProjectDescription projectDescription = new ProjectDescription();
@@ -91,8 +89,13 @@ class ConditionalOnPlatformVersionTests {
}
private Map<String, String> candidatesFor(ProjectDescription projectDescription, Class<?>... extraConfigurations) {
return this.projectTester.withConfiguration(extraConfigurations).generate(projectDescription,
(projectGenerationContext) -> projectGenerationContext.getBeansOfType(String.class));
try (ProjectGenerationContext context = new ProjectGenerationContext()) {
context.registerBean(ResolvedProjectDescription.class, projectDescription::resolve);
context.register(PlatformVersionTestConfiguration.class);
context.register(extraConfigurations);
context.refresh();
return context.getBeansOfType(String.class);
}
}
@Configuration

View File

@@ -16,9 +16,12 @@
package io.spring.initializr.generator.condition;
import java.util.function.Consumer;
import io.spring.initializr.generator.buildsystem.Dependency;
import io.spring.initializr.generator.project.ProjectDescription;
import io.spring.initializr.generator.test.project.ProjectAssetTester;
import io.spring.initializr.generator.project.ProjectGenerationContext;
import io.spring.initializr.generator.project.ResolvedProjectDescription;
import org.junit.jupiter.api.Test;
import org.springframework.context.annotation.Bean;
@@ -34,28 +37,30 @@ import static org.mockito.Mockito.mock;
*/
class ConditionalOnRequestedDependencyTests {
private final ProjectAssetTester projectTester = new ProjectAssetTester()
.withConfiguration(RequestedDependencyTestConfiguration.class);
@Test
void outcomeWithMatchingDependency() {
ProjectDescription projectDescription = new ProjectDescription();
projectDescription.addDependency("web", mock(Dependency.class));
String bean = this.projectTester.generate(projectDescription, (projectGenerationContext) -> {
assertThat(projectGenerationContext.getBeansOfType(String.class)).hasSize(1);
return projectGenerationContext.getBean(String.class);
assertCondition(projectDescription, (context) -> {
assertThat(context.getBeansOfType(String.class)).hasSize(1);
assertThat(context.getBean(String.class)).isEqualTo("webDependency");
});
assertThat(bean).isEqualTo("webDependency");
}
@Test
void outcomeWithNoMatch() {
ProjectDescription projectDescription = new ProjectDescription();
projectDescription.addDependency("another", mock(Dependency.class));
this.projectTester.generate(projectDescription, (projectGenerationContext) -> {
assertThat(projectGenerationContext.getBeansOfType(String.class)).isEmpty();
return null;
});
assertCondition(projectDescription, (context) -> assertThat(context.getBeansOfType(String.class)).isEmpty());
}
private void assertCondition(ProjectDescription projectDescription, Consumer<ProjectGenerationContext> context) {
try (ProjectGenerationContext projectContext = new ProjectGenerationContext()) {
projectContext.registerBean(ResolvedProjectDescription.class, projectDescription::resolve);
projectContext.register(RequestedDependencyTestConfiguration.class);
projectContext.refresh();
context.accept(projectContext);
}
}
@Configuration

View File

@@ -18,9 +18,9 @@ package io.spring.initializr.generator.io;
import java.io.IOException;
import java.io.StringWriter;
import java.util.Arrays;
import java.util.List;
import io.spring.initializr.generator.test.io.TextTestUtils;
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.assertThat;
@@ -92,7 +92,8 @@ class IndentingWriterTests {
}
private List<String> readLines() {
return TextTestUtils.readAllLines(this.stringWriter.toString());
String[] lines = this.stringWriter.toString().split("\\r?\\n");
return Arrays.asList(lines);
}
}

View File

@@ -17,9 +17,13 @@
package io.spring.initializr.generator.language.groovy;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Modifier;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.time.temporal.ChronoUnit;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
@@ -27,10 +31,11 @@ import io.spring.initializr.generator.io.IndentingWriterFactory;
import io.spring.initializr.generator.language.Annotation;
import io.spring.initializr.generator.language.Parameter;
import io.spring.initializr.generator.language.SourceStructure;
import io.spring.initializr.generator.test.io.TextTestUtils;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import org.springframework.util.StreamUtils;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
@@ -273,7 +278,10 @@ class GroovySourceCodeWriterTests {
private List<String> writeSingleType(GroovySourceCode sourceCode, String location) throws IOException {
Path source = writeSourceCode(sourceCode).resolve(location);
return TextTestUtils.readAllLines(source);
try (InputStream stream = Files.newInputStream(source)) {
String[] lines = StreamUtils.copyToString(stream, StandardCharsets.UTF_8).split("\\r?\\n");
return Arrays.asList(lines);
}
}
private Path writeSourceCode(GroovySourceCode sourceCode) throws IOException {

View File

@@ -17,9 +17,13 @@
package io.spring.initializr.generator.language.java;
import java.io.IOException;
import java.io.InputStream;
import java.lang.reflect.Modifier;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.time.temporal.ChronoUnit;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
@@ -27,10 +31,11 @@ import io.spring.initializr.generator.io.IndentingWriterFactory;
import io.spring.initializr.generator.language.Annotation;
import io.spring.initializr.generator.language.Parameter;
import io.spring.initializr.generator.language.SourceStructure;
import io.spring.initializr.generator.test.io.TextTestUtils;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import org.springframework.util.StreamUtils;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
@@ -274,7 +279,10 @@ class JavaSourceCodeWriterTests {
private List<String> writeSingleType(JavaSourceCode sourceCode, String location) throws IOException {
Path source = writeSourceCode(sourceCode).resolve(location);
return TextTestUtils.readAllLines(source);
try (InputStream stream = Files.newInputStream(source)) {
String[] lines = StreamUtils.copyToString(stream, StandardCharsets.UTF_8).split("\\r?\\n");
return Arrays.asList(lines);
}
}
private Path writeSourceCode(JavaSourceCode sourceCode) throws IOException {

View File

@@ -17,8 +17,12 @@
package io.spring.initializr.generator.language.kotlin;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.time.temporal.ChronoUnit;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
@@ -26,10 +30,11 @@ import io.spring.initializr.generator.io.IndentingWriterFactory;
import io.spring.initializr.generator.language.Annotation;
import io.spring.initializr.generator.language.Parameter;
import io.spring.initializr.generator.language.SourceStructure;
import io.spring.initializr.generator.test.io.TextTestUtils;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir;
import org.springframework.util.StreamUtils;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatIllegalArgumentException;
@@ -331,7 +336,10 @@ class KotlinSourceCodeWriterTests {
private List<String> writeSingleType(KotlinSourceCode sourceCode, String location) throws IOException {
Path source = writeSourceCode(sourceCode).resolve(location);
return TextTestUtils.readAllLines(source);
try (InputStream stream = Files.newInputStream(source)) {
String[] lines = StreamUtils.copyToString(stream, StandardCharsets.UTF_8).split("\\r?\\n");
return Arrays.asList(lines);
}
}
private Path writeSourceCode(KotlinSourceCode sourceCode) throws IOException {

View File

@@ -90,14 +90,7 @@
</dependency>
<dependency>
<groupId>io.spring.initializr</groupId>
<artifactId>initializr-generator</artifactId>
<type>test-jar</type>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.spring.initializr</groupId>
<artifactId>initializr-generator-spring</artifactId>
<type>test-jar</type>
<artifactId>initializr-generator-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>

View File

@@ -34,7 +34,7 @@ import java.util.stream.Collectors;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.spring.initializr.generator.spring.test.ProjectAssert;
import io.spring.initializr.generator.test.project.ProjectAssert;
import io.spring.initializr.web.AbstractInitializrIntegrationTests.Config;
import io.spring.initializr.web.mapper.InitializrMetadataVersion;
import io.spring.initializr.web.support.InitializrMetadataUpdateStrategy;

View File

@@ -20,7 +20,7 @@ import java.io.IOException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.metadata.Dependency;
import io.spring.initializr.metadata.InitializrMetadata;
import io.spring.initializr.metadata.Link;

View File

@@ -16,7 +16,7 @@
package io.spring.initializr.web.project;
import io.spring.initializr.generator.spring.test.build.PomAssert;
import io.spring.initializr.generator.test.buildsystem.maven.PomAssert;
import io.spring.initializr.web.AbstractInitializrControllerIntegrationTests;
import org.junit.jupiter.api.Test;

View File

@@ -16,7 +16,7 @@
package io.spring.initializr.web.project;
import io.spring.initializr.generator.spring.test.build.PomAssert;
import io.spring.initializr.generator.test.buildsystem.maven.PomAssert;
import io.spring.initializr.web.AbstractInitializrControllerIntegrationTests;
import org.junit.jupiter.api.Test;

View File

@@ -18,7 +18,7 @@ package io.spring.initializr.web.project;
import java.net.URI;
import io.spring.initializr.generator.spring.test.ProjectAssert;
import io.spring.initializr.generator.test.project.ProjectAssert;
import io.spring.initializr.web.AbstractInitializrControllerIntegrationTests;
import org.junit.jupiter.api.Test;

View File

@@ -26,10 +26,10 @@ import io.spring.initializr.generator.io.IndentingWriterFactory;
import io.spring.initializr.generator.io.SimpleIndentStrategy;
import io.spring.initializr.generator.io.template.MustacheTemplateRenderer;
import io.spring.initializr.generator.project.ProjectDirectoryFactory;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.spring.test.ProjectAssert;
import io.spring.initializr.generator.spring.test.build.GradleBuildAssert;
import io.spring.initializr.generator.spring.test.build.PomAssert;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.buildsystem.gradle.GradleBuildAssert;
import io.spring.initializr.generator.test.buildsystem.maven.PomAssert;
import io.spring.initializr.generator.test.project.ProjectAssert;
import io.spring.initializr.metadata.InitializrMetadata;
import io.spring.initializr.metadata.InitializrMetadataProvider;
import org.junit.jupiter.api.AfterEach;

View File

@@ -20,7 +20,7 @@ import java.util.Collections;
import io.spring.initializr.generator.buildsystem.gradle.GradleBuildSystem;
import io.spring.initializr.generator.project.ProjectDescription;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.version.Version;
import io.spring.initializr.generator.version.VersionRange;
import io.spring.initializr.metadata.Dependency;

View File

@@ -21,7 +21,7 @@ import java.util.Arrays;
import java.util.List;
import io.spring.initializr.generator.io.template.MustacheTemplateRenderer;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.metadata.Dependency;
import io.spring.initializr.metadata.InitializrMetadata;
import io.spring.initializr.metadata.Type;

View File

@@ -16,7 +16,7 @@
package io.spring.initializr.web.support;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.version.Version;
import io.spring.initializr.metadata.BillOfMaterials;
import io.spring.initializr.metadata.Dependency;

View File

@@ -19,7 +19,7 @@ package io.spring.initializr.web.support;
import java.util.List;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.spring.initializr.generator.spring.test.InitializrMetadataTestBuilder;
import io.spring.initializr.generator.test.InitializrMetadataTestBuilder;
import io.spring.initializr.metadata.DefaultMetadataElement;
import io.spring.initializr.metadata.InitializrMetadata;
import org.junit.jupiter.api.BeforeEach;

View File

@@ -49,6 +49,7 @@
<module>initializr-docs</module>
<module>initializr-generator</module>
<module>initializr-generator-spring</module>
<module>initializr-generator-test</module>
<module>initializr-metadata</module>
<module>initializr-parent</module>
<module>initializr-service-sample</module>