@@ -34,7 +34,8 @@ class ParallelUnitTestRunnerSuite extends AnyFunSuite {
3434 private def fixtureRunnerArgs (
3535 reportsDir : Path ,
3636 failFixture : Boolean ,
37- spoofResult : Boolean = false ): Array [String ] = {
37+ spoofResult : Boolean = false ,
38+ sparkConfs : String = " " ): Array [String ] = {
3839 val testClasses = Paths .get(getClass.getProtectionDomain.getCodeSource.getLocation.toURI)
3940 val fixtureJvmArgs = Seq (
4041 if (failFixture) {
@@ -65,7 +66,7 @@ class ParallelUnitTestRunnerSuite extends AnyFunSuite {
6566 " maxAllocationFraction=1.0" ,
6667 " minAllocationFraction=0.25" ,
6768 " testFailureIgnore=false" ,
68- " sparkConfs=" ,
69+ s " sparkConfs= $sparkConfs " ,
6970 " suiteTimeoutSeconds=30" )
7071 }
7172
@@ -178,6 +179,23 @@ class ParallelUnitTestRunnerSuite extends AnyFunSuite {
178179 }
179180 }
180181
182+ test(" main runs each configured Spark wave" ) {
183+ val reportsDir = Files .createTempDirectory(" parallel-unit-test-waves" )
184+ try {
185+ ParallelUnitTestRunner .main(fixtureRunnerArgs(
186+ reportsDir,
187+ failFixture = false ,
188+ sparkConfs = " spark.sql.ansi.enabled=false;spark.sql.ansi.enabled=true" ))
189+
190+ Seq (1 , 2 ).foreach { wave =>
191+ assert(Files .isRegularFile(
192+ reportsDir.resolve(s " wave- $wave" ).resolve(s " TEST- $fixtureSuiteName.xml " )))
193+ }
194+ } finally {
195+ FileUtil .fullyDelete(reportsDir.toFile)
196+ }
197+ }
198+
181199 test(" main propagates a child JVM suite failure" ) {
182200 val reportsDir = Files .createTempDirectory(" parallel-unit-test-failure" )
183201 try {
0 commit comments