@@ -51,6 +51,7 @@ class VagrantTestPlugin implements Plugin<Project> {
5151 static List<String > UPGRADE_FROM_ARCHIVES = [' rpm' , ' deb' ]
5252
5353 private static final PACKAGING_CONFIGURATION = ' packaging'
54+ private static final PACKAGING_TEST_CONFIGURATION = ' packagingTest'
5455 private static final BATS = ' bats'
5556 private static final String BATS_TEST_COMMAND = " cd \$ PACKAGING_ARCHIVES && sudo bats --tap \$ BATS_TESTS/*.$BATS "
5657 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> {
6667
6768 // Creates custom configurations for Bats testing files (and associated scripts and archives)
6869 createPackagingConfiguration(project)
70+ project. configurations. create(PACKAGING_TEST_CONFIGURATION )
6971
7072 // Creates all the main Vagrant tasks
7173 createVagrantTasks(project)
@@ -144,10 +146,12 @@ class VagrantTestPlugin implements Plugin<Project> {
144146 }
145147
146148 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+ }
151155 }
152156 }
153157
@@ -174,6 +178,18 @@ class VagrantTestPlugin implements Plugin<Project> {
174178 from project. configurations[PACKAGING_CONFIGURATION ]
175179 }
176180
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+
177193 Task createVersionFile = project. tasks. create(' createVersionFile' , FileContentsTask ) {
178194 dependsOn copyPackagingArchives
179195 file " ${ archivesDir} /version"
@@ -234,7 +250,8 @@ class VagrantTestPlugin implements Plugin<Project> {
234250
235251 Task vagrantSetUpTask = project. tasks. create(' setupPackagingTest' )
236252 vagrantSetUpTask. dependsOn ' vagrantCheckVersion'
237- vagrantSetUpTask. dependsOn copyPackagingArchives, createVersionFile, createUpgradeFromFile, createUpgradeIsOssFile
253+ vagrantSetUpTask. dependsOn copyPackagingArchives, copyPackagingTests, createTestRunnerScript
254+ vagrantSetUpTask. dependsOn createVersionFile, createUpgradeFromFile, createUpgradeIsOssFile
238255 vagrantSetUpTask. dependsOn copyBatsTests, copyBatsUtils
239256 }
240257
@@ -393,20 +410,29 @@ class VagrantTestPlugin implements Plugin<Project> {
393410 packagingTest. dependsOn(batsPackagingTest)
394411 }
395412
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+ }
400426
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 )
404430 }
405- groovyPackagingTest . doLast {
406- project. gradle. removeListener(groovyPackagingReproListener )
431+ javaPackagingTest . doLast {
432+ project. gradle. removeListener(javaPackagingReproListener )
407433 }
408434 if (project. extensions. esvagrant. boxes. contains(box)) {
409- packagingTest. dependsOn(groovyPackagingTest )
435+ packagingTest. dependsOn(javaPackagingTest )
410436 }
411437
412438 Task platform = project. tasks. create(" vagrant${ boxTask} #platformTest" , VagrantCommandTask ) {
0 commit comments