Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
a685d9ec
Commit
a685d9ec
authored
May 31, 2017
by
Andy Wilkinson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Run Gradle integration tests against multiple versions of Gradle
Closes gh-9365
parent
5f3462f3
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
156 additions
and
16 deletions
+156
-16
GradleCompatibilitySuite.java
...framework/boot/gradle/junit/GradleCompatibilitySuite.java
+94
-0
ApplicationPluginActionIntegrationTests.java
...radle/plugin/ApplicationPluginActionIntegrationTests.java
+4
-1
DependencyManagementPluginActionIntegrationTests.java
...gin/DependencyManagementPluginActionIntegrationTests.java
+4
-1
JavaPluginActionIntegrationTests.java
.../boot/gradle/plugin/JavaPluginActionIntegrationTests.java
+4
-1
MavenPluginActionIntegrationTests.java
...boot/gradle/plugin/MavenPluginActionIntegrationTests.java
+4
-1
SpringBootPluginIntegrationTests.java
.../boot/gradle/plugin/SpringBootPluginIntegrationTests.java
+1
-1
WarPluginActionIntegrationTests.java
...k/boot/gradle/plugin/WarPluginActionIntegrationTests.java
+4
-1
BuildInfoIntegrationTests.java
...oot/gradle/tasks/buildinfo/BuildInfoIntegrationTests.java
+4
-1
AbstractBootArchiveIntegrationTests.java
...e/tasks/bundling/AbstractBootArchiveIntegrationTests.java
+4
-1
MavenIntegrationTests.java
...ork/boot/gradle/tasks/bundling/MavenIntegrationTests.java
+4
-1
MavenPublishingIntegrationTests.java
...radle/tasks/bundling/MavenPublishingIntegrationTests.java
+4
-1
BootRunIntegrationTests.java
...mework/boot/gradle/tasks/run/BootRunIntegrationTests.java
+13
-3
GradleBuild.java
.../org/springframework/boot/gradle/testkit/GradleBuild.java
+12
-3
No files found.
spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/junit/GradleCompatibilitySuite.java
0 → 100644
View file @
a685d9ec
/*
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org
.
springframework
.
boot
.
gradle
.
junit
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
org.gradle.api.Rule
;
import
org.junit.runner.Runner
;
import
org.junit.runners.BlockJUnit4ClassRunner
;
import
org.junit.runners.Suite
;
import
org.junit.runners.model.FrameworkMethod
;
import
org.junit.runners.model.InitializationError
;
import
org.springframework.boot.gradle.testkit.GradleBuild
;
/**
* Custom {@link Suite} that runs tests against multiple version of Gradle. Test classes
* using the suite must have a public {@link GradleBuild} field named {@code gradleBuild}
* and annotated with {@link Rule}.
*
* @author Andy Wilkinson
*/
public
final
class
GradleCompatibilitySuite
extends
Suite
{
private
static
final
List
<
String
>
GRADLE_VERSIONS
=
Arrays
.
asList
(
"default"
,
"3.4.1"
,
"3.5"
,
"4.0-rc-1"
);
public
GradleCompatibilitySuite
(
Class
<?>
clazz
)
throws
InitializationError
{
super
(
clazz
,
createRunners
(
clazz
));
}
private
static
List
<
Runner
>
createRunners
(
Class
<?>
clazz
)
throws
InitializationError
{
List
<
Runner
>
runners
=
new
ArrayList
<>();
for
(
String
version
:
GRADLE_VERSIONS
)
{
runners
.
add
(
new
GradleCompatibilityClassRunner
(
clazz
,
version
));
}
return
runners
;
}
private
static
final
class
GradleCompatibilityClassRunner
extends
BlockJUnit4ClassRunner
{
private
final
String
gradleVersion
;
private
GradleCompatibilityClassRunner
(
Class
<?>
klass
,
String
gradleVersion
)
throws
InitializationError
{
super
(
klass
);
this
.
gradleVersion
=
gradleVersion
;
}
@Override
protected
Object
createTest
()
throws
Exception
{
Object
test
=
super
.
createTest
();
configureTest
(
test
);
return
test
;
}
private
void
configureTest
(
Object
test
)
throws
Exception
{
GradleBuild
gradleBuild
=
new
GradleBuild
();
if
(!
"default"
.
equals
(
this
.
gradleVersion
))
{
gradleBuild
=
gradleBuild
.
gradleVersion
(
this
.
gradleVersion
);
}
test
.
getClass
().
getField
(
"gradleBuild"
).
set
(
test
,
gradleBuild
);
}
@Override
protected
String
getName
()
{
return
"Gradle "
+
this
.
gradleVersion
;
}
@Override
protected
String
testName
(
FrameworkMethod
method
)
{
return
method
.
getName
()
+
" ["
+
getName
()
+
"]"
;
}
}
}
spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/ApplicationPluginActionIntegrationTests.java
View file @
a685d9ec
...
...
@@ -30,7 +30,9 @@ import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
import
org.gradle.testkit.runner.TaskOutcome
;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.boot.gradle.junit.GradleCompatibilitySuite
;
import
org.springframework.boot.gradle.testkit.GradleBuild
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
...
...
@@ -40,10 +42,11 @@ import static org.assertj.core.api.Assertions.assertThat;
*
* @author Andy Wilkinson
*/
@RunWith
(
GradleCompatibilitySuite
.
class
)
public
class
ApplicationPluginActionIntegrationTests
{
@Rule
public
GradleBuild
gradleBuild
=
new
GradleBuild
()
;
public
GradleBuild
gradleBuild
;
@Test
public
void
noBootDistributionWithoutApplicationPluginApplied
()
{
...
...
spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/DependencyManagementPluginActionIntegrationTests.java
View file @
a685d9ec
...
...
@@ -23,7 +23,9 @@ import org.gradle.testkit.runner.BuildResult;
import
org.gradle.testkit.runner.TaskOutcome
;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.boot.gradle.junit.GradleCompatibilitySuite
;
import
org.springframework.boot.gradle.testkit.GradleBuild
;
import
org.springframework.util.FileSystemUtils
;
...
...
@@ -35,10 +37,11 @@ import static org.assertj.core.api.Assertions.assertThat;
*
* @author Andy Wilkinson
*/
@RunWith
(
GradleCompatibilitySuite
.
class
)
public
class
DependencyManagementPluginActionIntegrationTests
{
@Rule
public
GradleBuild
gradleBuild
=
new
GradleBuild
()
;
public
GradleBuild
gradleBuild
;
@Test
public
void
noDependencyManagementIsAppliedByDefault
()
{
...
...
spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/JavaPluginActionIntegrationTests.java
View file @
a685d9ec
...
...
@@ -22,7 +22,9 @@ import org.gradle.testkit.runner.BuildResult;
import
org.gradle.testkit.runner.TaskOutcome
;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.boot.gradle.junit.GradleCompatibilitySuite
;
import
org.springframework.boot.gradle.testkit.GradleBuild
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
...
...
@@ -32,10 +34,11 @@ import static org.assertj.core.api.Assertions.assertThat;
*
* @author Andy Wilkinson
*/
@RunWith
(
GradleCompatibilitySuite
.
class
)
public
class
JavaPluginActionIntegrationTests
{
@Rule
public
GradleBuild
gradleBuild
=
new
GradleBuild
()
;
public
GradleBuild
gradleBuild
;
@Test
public
void
noBootJarTaskWithoutJavaPluginApplied
()
{
...
...
spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/MavenPluginActionIntegrationTests.java
View file @
a685d9ec
...
...
@@ -18,7 +18,9 @@ package org.springframework.boot.gradle.plugin;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.boot.gradle.junit.GradleCompatibilitySuite
;
import
org.springframework.boot.gradle.testkit.GradleBuild
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
...
...
@@ -28,10 +30,11 @@ import static org.assertj.core.api.Assertions.assertThat;
*
* @author Andy Wilkinson
*/
@RunWith
(
GradleCompatibilitySuite
.
class
)
public
class
MavenPluginActionIntegrationTests
{
@Rule
public
GradleBuild
gradleBuild
=
new
GradleBuild
()
;
public
GradleBuild
gradleBuild
;
@Test
public
void
clearsConf2ScopeMappingsOfUploadBootArchivesTask
()
{
...
...
spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/SpringBootPluginIntegrationTests.java
View file @
a685d9ec
...
...
@@ -43,7 +43,7 @@ public class SpringBootPluginIntegrationTests {
@Test
public
void
succeedWithVersionOfGradleHigherThanRequired
()
{
this
.
gradleBuild
.
gradleVersion
(
"3.5
-rc-3
"
).
build
();
this
.
gradleBuild
.
gradleVersion
(
"3.5"
).
build
();
}
@Test
...
...
spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/plugin/WarPluginActionIntegrationTests.java
View file @
a685d9ec
...
...
@@ -22,7 +22,9 @@ import org.gradle.testkit.runner.BuildResult;
import
org.gradle.testkit.runner.TaskOutcome
;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.boot.gradle.junit.GradleCompatibilitySuite
;
import
org.springframework.boot.gradle.testkit.GradleBuild
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
...
...
@@ -32,10 +34,11 @@ import static org.assertj.core.api.Assertions.assertThat;
*
* @author Andy Wilkinson
*/
@RunWith
(
GradleCompatibilitySuite
.
class
)
public
class
WarPluginActionIntegrationTests
{
@Rule
public
GradleBuild
gradleBuild
=
new
GradleBuild
()
;
public
GradleBuild
gradleBuild
;
@Test
public
void
noBootWarTaskWithoutWarPluginApplied
()
{
...
...
spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/buildinfo/BuildInfoIntegrationTests.java
View file @
a685d9ec
...
...
@@ -24,7 +24,9 @@ import java.util.Properties;
import
org.gradle.testkit.runner.TaskOutcome
;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.boot.gradle.junit.GradleCompatibilitySuite
;
import
org.springframework.boot.gradle.testkit.GradleBuild
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
...
...
@@ -34,10 +36,11 @@ import static org.assertj.core.api.Assertions.assertThat;
*
* @author Andy Wilkinson
*/
@RunWith
(
GradleCompatibilitySuite
.
class
)
public
class
BuildInfoIntegrationTests
{
@Rule
public
final
GradleBuild
gradleBuild
=
new
GradleBuild
()
;
public
GradleBuild
gradleBuild
;
@Test
public
void
defaultValues
()
{
...
...
spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/AbstractBootArchiveIntegrationTests.java
View file @
a685d9ec
...
...
@@ -25,7 +25,9 @@ import org.gradle.testkit.runner.TaskOutcome;
import
org.gradle.testkit.runner.UnexpectedBuildFailure
;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.boot.gradle.junit.GradleCompatibilitySuite
;
import
org.springframework.boot.gradle.testkit.GradleBuild
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
...
...
@@ -35,10 +37,11 @@ import static org.assertj.core.api.Assertions.assertThat;
*
* @author Andy Wilkinson
*/
@RunWith
(
GradleCompatibilitySuite
.
class
)
public
abstract
class
AbstractBootArchiveIntegrationTests
{
@Rule
public
final
GradleBuild
gradleBuild
=
new
GradleBuild
()
;
public
GradleBuild
gradleBuild
;
private
final
String
taskName
;
...
...
spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/MavenIntegrationTests.java
View file @
a685d9ec
...
...
@@ -24,7 +24,9 @@ import org.gradle.testkit.runner.BuildResult;
import
org.gradle.testkit.runner.TaskOutcome
;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.boot.gradle.junit.GradleCompatibilitySuite
;
import
org.springframework.boot.gradle.testkit.GradleBuild
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
...
...
@@ -34,10 +36,11 @@ import static org.assertj.core.api.Assertions.assertThat;
*
* @author Andy Wilkinson
*/
@RunWith
(
GradleCompatibilitySuite
.
class
)
public
class
MavenIntegrationTests
{
@Rule
public
final
GradleBuild
gradleBuild
=
new
GradleBuild
()
;
public
GradleBuild
gradleBuild
;
@Test
public
void
bootJarCanBeUploaded
()
throws
FileNotFoundException
,
IOException
{
...
...
spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/bundling/MavenPublishingIntegrationTests.java
View file @
a685d9ec
...
...
@@ -24,7 +24,9 @@ import org.gradle.testkit.runner.BuildResult;
import
org.gradle.testkit.runner.TaskOutcome
;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.boot.gradle.junit.GradleCompatibilitySuite
;
import
org.springframework.boot.gradle.testkit.GradleBuild
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
...
...
@@ -35,10 +37,11 @@ import static org.assertj.core.api.Assertions.assertThat;
*
* @author Andy Wilkinson
*/
@RunWith
(
GradleCompatibilitySuite
.
class
)
public
class
MavenPublishingIntegrationTests
{
@Rule
public
final
GradleBuild
gradleBuild
=
new
GradleBuild
()
;
public
GradleBuild
gradleBuild
;
@Test
public
void
bootJarCanBePublished
()
throws
FileNotFoundException
,
IOException
{
...
...
spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/run/BootRunIntegrationTests.java
View file @
a685d9ec
...
...
@@ -23,7 +23,9 @@ import org.gradle.testkit.runner.BuildResult;
import
org.gradle.testkit.runner.TaskOutcome
;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.junit.runner.RunWith
;
import
org.springframework.boot.gradle.junit.GradleCompatibilitySuite
;
import
org.springframework.boot.gradle.testkit.GradleBuild
;
import
org.springframework.util.FileSystemUtils
;
...
...
@@ -34,10 +36,11 @@ import static org.assertj.core.api.Assertions.assertThat;
*
* @author Andy Wilkinson
*/
@RunWith
(
GradleCompatibilitySuite
.
class
)
public
class
BootRunIntegrationTests
{
@Rule
public
final
GradleBuild
gradleBuild
=
new
GradleBuild
()
;
public
GradleBuild
gradleBuild
;
@Test
public
void
basicExecution
()
throws
IOException
{
...
...
@@ -48,7 +51,7 @@ public class BootRunIntegrationTests {
new
File
(
this
.
gradleBuild
.
getProjectDir
(),
"src/main/resources"
).
mkdirs
();
BuildResult
result
=
this
.
gradleBuild
.
build
(
"bootRun"
);
assertThat
(
result
.
task
(
":bootRun"
).
getOutcome
()).
isEqualTo
(
TaskOutcome
.
SUCCESS
);
assertThat
(
result
.
getOutput
()).
contains
(
"1. "
+
urlOf
(
"build/classes/main"
));
assertThat
(
result
.
getOutput
()).
contains
(
"1. "
+
urlOf
(
mainJavaOutput
()
));
assertThat
(
result
.
getOutput
()).
contains
(
"2. "
+
urlOf
(
"build/resources/main"
));
assertThat
(
result
.
getOutput
()).
doesNotContain
(
urlOf
(
"src/main/resources"
));
}
...
...
@@ -62,7 +65,7 @@ public class BootRunIntegrationTests {
BuildResult
result
=
this
.
gradleBuild
.
build
(
"bootRun"
);
assertThat
(
result
.
task
(
":bootRun"
).
getOutcome
()).
isEqualTo
(
TaskOutcome
.
SUCCESS
);
assertThat
(
result
.
getOutput
()).
contains
(
"1. "
+
urlOf
(
"src/main/resources"
));
assertThat
(
result
.
getOutput
()).
contains
(
"2. "
+
urlOf
(
"build/classes/main"
));
assertThat
(
result
.
getOutput
()).
contains
(
"2. "
+
urlOf
(
mainJavaOutput
()
));
assertThat
(
result
.
getOutput
()).
doesNotContain
(
urlOf
(
"build/resources/main"
));
}
...
...
@@ -84,6 +87,13 @@ public class BootRunIntegrationTests {
.
contains
(
"JVM arguments = [-Dcom.foo=bar, -Dcom.bar=baz]"
);
}
private
String
mainJavaOutput
()
{
String
gradleVersion
=
this
.
gradleBuild
.
getGradleVersion
();
return
"build/classes/"
+
(
gradleVersion
!=
null
&&
gradleVersion
.
startsWith
(
"4."
)
?
"java/"
:
""
)
+
"main"
;
}
private
String
urlOf
(
String
path
)
throws
IOException
{
return
new
File
(
this
.
gradleBuild
.
getProjectDir
().
getCanonicalFile
(),
path
).
toURI
()
.
toURL
().
toString
();
...
...
spring-boot-tools/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/testkit/GradleBuild.java
View file @
a685d9ec
...
...
@@ -88,9 +88,13 @@ public class GradleBuild implements TestRule {
}
private
URL
getScriptForTestMethod
(
Description
description
)
{
return
description
.
getTestClass
()
.
getResource
(
description
.
getTestClass
().
getSimpleName
()
+
"-"
+
description
.
getMethodName
()
+
".gradle"
);
String
name
=
description
.
getTestClass
().
getSimpleName
()
+
"-"
+
removeGradleVersion
(
description
.
getMethodName
())
+
".gradle"
;
return
description
.
getTestClass
().
getResource
(
name
);
}
private
String
removeGradleVersion
(
String
methodName
)
{
return
methodName
.
replaceAll
(
"\\[Gradle .+\\]"
,
""
).
trim
();
}
private
URL
getScriptForTestClass
(
Class
<?>
testClass
)
{
...
...
@@ -157,6 +161,7 @@ public class GradleBuild implements TestRule {
List
<
String
>
allArguments
=
new
ArrayList
<
String
>();
allArguments
.
add
(
"-PpluginClasspath="
+
pluginClasspath
());
allArguments
.
add
(
"-PbootVersion="
+
getBootVersion
());
allArguments
.
add
(
"--stacktrace"
);
allArguments
.
addAll
(
Arrays
.
asList
(
arguments
));
return
gradleRunner
.
withArguments
(
allArguments
);
}
...
...
@@ -174,6 +179,10 @@ public class GradleBuild implements TestRule {
return
this
;
}
public
String
getGradleVersion
()
{
return
this
.
gradleVersion
;
}
private
static
String
getBootVersion
()
{
return
evaluateExpression
(
"/*[local-name()='project']/*[local-name()='parent']/*[local-name()='version']"
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment