Start using the nebula-test plugin for integration testing
Also adding an integration test which actually verifies the production of a tar file See <https://github.com/nebula-plugins/nebula-test>
This commit is contained in:
parent
82b13201ae
commit
9611606b31
43
build.gradle
43
build.gradle
|
@ -10,6 +10,7 @@ buildscript {
|
|||
classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:1.1"
|
||||
classpath "com.gradle.publish:plugin-publish-plugin:0.9.0"
|
||||
classpath 'org.ysb33r.gradle:gradletest:0.5.3'
|
||||
classpath "com.netflix.nebula:nebula-project-plugin:2.2.1"
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -20,6 +21,7 @@ apply plugin: 'idea'
|
|||
apply plugin: "com.jfrog.bintray"
|
||||
apply plugin: "com.gradle.plugin-publish"
|
||||
apply plugin: 'org.ysb33r.gradletest'
|
||||
apply plugin: 'nebula.nebula-integtest'
|
||||
|
||||
version = '0.4.0'
|
||||
group = 'com.github.lookout'
|
||||
|
@ -29,8 +31,6 @@ description = 'Gradle plugin for building a prim and proper Lookout service arti
|
|||
// Dependency management
|
||||
////////////////////////
|
||||
configurations {
|
||||
integrationCompile.extendsFrom testCompile
|
||||
integrationRuntime.extendsFrom testRuntime
|
||||
gradleTest.extendsFrom compile
|
||||
}
|
||||
|
||||
|
@ -75,22 +75,20 @@ dependencies {
|
|||
exclude module: 'groovy-all'
|
||||
}
|
||||
testCompile 'cglib:cglib-nodep:2.2.+'
|
||||
|
||||
|
||||
integTestCompile('com.netflix.nebula:nebula-test:2.2.2+') {
|
||||
/* the nebula-test dependency pulls in a conflicting version of Groovy
|
||||
* so let's use the one we already have sitting around
|
||||
*/
|
||||
exclude module: 'groovy-all'
|
||||
}
|
||||
}
|
||||
////////////////////////
|
||||
|
||||
|
||||
// Tasks
|
||||
////////
|
||||
sourceSets {
|
||||
integration {
|
||||
groovy {
|
||||
srcDir file('src/integration/groovy')
|
||||
}
|
||||
|
||||
runtimeClasspath += main.output
|
||||
}
|
||||
}
|
||||
|
||||
test {
|
||||
maxParallelForks 2
|
||||
testLogging {
|
||||
|
@ -101,19 +99,6 @@ test {
|
|||
events "passed", "skipped", "failed", "standardOut", "standardError"
|
||||
}
|
||||
}
|
||||
|
||||
task integrationTest(type: Test) {
|
||||
maxParallelForks 2
|
||||
testClassesDir = sourceSets.integration.output.classesDir
|
||||
classpath = sourceSets.integration.runtimeClasspath
|
||||
testLogging {
|
||||
/* we want more test failure information, see:
|
||||
* <http://mrhaki.blogspot.com/2013/05/gradle-goodness-show-more-information.html>
|
||||
*/
|
||||
exceptionFormat = 'full'
|
||||
events "passed", "skipped", "failed", "standardOut", "standardError"
|
||||
}
|
||||
}
|
||||
check.dependsOn integrationTest
|
||||
|
||||
/* Whenever we're building an artifact, we should run the tests */
|
||||
|
@ -129,6 +114,14 @@ gradleTest {
|
|||
dependsOn jar
|
||||
}
|
||||
|
||||
integrationTest.testLogging {
|
||||
/* we want more test failure information, see:
|
||||
* <http://mrhaki.blogspot.com/2013/05/gradle-goodness-show-more-information.html>
|
||||
*/
|
||||
exceptionFormat = 'full'
|
||||
events "passed", "skipped", "failed", "standardOut", "standardError"
|
||||
}
|
||||
|
||||
codenarc {
|
||||
sourceSets = [sourceSets.main]
|
||||
configFile = file('gradle/codenarc.xml')
|
||||
|
|
|
@ -7,9 +7,12 @@
|
|||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/groovy" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/integTest/groovy" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/integTest/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/groovy" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/integTest/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build" />
|
||||
|
@ -17,6 +20,14 @@
|
|||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" exported="" name="Gradle: org.ajoberstar:grgit:1.1.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: org.asciidoctor:asciidoctor-gradle-plugin:1.5.2" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: com.netflix.nebula:gradle-dependency-lock-plugin:2.2.3" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: com.github.jruby-gradle:jruby-gradle-plugin:0.3.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: com.github.jruby-gradle:jruby-gradle-jar-plugin:0.3.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: com.github.jengelman.gradle.plugins:shadow:1.2.1" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.4.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: com.fasterxml.jackson.core:jackson-annotations:2.4.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: com.fasterxml.jackson.core:jackson-databind:2.4.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: org.eclipse.jgit:org.eclipse.jgit:3.7.0.201502260915-r" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: org.eclipse.jgit:org.eclipse.jgit.ui:3.7.0.201502260915-r" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: com.jcraft:jsch.agentproxy.jsch:0.0.7" level="project" />
|
||||
|
@ -25,28 +36,24 @@
|
|||
<orderEntry type="library" exported="" name="Gradle: com.jcraft:jsch.agentproxy.usocket-jna:0.0.7" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: com.jcraft:jsch.agentproxy.usocket-nc:0.0.7" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: org.slf4j:slf4j-api:1.7.7" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: com.netflix.nebula:gradle-scm-plugin:2.2.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: org.jdom:jdom2:2.0.5" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: org.ow2.asm:asm:5.0.3" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: org.ow2.asm:asm-commons:5.0.3" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: commons-io:commons-io:2.4" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: org.apache.ant:ant:1.9.4" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: com.fasterxml.jackson.core:jackson-core:2.4.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: com.jcraft:jsch:0.1.50" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: com.googlecode.javaewah:JavaEWAH:0.7.9" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: org.apache.httpcomponents:httpclient:4.1.3" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: com.jcraft:jsch.agentproxy.core:0.0.7" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: net.java.dev.jna:jna:3.4.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: net.java.dev.jna:platform:3.4.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: org.ow2.asm:asm-tree:5.0.3" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: org.apache.ant:ant-launcher:1.9.4" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: org.apache.httpcomponents:httpcore:4.1.4" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: commons-logging:commons-logging:1.1.1" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: commons-codec:commons-codec:1.4" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: org.spockframework:spock-core:1.0-groovy-2.3" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: cglib:cglib-nodep:2.2.2" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: junit:junit:4.12" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-core:1.3" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: org.asciidoctor:asciidoctor-gradle-plugin:1.5.2" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: com.github.jengelman.gradle.plugins:shadow:1.2.1" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: org.jdom:jdom2:2.0.5" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: org.ow2.asm:asm:5.0.3" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: org.ow2.asm:asm-commons:5.0.3" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: commons-io:commons-io:2.4" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: org.apache.ant:ant:1.9.4" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: org.ow2.asm:asm-tree:5.0.3" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: org.apache.ant:ant-launcher:1.9.4" level="project" />
|
||||
<orderEntry type="module-library" exported="">
|
||||
<library name="Gradle: gradle-core-2.0">
|
||||
<CLASSES>
|
||||
|
@ -1332,13 +1339,9 @@
|
|||
</SOURCES>
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="library" exported="" name="Gradle: com.github.jruby-gradle:jruby-gradle-plugin:0.3.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: com.github.jruby-gradle:jruby-gradle-jar-plugin:0.3.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: com.netflix.nebula:gradle-dependency-lock-plugin:2.2.3" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: com.netflix.nebula:gradle-scm-plugin:2.2.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.4.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: com.fasterxml.jackson.core:jackson-core:2.4.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: com.fasterxml.jackson.core:jackson-annotations:2.4.0" level="project" />
|
||||
<orderEntry type="library" exported="" name="Gradle: com.fasterxml.jackson.core:jackson-databind:2.4.0" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: org.spockframework:spock-core:1.0-groovy-2.3" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: cglib:cglib-nodep:2.2.2" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: junit:junit:4.12" level="project" />
|
||||
<orderEntry type="library" scope="TEST" name="Gradle: org.hamcrest:hamcrest-core:1.3" level="project" />
|
||||
</component>
|
||||
</module>
|
|
@ -6,21 +6,20 @@ import org.gradle.api.Project
|
|||
import org.gradle.api.artifacts.Configuration
|
||||
import org.gradle.testfixtures.ProjectBuilder
|
||||
|
||||
import nebula.test.PluginProjectSpec
|
||||
import nebula.test.IntegrationSpec
|
||||
|
||||
import com.github.jrubygradle.jar.JRubyJar
|
||||
|
||||
/**
|
||||
* Verify that the end-to-end JRuby support works
|
||||
*/
|
||||
class JRubyIntegrationSpec extends Specification {
|
||||
protected Project project
|
||||
class JRubyIntegrationSpec extends PluginProjectSpec {
|
||||
protected String serviceName = 'faas'
|
||||
protected String componentName = 'backend'
|
||||
protected String version = '1.1'
|
||||
protected String version = '1.1'
|
||||
|
||||
void setup() {
|
||||
project = ProjectBuilder.builder().build()
|
||||
project.apply plugin: 'com.github.lookout.service-artifact'
|
||||
}
|
||||
String getPluginName() { 'com.github.lookout.service-artifact' }
|
||||
|
||||
boolean hasJRubyPlugins(Project project) {
|
||||
return (project.plugins.findPlugin('com.github.jruby-gradle.base') &&
|
||||
|
@ -28,6 +27,7 @@ class JRubyIntegrationSpec extends Specification {
|
|||
}
|
||||
|
||||
void enableJRuby() {
|
||||
project.apply plugin: this.pluginName
|
||||
project.version = version
|
||||
project.service {
|
||||
name this.serviceName
|
||||
|
@ -59,4 +59,31 @@ class JRubyIntegrationSpec extends Specification {
|
|||
config
|
||||
config.artifacts.find { it.archiveTask instanceof JRubyJar }
|
||||
}
|
||||
}
|
||||
|
||||
class JRubyFullIntegrationSpec extends IntegrationSpec {
|
||||
|
||||
def "the assemble task should produce a tar"() {
|
||||
given:
|
||||
String version = '1.0'
|
||||
String projectName = 'fullinteg'
|
||||
settingsFile << "rootProject.name = '${projectName}'"
|
||||
buildFile << """
|
||||
apply plugin: 'com.github.lookout.service-artifact'
|
||||
|
||||
version = '${version}'
|
||||
|
||||
service {
|
||||
name '${projectName}'
|
||||
component('api', type: JRuby) { }
|
||||
}
|
||||
"""
|
||||
|
||||
/* XXX: why do I have to make the buildDir myself? */
|
||||
directory('build')
|
||||
|
||||
expect:
|
||||
runTasksSuccessfully('assemble')
|
||||
fileExists("build/distributions/${projectName}-${version}.tar")
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue