mirror of
https://gitee.com/dcren/initializr.git
synced 2025-07-16 07:59:42 +08:00
Use test blocks in assertions
This commit is contained in:
parent
997857c775
commit
371a02622c
@ -17,9 +17,7 @@
|
||||
package io.spring.initializr.generator.buildsystem.gradle;
|
||||
|
||||
import java.io.StringWriter;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
import io.spring.initializr.generator.buildsystem.BillOfMaterials;
|
||||
import io.spring.initializr.generator.buildsystem.Dependency;
|
||||
@ -27,6 +25,7 @@ import io.spring.initializr.generator.buildsystem.Dependency.Exclusion;
|
||||
import io.spring.initializr.generator.buildsystem.DependencyScope;
|
||||
import io.spring.initializr.generator.buildsystem.MavenRepository;
|
||||
import io.spring.initializr.generator.io.IndentingWriter;
|
||||
import io.spring.initializr.generator.io.SimpleIndentStrategy;
|
||||
import io.spring.initializr.generator.version.VersionProperty;
|
||||
import io.spring.initializr.generator.version.VersionReference;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@ -46,16 +45,14 @@ class GroovyDslGradleBuildWriterTests {
|
||||
void gradleBuildWithCoordinates() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.settings().group("com.example").version("1.0.1-SNAPSHOT");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).contains("group = 'com.example'", "version = '1.0.1-SNAPSHOT'");
|
||||
assertThat(write(build).lines()).contains("group = 'com.example'", "version = '1.0.1-SNAPSHOT'");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithSourceCompatibility() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.settings().sourceCompatibility("11");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).contains("sourceCompatibility = '11'");
|
||||
assertThat(write(build).lines()).contains("sourceCompatibility = '11'");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -64,10 +61,15 @@ class GroovyDslGradleBuildWriterTests {
|
||||
build.repositories().add("maven-central");
|
||||
build.buildscript((buildscript) -> buildscript
|
||||
.dependency("org.springframework.boot:spring-boot-gradle-plugin:2.1.0.RELEASE"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("buildscript {", " repositories {", " mavenCentral()", " }",
|
||||
" dependencies {",
|
||||
" classpath 'org.springframework.boot:spring-boot-gradle-plugin:2.1.0.RELEASE'", " }", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
buildscript {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
dependencies {
|
||||
classpath 'org.springframework.boot:spring-boot-gradle-plugin:2.1.0.RELEASE'
|
||||
}
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -75,50 +77,58 @@ class GroovyDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.repositories().add("maven-central");
|
||||
build.buildscript((buildscript) -> buildscript.ext("kotlinVersion", "'1.2.51'"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("buildscript {", " ext {", " kotlinVersion = '1.2.51'", " }");
|
||||
assertThat(write(build)).contains("""
|
||||
buildscript {
|
||||
ext {
|
||||
kotlinVersion = '1.2.51'
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithPlugin() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.plugins().add("java");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("plugins {", " id 'java'", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
plugins {
|
||||
id 'java'
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithPluginAndVersion() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.plugins().add("org.springframework.boot", (plugin) -> plugin.setVersion("2.1.0.RELEASE"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("plugins {", " id 'org.springframework.boot' version '2.1.0.RELEASE'",
|
||||
"}");
|
||||
assertThat(write(build)).contains("""
|
||||
plugins {
|
||||
id 'org.springframework.boot' version '2.1.0.RELEASE'
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithApplyPlugin() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.plugins().apply("io.spring.dependency-management");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("apply plugin: 'io.spring.dependency-management'");
|
||||
assertThat(write(build).lines()).contains("apply plugin: 'io.spring.dependency-management'");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithMavenCentralRepository() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.repositories().add("maven-central");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("repositories {", " mavenCentral()", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithRepository() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.repositories().add(MavenRepository.withIdAndUrl("spring-milestones", "https://repo.spring.io/milestone"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("repositories {", " maven { url 'https://repo.spring.io/milestone' }",
|
||||
"}");
|
||||
assertThat(write(build)).contains("""
|
||||
repositories {
|
||||
maven { url 'https://repo.spring.io/milestone' }
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -126,9 +136,10 @@ class GroovyDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.repositories().add(
|
||||
MavenRepository.withIdAndUrl("spring-snapshots", "https://repo.spring.io/snapshot").onlySnapshots());
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("repositories {", " maven { url 'https://repo.spring.io/snapshot' }",
|
||||
"}");
|
||||
assertThat(write(build)).contains("""
|
||||
repositories {
|
||||
maven { url 'https://repo.spring.io/snapshot' }
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -136,8 +147,7 @@ class GroovyDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.pluginRepositories()
|
||||
.add(MavenRepository.withIdAndUrl("spring-milestones", "https://repo.spring.io/milestone"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).doesNotContain("repositories {");
|
||||
assertThat(write(build)).doesNotContain("repositories {");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -148,18 +158,23 @@ class GroovyDslGradleBuildWriterTests {
|
||||
(kotlinOptions) -> kotlinOptions.attribute("freeCompilerArgs", "['-Xjsr305=strict']")));
|
||||
build.tasks().customizeWithType("org.jetbrains.kotlin.gradle.tasks.KotlinCompile", (task) -> task
|
||||
.nested("kotlinOptions", (kotlinOptions) -> kotlinOptions.attribute("jvmTarget", "'1.8'")));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsOnlyOnce("import org.jetbrains.kotlin.gradle.tasks.KotlinCompile").containsSequence(
|
||||
"tasks.withType(KotlinCompile) {", " kotlinOptions {",
|
||||
" freeCompilerArgs = ['-Xjsr305=strict']", " jvmTarget = '1.8'", " }", "}");
|
||||
assertThat(write(build)).containsOnlyOnce("import org.jetbrains.kotlin.gradle.tasks.KotlinCompile").contains("""
|
||||
tasks.withType(KotlinCompile) {
|
||||
kotlinOptions {
|
||||
freeCompilerArgs = ['-Xjsr305=strict']
|
||||
jvmTarget = '1.8'
|
||||
}
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithTaskWithTypesAndShortTypes() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.tasks().customizeWithType("JavaCompile", (javaCompile) -> javaCompile.attribute("options.fork", "true"));
|
||||
assertThat(generateBuild(build)).doesNotContain("import JavaCompile")
|
||||
.containsSequence("tasks.withType(JavaCompile) {", " options.fork = true", "}");
|
||||
assertThat(write(build)).doesNotContain("import JavaCompile").contains("""
|
||||
tasks.withType(JavaCompile) {
|
||||
options.fork = true
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -169,17 +184,21 @@ class GroovyDslGradleBuildWriterTests {
|
||||
task.invoke("inputs.dir", "snippetsDir");
|
||||
task.invoke("dependsOn", "test");
|
||||
});
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("tasks.named('asciidoctor') {", " inputs.dir snippetsDir",
|
||||
" dependsOn test", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
tasks.named('asciidoctor') {
|
||||
inputs.dir snippetsDir
|
||||
dependsOn test
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithTaskCustomizedWithInvocationAndNoArgument() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.tasks().customize("test", (task) -> task.invoke("myMethod"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("tasks.named('test') {", " myMethod()", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
tasks.named('test') {
|
||||
myMethod()
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -189,9 +208,11 @@ class GroovyDslGradleBuildWriterTests {
|
||||
task.attribute("kotlinOptions.freeCompilerArgs", "['-Xjsr305=strict']");
|
||||
task.attribute("kotlinOptions.jvmTarget", "'1.8'");
|
||||
});
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("tasks.named('compileKotlin') {",
|
||||
" kotlinOptions.freeCompilerArgs = ['-Xjsr305=strict']", " kotlinOptions.jvmTarget = '1.8'", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
tasks.named('compileKotlin') {
|
||||
kotlinOptions.freeCompilerArgs = ['-Xjsr305=strict']
|
||||
kotlinOptions.jvmTarget = '1.8'
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -202,18 +223,24 @@ class GroovyDslGradleBuildWriterTests {
|
||||
kotlinOptions.attribute("freeCompilerArgs", "['-Xjsr305=strict']");
|
||||
kotlinOptions.attribute("jvmTarget", "'1.8'");
|
||||
}));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("tasks.named('compileKotlin') {", " kotlinOptions {",
|
||||
" freeCompilerArgs = ['-Xjsr305=strict']", " jvmTarget = '1.8'", " }", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
tasks.named('compileKotlin') {
|
||||
kotlinOptions {
|
||||
freeCompilerArgs = ['-Xjsr305=strict']
|
||||
jvmTarget = '1.8'
|
||||
}
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithExt() throws Exception {
|
||||
void gradleBuildWithExt() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.properties().property("java.version", "'1.8'").property("alpha", "file(\"build/example\")");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence(" set('alpha', file(\"build/example\"))",
|
||||
" set('java.version', '1.8')");
|
||||
assertThat(write(build)).contains("""
|
||||
ext {
|
||||
set('alpha', file("build/example"))
|
||||
set('java.version', '1.8')
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -221,9 +248,12 @@ class GroovyDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.properties().version(VersionProperty.of("version.property", false), "1.2.3")
|
||||
.version(VersionProperty.of("internal.property", true), "4.5.6").version("external.property", "7.8.9");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("ext {", " set('external.property', \"7.8.9\")",
|
||||
" set('internalProperty', \"4.5.6\")", " set('version.property', \"1.2.3\")", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
ext {
|
||||
set('external.property', "7.8.9")
|
||||
set('internalProperty', "4.5.6")
|
||||
set('version.property', "1.2.3")
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -232,9 +262,10 @@ class GroovyDslGradleBuildWriterTests {
|
||||
build.dependencies().add("kotlin-stdlib",
|
||||
Dependency.withCoordinates("org.jetbrains.kotlin", "kotlin-stdlib-jdk8")
|
||||
.version(VersionReference.ofProperty("kotlin.version")).scope(DependencyScope.COMPILE));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {",
|
||||
" implementation \"org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlinVersion}\"", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
dependencies {
|
||||
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlinVersion}"
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -244,48 +275,63 @@ class GroovyDslGradleBuildWriterTests {
|
||||
Dependency.withCoordinates("com.example", "acme")
|
||||
.version(VersionReference.ofProperty(VersionProperty.of("acme.version", false)))
|
||||
.scope(DependencyScope.COMPILE));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {",
|
||||
" implementation \"com.example:acme:${property('acme.version')}\"", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
dependencies {
|
||||
implementation "com.example:acme:${property('acme.version')}"
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithExtAndVersionProperties() throws Exception {
|
||||
void gradleBuildWithExtAndVersionProperties() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.properties().version(VersionProperty.of("test-version"), "1.0").version("alpha-version", "0.1")
|
||||
.property("myProperty", "'42'");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence(" set('myProperty', '42')", " set('alpha-version', \"0.1\")",
|
||||
" set('testVersion', \"1.0\")");
|
||||
assertThat(write(build)).contains("""
|
||||
ext {
|
||||
set('myProperty', '42')
|
||||
set('alpha-version', "0.1")
|
||||
set('testVersion', "1.0")
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithConfiguration() throws Exception {
|
||||
void gradleBuildWithConfiguration() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.configurations().add("developmentOnly");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("configurations {", " developmentOnly", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
configurations {
|
||||
developmentOnly
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithConfigurationCustomization() throws Exception {
|
||||
void gradleBuildWithConfigurationCustomization() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.configurations().customize("developmentOnly", (configuration) -> configuration.extendsFrom("compile"));
|
||||
build.configurations().customize("developmentOnly",
|
||||
(configuration) -> configuration.extendsFrom("testCompile"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("configurations {", " developmentOnly {",
|
||||
" extendsFrom compile, testCompile", " }", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
configurations {
|
||||
developmentOnly {
|
||||
extendsFrom compile, testCompile
|
||||
}
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithConfigurationCustomizations() throws Exception {
|
||||
void gradleBuildWithConfigurationCustomizations() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.configurations().customize("developmentOnly", (configuration) -> configuration.extendsFrom("compile"));
|
||||
build.configurations().customize("testOnly", (configuration) -> configuration.extendsFrom("testCompile"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("configurations {", " developmentOnly {", " extendsFrom compile",
|
||||
" }", " testOnly {", " extendsFrom testCompile", " }", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
configurations {
|
||||
developmentOnly {
|
||||
extendsFrom compile
|
||||
}
|
||||
testOnly {
|
||||
extendsFrom testCompile
|
||||
}
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -293,27 +339,30 @@ class GroovyDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.dependencies().add("annotation-processor", "org.springframework.boot",
|
||||
"spring-boot-configuration-processor", DependencyScope.ANNOTATION_PROCESSOR);
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {",
|
||||
" annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
dependencies {
|
||||
annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithCompileDependency() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.dependencies().add("root", "org.springframework.boot", "spring-boot-starter", DependencyScope.COMPILE);
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {",
|
||||
" implementation 'org.springframework.boot:spring-boot-starter'", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
dependencies {
|
||||
implementation 'org.springframework.boot:spring-boot-starter'
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithNoScopeDependencyDefaultsToCompile() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.dependencies().add("root", Dependency.withCoordinates("org.springframework.boot", "spring-boot-starter"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {",
|
||||
" implementation 'org.springframework.boot:spring-boot-starter'", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
dependencies {
|
||||
implementation 'org.springframework.boot:spring-boot-starter'
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -321,8 +370,10 @@ class GroovyDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.dependencies().add("driver", Dependency.withCoordinates("com.example", "jdbc-driver")
|
||||
.version(VersionReference.ofValue("1.0.0")).scope(DependencyScope.RUNTIME));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {", " runtimeOnly 'com.example:jdbc-driver:1.0.0'", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
dependencies {
|
||||
runtimeOnly 'com.example:jdbc-driver:1.0.0'
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -330,9 +381,10 @@ class GroovyDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.dependencies().add("tomcat", "org.springframework.boot", "spring-boot-starter-tomcat",
|
||||
DependencyScope.PROVIDED_RUNTIME);
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {",
|
||||
" providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
dependencies {
|
||||
providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -340,9 +392,10 @@ class GroovyDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.dependencies().add("test", "org.springframework.boot", "spring-boot-starter-test",
|
||||
DependencyScope.TEST_COMPILE);
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {",
|
||||
" testImplementation 'org.springframework.boot:spring-boot-starter-test'", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
dependencies {
|
||||
testImplementation 'org.springframework.boot:spring-boot-starter-test'
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -350,9 +403,10 @@ class GroovyDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.dependencies().add("test", "org.springframework.boot", "spring-boot-starter-foobar",
|
||||
DependencyScope.COMPILE_ONLY);
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {",
|
||||
" compileOnly 'org.springframework.boot:spring-boot-starter-foobar'", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
dependencies {
|
||||
compileOnly 'org.springframework.boot:spring-boot-starter-foobar'
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -360,17 +414,20 @@ class GroovyDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.dependencies().add("embed-mongo", "de.flapdoodle.embed", "de.flapdoodle.embed.mongo",
|
||||
DependencyScope.TEST_RUNTIME);
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {",
|
||||
" testRuntimeOnly 'de.flapdoodle.embed:de.flapdoodle.embed.mongo'", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
dependencies {
|
||||
testRuntimeOnly 'de.flapdoodle.embed:de.flapdoodle.embed.mongo'
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithClassifierDependency() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.dependencies().add("root", Dependency.withCoordinates("com.example", "acme").classifier("test-jar"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {", " implementation 'com.example:acme:test-jar'", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
dependencies {
|
||||
implementation 'com.example:acme:test-jar'
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -380,10 +437,13 @@ class GroovyDslGradleBuildWriterTests {
|
||||
Dependency.withCoordinates("com.example", "test").scope(DependencyScope.COMPILE).exclusions(
|
||||
new Exclusion("com.example.legacy", "legacy-one"),
|
||||
new Exclusion("com.example.another", "legacy-two")));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {", " implementation('com.example:test') {",
|
||||
" exclude group: 'com.example.legacy', module: 'legacy-one'",
|
||||
" exclude group: 'com.example.another', module: 'legacy-two'", " }", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
dependencies {
|
||||
implementation('com.example:test') {
|
||||
exclude group: 'com.example.legacy', module: 'legacy-one'
|
||||
exclude group: 'com.example.another', module: 'legacy-two'
|
||||
}
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -392,9 +452,10 @@ class GroovyDslGradleBuildWriterTests {
|
||||
build.dependencies().add("test",
|
||||
GradleDependency.withCoordinates("org.springframework.boot", "spring-boot-starter-foobar")
|
||||
.scope(DependencyScope.RUNTIME).configuration("myRuntime"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {",
|
||||
" myRuntime 'org.springframework.boot:spring-boot-starter-foobar'", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
dependencies {
|
||||
myRuntime 'org.springframework.boot:spring-boot-starter-foobar'
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -402,9 +463,10 @@ class GroovyDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.dependencies().add("root", Dependency.withCoordinates("org.springframework.boot", "spring-boot-starter")
|
||||
.scope(DependencyScope.COMPILE).type("tar.gz"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {",
|
||||
" implementation 'org.springframework.boot:spring-boot-starter@tar.gz'", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
dependencies {
|
||||
implementation 'org.springframework.boot:spring-boot-starter@tar.gz'
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -412,9 +474,10 @@ class GroovyDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.dependencies().add("root", Dependency.withCoordinates("com.example", "acme")
|
||||
.scope(DependencyScope.COMPILE).type("tar.gz").classifier("test-jar"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {", " implementation 'com.example:acme:test-jar@tar.gz'",
|
||||
"}");
|
||||
assertThat(write(build)).contains("""
|
||||
dependencies {
|
||||
implementation 'com.example:acme:test-jar@tar.gz'
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -425,10 +488,13 @@ class GroovyDslGradleBuildWriterTests {
|
||||
build.dependencies().add("web",
|
||||
Dependency.withCoordinates("org.springframework.boot", "spring-boot-starter-web"));
|
||||
build.dependencies().add("root", Dependency.withCoordinates("org.springframework.boot", "spring-boot-starter"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence(" implementation 'org.springframework.boot:spring-boot-starter'",
|
||||
" implementation 'org.springframework.boot:spring-boot-starter-web'",
|
||||
" implementation 'com.example:alpha'", " implementation 'com.example:beta'");
|
||||
assertThat(write(build)).contains("""
|
||||
dependencies {
|
||||
implementation 'org.springframework.boot:spring-boot-starter'
|
||||
implementation 'org.springframework.boot:spring-boot-starter-web'
|
||||
implementation 'com.example:alpha'
|
||||
implementation 'com.example:beta'
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -445,11 +511,13 @@ class GroovyDslGradleBuildWriterTests {
|
||||
return Comparator.comparing(Dependency::getArtifactId);
|
||||
}
|
||||
};
|
||||
List<String> lines = generateBuild(writer, build);
|
||||
assertThat(lines).containsSequence(" implementation 'com.example:alpha'",
|
||||
" implementation 'com.example:beta'",
|
||||
" implementation 'org.springframework.boot:spring-boot-starter'",
|
||||
" implementation 'org.springframework.boot:spring-boot-starter-web'");
|
||||
assertThat(write(writer, build)).contains("""
|
||||
dependencies {
|
||||
implementation 'com.example:alpha'
|
||||
implementation 'com.example:beta'
|
||||
implementation 'org.springframework.boot:spring-boot-starter'
|
||||
implementation 'org.springframework.boot:spring-boot-starter-web'
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -457,9 +525,12 @@ class GroovyDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.boms().add("test", BillOfMaterials.withCoordinates("com.example", "my-project-dependencies")
|
||||
.version(VersionReference.ofValue("1.0.0.RELEASE")));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencyManagement {", " imports {",
|
||||
" mavenBom 'com.example:my-project-dependencies:1.0.0.RELEASE'", " }", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
dependencyManagement {
|
||||
imports {
|
||||
mavenBom 'com.example:my-project-dependencies:1.0.0.RELEASE'
|
||||
}
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -469,29 +540,30 @@ class GroovyDslGradleBuildWriterTests {
|
||||
.version(VersionReference.ofValue("1.0.0.RELEASE")).order(5));
|
||||
build.boms().add("bom2", BillOfMaterials.withCoordinates("com.example", "root-dependencies")
|
||||
.version(VersionReference.ofProperty("root.version")).order(2));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencyManagement {", " imports {",
|
||||
" mavenBom 'com.example:my-project-dependencies:1.0.0.RELEASE'",
|
||||
" mavenBom \"com.example:root-dependencies:${rootVersion}\"", " }", "}");
|
||||
assertThat(write(build)).contains("""
|
||||
dependencyManagement {
|
||||
imports {
|
||||
mavenBom 'com.example:my-project-dependencies:1.0.0.RELEASE'
|
||||
mavenBom "com.example:root-dependencies:${rootVersion}"
|
||||
}
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithCustomVersion() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.settings().version("1.2.4.RELEASE");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).contains("version = '1.2.4.RELEASE'");
|
||||
assertThat(write(build)).contains("version = '1.2.4.RELEASE'");
|
||||
}
|
||||
|
||||
private List<String> generateBuild(GradleBuild build) {
|
||||
return generateBuild(new GroovyDslGradleBuildWriter(), build);
|
||||
private String write(GradleBuild build) {
|
||||
return write(new GroovyDslGradleBuildWriter(), build);
|
||||
}
|
||||
|
||||
private List<String> generateBuild(GroovyDslGradleBuildWriter writer, GradleBuild build) {
|
||||
private String write(GroovyDslGradleBuildWriter writer, GradleBuild build) {
|
||||
StringWriter out = new StringWriter();
|
||||
writer.writeTo(new IndentingWriter(out), build);
|
||||
String[] lines = out.toString().split("\\r?\\n");
|
||||
return Arrays.asList(lines);
|
||||
writer.writeTo(new IndentingWriter(out, new SimpleIndentStrategy("\t")), build);
|
||||
return out.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -17,12 +17,11 @@
|
||||
package io.spring.initializr.generator.buildsystem.gradle;
|
||||
|
||||
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.MavenRepository;
|
||||
import io.spring.initializr.generator.io.IndentingWriter;
|
||||
import io.spring.initializr.generator.io.SimpleIndentStrategy;
|
||||
import io.spring.initializr.generator.version.VersionReference;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
@ -40,16 +39,19 @@ class GroovyDslGradleSettingsWriterTests {
|
||||
void gradleBuildWithMavenCentralPluginRepository() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.pluginRepositories().add("maven-central");
|
||||
List<String> lines = generateSettings(build);
|
||||
assertThat(lines).containsSequence("pluginManagement {", " repositories {", " mavenCentral()",
|
||||
" gradlePluginPortal()", " }", "}");
|
||||
assertThat(generateSettings(build)).contains("""
|
||||
pluginManagement {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
gradlePluginPortal()
|
||||
}
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithoutPluginRepository() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
List<String> lines = generateSettings(build);
|
||||
assertThat(lines).doesNotContain("pluginManagement");
|
||||
assertThat(generateSettings(build)).doesNotContain("pluginManagement");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -57,10 +59,13 @@ class GroovyDslGradleSettingsWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.pluginRepositories().add(MavenRepository
|
||||
.withIdAndUrl("spring-milestones", "https://repo.spring.io/milestone").name("Spring Milestones"));
|
||||
List<String> lines = generateSettings(build);
|
||||
assertThat(lines).containsSequence("pluginManagement {", " repositories {",
|
||||
" maven { url 'https://repo.spring.io/milestone' }", " gradlePluginPortal()", " }",
|
||||
"}");
|
||||
assertThat(generateSettings(build)).contains("""
|
||||
pluginManagement {
|
||||
repositories {
|
||||
maven { url 'https://repo.spring.io/milestone' }
|
||||
gradlePluginPortal()
|
||||
}
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -69,10 +74,13 @@ class GroovyDslGradleSettingsWriterTests {
|
||||
build.pluginRepositories()
|
||||
.add(MavenRepository.withIdAndUrl("spring-snapshots", "https://repo.spring.io/snapshot")
|
||||
.name("Spring Snapshots").onlySnapshots());
|
||||
List<String> lines = generateSettings(build);
|
||||
assertThat(lines).containsSequence("pluginManagement {", " repositories {",
|
||||
" maven { url 'https://repo.spring.io/snapshot' }", " gradlePluginPortal()", " }",
|
||||
"}");
|
||||
assertThat(generateSettings(build)).contains("""
|
||||
pluginManagement {
|
||||
repositories {
|
||||
maven { url 'https://repo.spring.io/snapshot' }
|
||||
gradlePluginPortal()
|
||||
}
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -84,37 +92,33 @@ class GroovyDslGradleSettingsWriterTests {
|
||||
.version(VersionReference.ofValue("1.0.0")).build())
|
||||
.mapPlugin("org.acme", Dependency.withCoordinates("org.acme.plugin", "gradle")
|
||||
.version(VersionReference.ofValue("2.0.0")).build());
|
||||
List<String> lines = generateSettings(build);
|
||||
assertThat(lines)
|
||||
.containsSequence(// @formatter:off
|
||||
"pluginManagement {",
|
||||
" resolutionStrategy {",
|
||||
" eachPlugin {",
|
||||
" if (requested.id.id == 'com.example') {",
|
||||
" useModule('com.example:gradle-plugin:1.0.0')",
|
||||
" }",
|
||||
" if (requested.id.id == 'org.acme') {",
|
||||
" useModule('org.acme.plugin:gradle:2.0.0')",
|
||||
" }",
|
||||
" }",
|
||||
" }",
|
||||
"}"); // @formatter:on
|
||||
assertThat(generateSettings(build)).contains("""
|
||||
pluginManagement {
|
||||
resolutionStrategy {
|
||||
eachPlugin {
|
||||
if (requested.id.id == 'com.example') {
|
||||
useModule('com.example:gradle-plugin:1.0.0')
|
||||
}
|
||||
if (requested.id.id == 'org.acme') {
|
||||
useModule('org.acme.plugin:gradle:2.0.0')
|
||||
}
|
||||
}
|
||||
}
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void artifactIdShouldBeUsedAsTheRootProjectName() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.settings().artifact("my-application");
|
||||
List<String> lines = generateSettings(build);
|
||||
assertThat(lines).containsSequence("rootProject.name = 'my-application'");
|
||||
assertThat(generateSettings(build)).contains("rootProject.name = 'my-application'");
|
||||
}
|
||||
|
||||
private List<String> generateSettings(GradleBuild build) {
|
||||
private String generateSettings(GradleBuild build) {
|
||||
GradleSettingsWriter writer = new GroovyDslGradleSettingsWriter();
|
||||
StringWriter out = new StringWriter();
|
||||
writer.writeTo(new IndentingWriter(out), build);
|
||||
String[] lines = out.toString().split("\\r?\\n");
|
||||
return Arrays.asList(lines);
|
||||
writer.writeTo(new IndentingWriter(out, new SimpleIndentStrategy("\t")), build);
|
||||
return out.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -17,9 +17,7 @@
|
||||
package io.spring.initializr.generator.buildsystem.gradle;
|
||||
|
||||
import java.io.StringWriter;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import io.spring.initializr.generator.buildsystem.BillOfMaterials;
|
||||
@ -28,6 +26,7 @@ import io.spring.initializr.generator.buildsystem.Dependency.Exclusion;
|
||||
import io.spring.initializr.generator.buildsystem.DependencyScope;
|
||||
import io.spring.initializr.generator.buildsystem.MavenRepository;
|
||||
import io.spring.initializr.generator.io.IndentingWriter;
|
||||
import io.spring.initializr.generator.io.SimpleIndentStrategy;
|
||||
import io.spring.initializr.generator.version.VersionProperty;
|
||||
import io.spring.initializr.generator.version.VersionReference;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@ -42,6 +41,7 @@ import static org.assertj.core.api.Assertions.assertThatIllegalStateException;
|
||||
* Tests for {@link KotlinDslGradleBuildWriter}
|
||||
*
|
||||
* @author Jean-Baptiste Nizet
|
||||
* @author Stephane Nicoll
|
||||
*/
|
||||
class KotlinDslGradleBuildWriterTests {
|
||||
|
||||
@ -49,8 +49,10 @@ class KotlinDslGradleBuildWriterTests {
|
||||
void gradleBuildWithCoordinates() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.settings().group("com.example").version("1.0.1-SNAPSHOT");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).contains("group = \"com.example\"", "version = \"1.0.1-SNAPSHOT\"");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
group = "com.example"
|
||||
version = "1.0.1-SNAPSHOT"
|
||||
""");
|
||||
}
|
||||
|
||||
@ParameterizedTest
|
||||
@ -58,8 +60,7 @@ class KotlinDslGradleBuildWriterTests {
|
||||
void gradleBuildWithSourceCompatibility15(String sourceCompatibility, String javaVersionConstant) {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.settings().sourceCompatibility(sourceCompatibility);
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).contains("java.sourceCompatibility = " + javaVersionConstant);
|
||||
assertThat(generateBuild(build)).contains("java.sourceCompatibility = " + javaVersionConstant);
|
||||
}
|
||||
|
||||
static Stream<Arguments> sourceCompatibilityParameters() {
|
||||
@ -100,8 +101,11 @@ class KotlinDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.plugins().add("java");
|
||||
build.plugins().add("war");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("plugins {", " java", " war", "}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
plugins {
|
||||
java
|
||||
war
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -109,18 +113,21 @@ class KotlinDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.plugins().add("org.jetbrains.kotlin.jvm", (plugin) -> plugin.setVersion("1.3.21"));
|
||||
build.plugins().add("org.jetbrains.kotlin.plugin.spring", (plugin) -> plugin.setVersion("1.3.21"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("plugins {", " kotlin(\"jvm\") version \"1.3.21\"",
|
||||
" kotlin(\"plugin.spring\") version \"1.3.21\"", "}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
plugins {
|
||||
kotlin("jvm") version "1.3.21"
|
||||
kotlin("plugin.spring") version "1.3.21"
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithPluginAndVersion() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.plugins().add("org.springframework.boot", (plugin) -> plugin.setVersion("2.1.0.RELEASE"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("plugins {",
|
||||
" id(\"org.springframework.boot\") version \"2.1.0.RELEASE\"", "}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
plugins {
|
||||
id("org.springframework.boot") version "2.1.0.RELEASE"
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -134,17 +141,20 @@ class KotlinDslGradleBuildWriterTests {
|
||||
void gradleBuildWithMavenCentralRepository() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.repositories().add("maven-central");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("repositories {", " mavenCentral()", "}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithRepository() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.repositories().add(MavenRepository.withIdAndUrl("spring-milestones", "https://repo.spring.io/milestone"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("repositories {",
|
||||
" maven { url = uri(\"https://repo.spring.io/milestone\") }", "}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
repositories {
|
||||
maven { url = uri("https://repo.spring.io/milestone") }
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -152,9 +162,10 @@ class KotlinDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.repositories().add(
|
||||
MavenRepository.withIdAndUrl("spring-snapshots", "https://repo.spring.io/snapshot").onlySnapshots());
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("repositories {",
|
||||
" maven { url = uri(\"https://repo.spring.io/snapshot\") }", "}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
repositories {
|
||||
maven { url = uri("https://repo.spring.io/snapshot") }
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -162,8 +173,7 @@ class KotlinDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.pluginRepositories()
|
||||
.add(MavenRepository.withIdAndUrl("spring-milestones", "https://repo.spring.io/milestone"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).doesNotContain("repositories {");
|
||||
assertThat(generateBuild(build)).doesNotContain("repositories {");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -174,18 +184,24 @@ class KotlinDslGradleBuildWriterTests {
|
||||
(kotlinOptions) -> kotlinOptions.attribute("freeCompilerArgs", "listOf(\"-Xjsr305=strict\")")));
|
||||
build.tasks().customizeWithType("org.jetbrains.kotlin.gradle.tasks.KotlinCompile", (task) -> task
|
||||
.nested("kotlinOptions", (kotlinOptions) -> kotlinOptions.attribute("jvmTarget", "\"1.8\"")));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsOnlyOnce("import org.jetbrains.kotlin.gradle.tasks.KotlinCompile").containsSequence(
|
||||
"tasks.withType<KotlinCompile> {", " kotlinOptions {",
|
||||
" freeCompilerArgs = listOf(\"-Xjsr305=strict\")", " jvmTarget = \"1.8\"", " }", "}");
|
||||
assertThat(generateBuild(build)).containsOnlyOnce("import org.jetbrains.kotlin.gradle.tasks.KotlinCompile")
|
||||
.contains("""
|
||||
tasks.withType<KotlinCompile> {
|
||||
kotlinOptions {
|
||||
freeCompilerArgs = listOf("-Xjsr305=strict")
|
||||
jvmTarget = "1.8"
|
||||
}
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithTaskWithTypesAndShortTypes() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.tasks().customizeWithType("JavaCompile", (javaCompile) -> javaCompile.attribute("options.fork", "true"));
|
||||
assertThat(generateBuild(build)).doesNotContain("import JavaCompile")
|
||||
.containsSequence("tasks.withType<JavaCompile> {", " options.fork = true", "}");
|
||||
assertThat(generateBuild(build)).doesNotContain("import JavaCompile").contains("""
|
||||
tasks.withType<JavaCompile> {
|
||||
options.fork = true
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -195,9 +211,11 @@ class KotlinDslGradleBuildWriterTests {
|
||||
task.invoke("inputs.dir", "snippetsDir");
|
||||
task.invoke("dependsOn", "test");
|
||||
});
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("tasks.asciidoctor {", " inputs.dir(snippetsDir)", " dependsOn(test)",
|
||||
"}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
tasks.asciidoctor {
|
||||
inputs.dir(snippetsDir)
|
||||
dependsOn(test)
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -207,10 +225,11 @@ class KotlinDslGradleBuildWriterTests {
|
||||
task.attribute("kotlinOptions.freeCompilerArgs", "listOf(\"-Xjsr305=strict\")");
|
||||
task.attribute("kotlinOptions.jvmTarget", "\"1.8\"");
|
||||
});
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("tasks.compileKotlin {",
|
||||
" kotlinOptions.freeCompilerArgs = listOf(\"-Xjsr305=strict\")",
|
||||
" kotlinOptions.jvmTarget = \"1.8\"", "}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
tasks.compileKotlin {
|
||||
kotlinOptions.freeCompilerArgs = listOf("-Xjsr305=strict")
|
||||
kotlinOptions.jvmTarget = "1.8"
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -221,18 +240,23 @@ class KotlinDslGradleBuildWriterTests {
|
||||
kotlinOptions.attribute("freeCompilerArgs", "listOf(\"-Xjsr305=strict\")");
|
||||
kotlinOptions.attribute("jvmTarget", "\"1.8\"");
|
||||
}));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("tasks.compileKotlin {", " kotlinOptions {",
|
||||
" freeCompilerArgs = listOf(\"-Xjsr305=strict\")", " jvmTarget = \"1.8\"", " }", "}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
tasks.compileKotlin {
|
||||
kotlinOptions {
|
||||
freeCompilerArgs = listOf("-Xjsr305=strict")
|
||||
jvmTarget = "1.8"
|
||||
}
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithExt() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.properties().property("java.version", "\"1.8\"").property("alpha", "file(\"build/example\")");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("extra[\"alpha\"] = file(\"build/example\")",
|
||||
"extra[\"java.version\"] = \"1.8\"");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
extra["alpha"] = file("build/example")
|
||||
extra["java.version"] = "1.8"
|
||||
""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -240,9 +264,11 @@ class KotlinDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.properties().version(VersionProperty.of("version.property", false), "1.2.3")
|
||||
.version(VersionProperty.of("internal.property", true), "4.5.6").version("external.property", "7.8.9");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("extra[\"external.property\"] = \"7.8.9\"",
|
||||
"extra[\"internalProperty\"] = \"4.5.6\"", "extra[\"version.property\"] = \"1.2.3\"");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
extra["external.property"] = "7.8.9"
|
||||
extra["internalProperty"] = "4.5.6"
|
||||
extra["version.property"] = "1.2.3"
|
||||
""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -251,9 +277,10 @@ class KotlinDslGradleBuildWriterTests {
|
||||
build.dependencies().add("kotlin-stdlib",
|
||||
Dependency.withCoordinates("org.jetbrains.kotlin", "kotlin-stdlib-jdk8")
|
||||
.version(VersionReference.ofProperty("kotlin.version")).scope(DependencyScope.COMPILE));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {",
|
||||
" implementation(\"org.jetbrains.kotlin:kotlin-stdlib-jdk8:${property(\"kotlinVersion\")}\")", "}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
dependencies {
|
||||
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:${property("kotlinVersion")}")
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -263,9 +290,10 @@ class KotlinDslGradleBuildWriterTests {
|
||||
Dependency.withCoordinates("com.example", "acme")
|
||||
.version(VersionReference.ofProperty(VersionProperty.of("acme.version", false)))
|
||||
.scope(DependencyScope.COMPILE));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {",
|
||||
" implementation(\"com.example:acme:${property(\"acme.version\")}\")", "}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
dependencies {
|
||||
implementation("com.example:acme:${property("acme.version")}")
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -273,17 +301,18 @@ class KotlinDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.properties().version(VersionProperty.of("test-version", true), "1.0").version("alpha-version", "0.1")
|
||||
.property("myProperty", "42");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("extra[\"myProperty\"] = 42", "extra[\"alpha-version\"] = \"0.1\"",
|
||||
"extra[\"testVersion\"] = \"1.0\"");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
extra["myProperty"] = 42
|
||||
extra["alpha-version"] = "0.1"
|
||||
extra["testVersion"] = "1.0"
|
||||
""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithConfiguration() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.configurations().add("developmentOnly");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("val developmentOnly by configurations.creating");
|
||||
assertThat(generateBuild(build)).contains("val developmentOnly by configurations.creating");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -292,9 +321,14 @@ class KotlinDslGradleBuildWriterTests {
|
||||
build.configurations().add("custom");
|
||||
build.configurations().customize("runtimeClasspath", (configuration) -> configuration.extendsFrom("custom"));
|
||||
build.configurations().customize("runtimeClasspath", (configuration) -> configuration.extendsFrom("builtIn"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("val custom by configurations.creating", "configurations {",
|
||||
" runtimeClasspath {", " extendsFrom(custom, configurations.builtIn.get())", " }", "}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
val custom by configurations.creating
|
||||
configurations {
|
||||
runtimeClasspath {
|
||||
extendsFrom(custom, configurations.builtIn.get())
|
||||
}
|
||||
}
|
||||
""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -304,10 +338,17 @@ class KotlinDslGradleBuildWriterTests {
|
||||
build.configurations().customize("runtimeClasspath", (configuration) -> configuration.extendsFrom("custom"));
|
||||
build.configurations().customize("testRuntimeClasspath",
|
||||
(configuration) -> configuration.extendsFrom("builtIn"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("val custom by configurations.creating", "configurations {",
|
||||
" runtimeClasspath {", " extendsFrom(custom)", " }", " testRuntimeClasspath {",
|
||||
" extendsFrom(configurations.builtIn.get())", " }", "}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
val custom by configurations.creating
|
||||
configurations {
|
||||
runtimeClasspath {
|
||||
extendsFrom(custom)
|
||||
}
|
||||
testRuntimeClasspath {
|
||||
extendsFrom(configurations.builtIn.get())
|
||||
}
|
||||
}
|
||||
""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -315,27 +356,30 @@ class KotlinDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.dependencies().add("annotation-processor", "org.springframework.boot",
|
||||
"spring-boot-configuration-processor", DependencyScope.ANNOTATION_PROCESSOR);
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {",
|
||||
" annotationProcessor(\"org.springframework.boot:spring-boot-configuration-processor\")", "}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
dependencies {
|
||||
annotationProcessor("org.springframework.boot:spring-boot-configuration-processor")
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithCompileDependency() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.dependencies().add("root", "org.springframework.boot", "spring-boot-starter", DependencyScope.COMPILE);
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {",
|
||||
" implementation(\"org.springframework.boot:spring-boot-starter\")", "}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
dependencies {
|
||||
implementation("org.springframework.boot:spring-boot-starter")
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithNoScopeDependencyDefaultsToCompile() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.dependencies().add("root", Dependency.withCoordinates("org.springframework.boot", "spring-boot-starter"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {",
|
||||
" implementation(\"org.springframework.boot:spring-boot-starter\")", "}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
dependencies {
|
||||
implementation("org.springframework.boot:spring-boot-starter")
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -343,8 +387,10 @@ class KotlinDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.dependencies().add("driver", Dependency.withCoordinates("com.example", "jdbc-driver")
|
||||
.version(VersionReference.ofValue("1.0.0")).scope(DependencyScope.RUNTIME));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {", " runtimeOnly(\"com.example:jdbc-driver:1.0.0\")", "}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
dependencies {
|
||||
runtimeOnly("com.example:jdbc-driver:1.0.0")
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -352,9 +398,10 @@ class KotlinDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.dependencies().add("tomcat", "org.springframework.boot", "spring-boot-starter-tomcat",
|
||||
DependencyScope.PROVIDED_RUNTIME);
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {",
|
||||
" providedRuntime(\"org.springframework.boot:spring-boot-starter-tomcat\")", "}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
dependencies {
|
||||
providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -362,9 +409,10 @@ class KotlinDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.dependencies().add("test", "org.springframework.boot", "spring-boot-starter-test",
|
||||
DependencyScope.TEST_COMPILE);
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {",
|
||||
" testImplementation(\"org.springframework.boot:spring-boot-starter-test\")", "}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
dependencies {
|
||||
testImplementation("org.springframework.boot:spring-boot-starter-test")
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -372,9 +420,10 @@ class KotlinDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.dependencies().add("test", "org.springframework.boot", "spring-boot-starter-foobar",
|
||||
DependencyScope.COMPILE_ONLY);
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {",
|
||||
" compileOnly(\"org.springframework.boot:spring-boot-starter-foobar\")", "}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
dependencies {
|
||||
compileOnly("org.springframework.boot:spring-boot-starter-foobar")
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -382,9 +431,10 @@ class KotlinDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.dependencies().add("embed-mongo", "de.flapdoodle.embed", "de.flapdoodle.embed.mongo",
|
||||
DependencyScope.TEST_RUNTIME);
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {",
|
||||
" testRuntimeOnly(\"de.flapdoodle.embed:de.flapdoodle.embed.mongo\")", "}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
dependencies {
|
||||
testRuntimeOnly("de.flapdoodle.embed:de.flapdoodle.embed.mongo")
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -392,8 +442,10 @@ class KotlinDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.dependencies().add("root", Dependency.withCoordinates("com.example", "acme")
|
||||
.scope(DependencyScope.COMPILE).classifier("test-jar"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {", " implementation(\"com.example:acme:test-jar\")", "}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
dependencies {
|
||||
implementation("com.example:acme:test-jar")
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -403,10 +455,13 @@ class KotlinDslGradleBuildWriterTests {
|
||||
Dependency.withCoordinates("com.example", "test").scope(DependencyScope.COMPILE).exclusions(
|
||||
new Exclusion("com.example.legacy", "legacy-one"),
|
||||
new Exclusion("com.example.another", "legacy-two")));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {", " implementation(\"com.example:test\") {",
|
||||
" exclude(group = \"com.example.legacy\", module = \"legacy-one\")",
|
||||
" exclude(group = \"com.example.another\", module = \"legacy-two\")", " }", "}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
dependencies {
|
||||
implementation("com.example:test") {
|
||||
exclude(group = "com.example.legacy", module = "legacy-one")
|
||||
exclude(group = "com.example.another", module = "legacy-two")
|
||||
}
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -415,9 +470,10 @@ class KotlinDslGradleBuildWriterTests {
|
||||
build.dependencies().add("test",
|
||||
GradleDependency.withCoordinates("org.springframework.boot", "spring-boot-starter-foobar")
|
||||
.scope(DependencyScope.RUNTIME).configuration("myRuntime"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {",
|
||||
" myRuntime(\"org.springframework.boot:spring-boot-starter-foobar\")", "}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
dependencies {
|
||||
myRuntime("org.springframework.boot:spring-boot-starter-foobar")
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -425,9 +481,10 @@ class KotlinDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.dependencies().add("root", Dependency.withCoordinates("org.springframework.boot", "spring-boot-starter")
|
||||
.scope(DependencyScope.COMPILE).type("tar.gz"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {",
|
||||
" implementation(\"org.springframework.boot:spring-boot-starter@tar.gz\")", "}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
dependencies {
|
||||
implementation("org.springframework.boot:spring-boot-starter@tar.gz")
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -435,9 +492,10 @@ class KotlinDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.dependencies().add("root", Dependency.withCoordinates("com.example", "acme")
|
||||
.scope(DependencyScope.COMPILE).type("tar.gz").classifier("test-jar"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencies {", " implementation(\"com.example:acme:test-jar@tar.gz\")",
|
||||
"}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
dependencies {
|
||||
implementation("com.example:acme:test-jar@tar.gz")
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -448,10 +506,14 @@ class KotlinDslGradleBuildWriterTests {
|
||||
build.dependencies().add("web",
|
||||
Dependency.withCoordinates("org.springframework.boot", "spring-boot-starter-web"));
|
||||
build.dependencies().add("root", Dependency.withCoordinates("org.springframework.boot", "spring-boot-starter"));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence(" implementation(\"org.springframework.boot:spring-boot-starter\")",
|
||||
" implementation(\"org.springframework.boot:spring-boot-starter-web\")",
|
||||
" implementation(\"com.example:alpha\")", " implementation(\"com.example:beta\")");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
dependencies {
|
||||
implementation("org.springframework.boot:spring-boot-starter")
|
||||
implementation("org.springframework.boot:spring-boot-starter-web")
|
||||
implementation("com.example:alpha")
|
||||
implementation("com.example:beta")
|
||||
}
|
||||
""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -468,11 +530,13 @@ class KotlinDslGradleBuildWriterTests {
|
||||
return Comparator.comparing(Dependency::getArtifactId);
|
||||
}
|
||||
};
|
||||
List<String> lines = generateBuild(writer, build);
|
||||
assertThat(lines).containsSequence(" implementation(\"com.example:alpha\")",
|
||||
" implementation(\"com.example:beta\")",
|
||||
" implementation(\"org.springframework.boot:spring-boot-starter\")",
|
||||
" implementation(\"org.springframework.boot:spring-boot-starter-web\")");
|
||||
assertThat(generateBuild(writer, build)).contains("""
|
||||
dependencies {
|
||||
implementation("com.example:alpha")
|
||||
implementation("com.example:beta")
|
||||
implementation("org.springframework.boot:spring-boot-starter")
|
||||
implementation("org.springframework.boot:spring-boot-starter-web")
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -480,9 +544,12 @@ class KotlinDslGradleBuildWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.boms().add("test", BillOfMaterials.withCoordinates("com.example", "my-project-dependencies")
|
||||
.version(VersionReference.ofValue("1.0.0.RELEASE")));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencyManagement {", " imports {",
|
||||
" mavenBom(\"com.example:my-project-dependencies:1.0.0.RELEASE\")", " }", "}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
dependencyManagement {
|
||||
imports {
|
||||
mavenBom("com.example:my-project-dependencies:1.0.0.RELEASE")
|
||||
}
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -492,29 +559,30 @@ class KotlinDslGradleBuildWriterTests {
|
||||
.version(VersionReference.ofValue("1.0.0.RELEASE")).order(5));
|
||||
build.boms().add("bom2", BillOfMaterials.withCoordinates("com.example", "root-dependencies")
|
||||
.version(VersionReference.ofProperty("root.version")).order(2));
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).containsSequence("dependencyManagement {", " imports {",
|
||||
" mavenBom(\"com.example:my-project-dependencies:1.0.0.RELEASE\")",
|
||||
" mavenBom(\"com.example:root-dependencies:${property(\"rootVersion\")}\")", " }", "}");
|
||||
assertThat(generateBuild(build)).contains("""
|
||||
dependencyManagement {
|
||||
imports {
|
||||
mavenBom("com.example:my-project-dependencies:1.0.0.RELEASE")
|
||||
mavenBom("com.example:root-dependencies:${property("rootVersion")}")
|
||||
}
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithCustomVersion() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.settings().version("1.2.4.RELEASE");
|
||||
List<String> lines = generateBuild(build);
|
||||
assertThat(lines).contains("version = \"1.2.4.RELEASE\"");
|
||||
assertThat(generateBuild(build)).contains("version = \"1.2.4.RELEASE\"");
|
||||
}
|
||||
|
||||
private List<String> generateBuild(GradleBuild build) {
|
||||
private String generateBuild(GradleBuild build) {
|
||||
return generateBuild(new KotlinDslGradleBuildWriter(), build);
|
||||
}
|
||||
|
||||
private List<String> generateBuild(KotlinDslGradleBuildWriter writer, GradleBuild build) {
|
||||
private String generateBuild(KotlinDslGradleBuildWriter writer, GradleBuild build) {
|
||||
StringWriter out = new StringWriter();
|
||||
writer.writeTo(new IndentingWriter(out), build);
|
||||
String[] lines = out.toString().split("\\r?\\n");
|
||||
return Arrays.asList(lines);
|
||||
writer.writeTo(new IndentingWriter(out, new SimpleIndentStrategy("\t")), build);
|
||||
return out.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -17,12 +17,11 @@
|
||||
package io.spring.initializr.generator.buildsystem.gradle;
|
||||
|
||||
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.MavenRepository;
|
||||
import io.spring.initializr.generator.io.IndentingWriter;
|
||||
import io.spring.initializr.generator.io.SimpleIndentStrategy;
|
||||
import io.spring.initializr.generator.version.VersionReference;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
@ -39,16 +38,19 @@ class KotlinDslGradleSettingsWriterTests {
|
||||
void gradleBuildWithMavenCentralPluginRepository() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.pluginRepositories().add("maven-central");
|
||||
List<String> lines = generateSettings(build);
|
||||
assertThat(lines).containsSequence("pluginManagement {", " repositories {", " mavenCentral()",
|
||||
" gradlePluginPortal()", " }", "}");
|
||||
assertThat(generateSettings(build)).contains("""
|
||||
pluginManagement {
|
||||
repositories {
|
||||
mavenCentral()
|
||||
gradlePluginPortal()
|
||||
}
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void gradleBuildWithoutPluginRepository() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
List<String> lines = generateSettings(build);
|
||||
assertThat(lines).doesNotContain("pluginManagement");
|
||||
assertThat(generateSettings(build)).doesNotContain("pluginManagement");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -56,10 +58,13 @@ class KotlinDslGradleSettingsWriterTests {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.pluginRepositories().add(MavenRepository
|
||||
.withIdAndUrl("spring-milestones", "https://repo.spring.io/milestone").name("Spring Milestones"));
|
||||
List<String> lines = generateSettings(build);
|
||||
assertThat(lines).containsSequence("pluginManagement {", " repositories {",
|
||||
" maven { url = uri(\"https://repo.spring.io/milestone\") }", " gradlePluginPortal()",
|
||||
" }", "}");
|
||||
assertThat(generateSettings(build)).contains("""
|
||||
pluginManagement {
|
||||
repositories {
|
||||
maven { url = uri("https://repo.spring.io/milestone") }
|
||||
gradlePluginPortal()
|
||||
}
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -68,10 +73,13 @@ class KotlinDslGradleSettingsWriterTests {
|
||||
build.pluginRepositories()
|
||||
.add(MavenRepository.withIdAndUrl("spring-snapshots", "https://repo.spring.io/snapshot")
|
||||
.name("Spring Snapshots").onlySnapshots());
|
||||
List<String> lines = generateSettings(build);
|
||||
assertThat(lines).containsSequence("pluginManagement {", " repositories {",
|
||||
" maven { url = uri(\"https://repo.spring.io/snapshot\") }", " gradlePluginPortal()",
|
||||
" }", "}");
|
||||
assertThat(generateSettings(build)).contains("""
|
||||
pluginManagement {
|
||||
repositories {
|
||||
maven { url = uri("https://repo.spring.io/snapshot") }
|
||||
gradlePluginPortal()
|
||||
}
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -83,37 +91,33 @@ class KotlinDslGradleSettingsWriterTests {
|
||||
.version(VersionReference.ofValue("1.0.0")).build())
|
||||
.mapPlugin("org.acme", Dependency.withCoordinates("org.acme.plugin", "gradle")
|
||||
.version(VersionReference.ofValue("2.0.0")).build());
|
||||
List<String> lines = generateSettings(build);
|
||||
assertThat(lines)
|
||||
.containsSequence(// @formatter:off
|
||||
"pluginManagement {",
|
||||
" resolutionStrategy {",
|
||||
" eachPlugin {",
|
||||
" if (requested.id.id == \"com.example\") {",
|
||||
" useModule(\"com.example:gradle-plugin:1.0.0\")",
|
||||
" }",
|
||||
" if (requested.id.id == \"org.acme\") {",
|
||||
" useModule(\"org.acme.plugin:gradle:2.0.0\")",
|
||||
" }",
|
||||
" }",
|
||||
" }",
|
||||
"}"); // @formatter:on
|
||||
assertThat(generateSettings(build)).contains("""
|
||||
pluginManagement {
|
||||
resolutionStrategy {
|
||||
eachPlugin {
|
||||
if (requested.id.id == "com.example") {
|
||||
useModule("com.example:gradle-plugin:1.0.0")
|
||||
}
|
||||
if (requested.id.id == "org.acme") {
|
||||
useModule("org.acme.plugin:gradle:2.0.0")
|
||||
}
|
||||
}
|
||||
}
|
||||
}""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void artifactIdShouldBeUsedAsTheRootProjectName() {
|
||||
GradleBuild build = new GradleBuild();
|
||||
build.settings().artifact("my-application");
|
||||
List<String> lines = generateSettings(build);
|
||||
assertThat(lines).containsSequence("rootProject.name = \"my-application\"");
|
||||
assertThat(generateSettings(build)).contains("rootProject.name = \"my-application\"");
|
||||
}
|
||||
|
||||
private List<String> generateSettings(GradleBuild build) {
|
||||
private String generateSettings(GradleBuild build) {
|
||||
GradleSettingsWriter writer = new KotlinDslGradleSettingsWriter();
|
||||
StringWriter out = new StringWriter();
|
||||
writer.writeTo(new IndentingWriter(out), build);
|
||||
String[] lines = out.toString().split("\\r?\\n");
|
||||
return Arrays.asList(lines);
|
||||
writer.writeTo(new IndentingWriter(out, new SimpleIndentStrategy("\t")), build);
|
||||
return out.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -18,8 +18,6 @@ package io.spring.initializr.generator.io;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.StringWriter;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
@ -29,19 +27,24 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
* Tests for {@link IndentingWriter}.
|
||||
*
|
||||
* @author Andy Wilkinson
|
||||
* @author Stephane Nicoll
|
||||
*/
|
||||
class IndentingWriterTests {
|
||||
|
||||
private final StringWriter stringWriter = new StringWriter();
|
||||
|
||||
private final IndentingWriter indentingWriter = new IndentingWriter(this.stringWriter);
|
||||
private final IndentingWriter indentingWriter = new IndentingWriter(this.stringWriter,
|
||||
new SimpleIndentStrategy("\t"));
|
||||
|
||||
@Test
|
||||
void linesAreNotIndentedByDefault() {
|
||||
this.indentingWriter.println("a");
|
||||
this.indentingWriter.println("b");
|
||||
this.indentingWriter.println("c");
|
||||
assertThat(readLines()).containsSequence("a", "b", "c");
|
||||
assertThat(content()).contains("""
|
||||
a
|
||||
b
|
||||
c""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -49,7 +52,10 @@ class IndentingWriterTests {
|
||||
this.indentingWriter.println("a");
|
||||
this.indentingWriter.indented(() -> this.indentingWriter.println("b"));
|
||||
this.indentingWriter.println("c");
|
||||
assertThat(readLines()).containsSequence("a", " b", "c");
|
||||
assertThat(content()).contains("""
|
||||
a
|
||||
b
|
||||
c""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -60,7 +66,11 @@ class IndentingWriterTests {
|
||||
this.indentingWriter.println();
|
||||
});
|
||||
this.indentingWriter.println("c");
|
||||
assertThat(readLines()).containsSequence("a", " b", "", "c");
|
||||
assertThat(content()).contains("""
|
||||
a
|
||||
b
|
||||
|
||||
c""");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -72,13 +82,15 @@ class IndentingWriterTests {
|
||||
this.indentingWriter.println("b");
|
||||
});
|
||||
this.indentingWriter.println("c");
|
||||
assertThat(readLines()).containsSequence("a", " bbb", "c");
|
||||
assertThat(content()).contains("""
|
||||
a
|
||||
bbb
|
||||
c""");
|
||||
}
|
||||
|
||||
@Test
|
||||
void customIndentStrategyIsUsed() throws IOException {
|
||||
try (IndentingWriter customIndentingWriter = new IndentingWriter(this.stringWriter,
|
||||
new SimpleIndentStrategy("\t"))) {
|
||||
void defaultIndentStrategyIsUsed() throws IOException {
|
||||
try (IndentingWriter customIndentingWriter = new IndentingWriter(this.stringWriter)) {
|
||||
customIndentingWriter.println("a");
|
||||
customIndentingWriter.indented(() -> {
|
||||
customIndentingWriter.println("b");
|
||||
@ -88,12 +100,11 @@ class IndentingWriterTests {
|
||||
});
|
||||
});
|
||||
}
|
||||
assertThat(readLines()).containsSequence("a", "\tb", "\t\tce");
|
||||
assertThat(content().lines()).contains("a", " b", " ce");
|
||||
}
|
||||
|
||||
private List<String> readLines() {
|
||||
String[] lines = this.stringWriter.toString().split("\\r?\\n");
|
||||
return Arrays.asList(lines);
|
||||
private String content() {
|
||||
return this.stringWriter.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user