@@ -51,6 +51,7 @@ class VagrantTestPlugin implements Plugin<Project> {
51
51
static List<String > UPGRADE_FROM_ARCHIVES = [' rpm' , ' deb' ]
52
52
53
53
private static final PACKAGING_CONFIGURATION = ' packaging'
54
+ private static final PACKAGING_TEST_CONFIGURATION = ' packagingTest'
54
55
private static final BATS = ' bats'
55
56
private static final String BATS_TEST_COMMAND = " cd \$ PACKAGING_ARCHIVES && sudo bats --tap \$ BATS_TESTS/*.$BATS "
56
57
private static final String PLATFORM_TEST_COMMAND = " rm -rf ~/elasticsearch && rsync -r /elasticsearch/ ~/elasticsearch && cd ~/elasticsearch && ./gradlew test integTest"
@@ -66,6 +67,7 @@ class VagrantTestPlugin implements Plugin<Project> {
66
67
67
68
// Creates custom configurations for Bats testing files (and associated scripts and archives)
68
69
createPackagingConfiguration(project)
70
+ project. configurations. create(PACKAGING_TEST_CONFIGURATION )
69
71
70
72
// Creates all the main Vagrant tasks
71
73
createVagrantTasks(project)
@@ -144,10 +146,12 @@ class VagrantTestPlugin implements Plugin<Project> {
144
146
}
145
147
146
148
private static void createCleanTask (Project project ) {
147
- project. tasks. create(' clean' , Delete . class) {
148
- description ' Clean the project build directory'
149
- group ' Build'
150
- delete project. buildDir
149
+ if (project. tasks. findByName(' clean' ) == null ) {
150
+ project. tasks. create(' clean' , Delete . class) {
151
+ description ' Clean the project build directory'
152
+ group ' Build'
153
+ delete project. buildDir
154
+ }
151
155
}
152
156
}
153
157
@@ -174,6 +178,18 @@ class VagrantTestPlugin implements Plugin<Project> {
174
178
from project. configurations[PACKAGING_CONFIGURATION ]
175
179
}
176
180
181
+ File testsDir = new File (packagingDir, ' tests' )
182
+ Copy copyPackagingTests = project. tasks. create(' copyPackagingTests' , Copy ) {
183
+ into testsDir
184
+ from project. configurations[PACKAGING_TEST_CONFIGURATION ]
185
+ }
186
+
187
+ Task createTestRunnerScript = project. tasks. create(' createTestRunnerScript' , FileContentsTask ) {
188
+ dependsOn copyPackagingTests
189
+ file " ${ testsDir} /run-tests.sh"
190
+ contents " java -cp \"\$ PACKAGING_TESTS/*\" org.junit.runner.JUnitCore ${ -> project.extensions.esvagrant.testClass} "
191
+ }
192
+
177
193
Task createVersionFile = project. tasks. create(' createVersionFile' , FileContentsTask ) {
178
194
dependsOn copyPackagingArchives
179
195
file " ${ archivesDir} /version"
@@ -234,7 +250,8 @@ class VagrantTestPlugin implements Plugin<Project> {
234
250
235
251
Task vagrantSetUpTask = project. tasks. create(' setupPackagingTest' )
236
252
vagrantSetUpTask. dependsOn ' vagrantCheckVersion'
237
- vagrantSetUpTask. dependsOn copyPackagingArchives, createVersionFile, createUpgradeFromFile, createUpgradeIsOssFile
253
+ vagrantSetUpTask. dependsOn copyPackagingArchives, copyPackagingTests, createTestRunnerScript
254
+ vagrantSetUpTask. dependsOn createVersionFile, createUpgradeFromFile, createUpgradeIsOssFile
238
255
vagrantSetUpTask. dependsOn copyBatsTests, copyBatsUtils
239
256
}
240
257
@@ -393,20 +410,29 @@ class VagrantTestPlugin implements Plugin<Project> {
393
410
packagingTest. dependsOn(batsPackagingTest)
394
411
}
395
412
396
- // This task doesn't do anything yet. In the future it will execute a jar containing tests on the vm
397
- Task groovyPackagingTest = project. tasks. create(" vagrant${ boxTask} #groovyPackagingTest" )
398
- groovyPackagingTest. dependsOn(up)
399
- groovyPackagingTest. finalizedBy(halt)
413
+ Task javaPackagingTest = project. tasks. create(" vagrant${ boxTask} #javaPackagingTest" , VagrantCommandTask ) {
414
+ command ' ssh'
415
+ boxName box
416
+ environmentVars vagrantEnvVars
417
+ dependsOn up, setupPackagingTest
418
+ finalizedBy halt
419
+ args ' --command' , " bash \"\$ PACKAGING_TESTS/run-tests.sh\" "
420
+ }
421
+
422
+ // todo remove this onlyIf after all packaging tests are consolidated
423
+ javaPackagingTest. onlyIf {
424
+ project. extensions. esvagrant. testClass != null
425
+ }
400
426
401
- TaskExecutionAdapter groovyPackagingReproListener = createReproListener(project, groovyPackagingTest . path)
402
- groovyPackagingTest . doFirst {
403
- project. gradle. addListener(groovyPackagingReproListener )
427
+ TaskExecutionAdapter javaPackagingReproListener = createReproListener(project, javaPackagingTest . path)
428
+ javaPackagingTest . doFirst {
429
+ project. gradle. addListener(javaPackagingReproListener )
404
430
}
405
- groovyPackagingTest . doLast {
406
- project. gradle. removeListener(groovyPackagingReproListener )
431
+ javaPackagingTest . doLast {
432
+ project. gradle. removeListener(javaPackagingReproListener )
407
433
}
408
434
if (project. extensions. esvagrant. boxes. contains(box)) {
409
- packagingTest. dependsOn(groovyPackagingTest )
435
+ packagingTest. dependsOn(javaPackagingTest )
410
436
}
411
437
412
438
Task platform = project. tasks. create(" vagrant${ boxTask} #platformTest" , VagrantCommandTask ) {
0 commit comments