JAL-629 Part-way to honouring --tests argument
authorBen Soares <b.soares@dundee.ac.uk>
Thu, 27 Apr 2023 20:16:55 +0000 (21:16 +0100)
committerBen Soares <b.soares@dundee.ac.uk>
Thu, 27 Apr 2023 20:16:55 +0000 (21:16 +0100)
build.gradle

index 6d0eedd..995d012 100644 (file)
@@ -1735,6 +1735,21 @@ run.dependsOn compileJava
 compileTestJava.dependsOn compileJava
 
 
+
+test {
+  group = "Verification"
+  description = "Runs all testTaskN tasks)"
+
+  if (useClover) {
+    dependsOn cloverClasses
+  } else { //?
+    dependsOn testClasses
+  }
+
+  // not running tests in this task
+  exclude "**/*"
+
+}
 /* testTask0 is the main test task */
 task testTask0(type: Test) {
   group = "Verification"
@@ -1760,6 +1775,20 @@ task testTask1(type: Test) {
   }
 }
 
+/* insert more testTaskNs here -- change N to next digit or other string */
+/*
+task testTaskN(type: Test) {
+  group = "Verification"
+  description = "Tests that need to be isolated from the main test run"
+  useTestNG() {
+    includeGroups name
+    excludeGroups testng_excluded_groups.split(",")
+    preserveOrder true
+    useDefaultListeners=true
+  }
+}
+*/
+
 /*
  * adapted from https://medium.com/@wasyl/pretty-tests-summary-in-gradle-744804dd676c
  * to summarise test results from all Test tasks
@@ -1798,8 +1827,8 @@ tasks.withType(Test).matching {t -> t.getName().startsWith("testTask")}.all { te
   ignoreFailures = true // Always try to run all tests for all modules
 
   afterSuite { desc, result ->
-
-    if (desc.parent) return // Only summarize results for whole modules
+    if (desc.parent)
+      return // Only summarize results for whole modules
 
     def resultsInfo = [testTask.project.name, testTask.name, result, TimeCategory.minus(new Date(result.endTime), new Date(result.startTime)), testTask.reports.html.entryPoint]
 
@@ -1825,11 +1854,18 @@ tasks.withType(Test).matching {t -> t.getName().startsWith("testTask")}.all { te
   jvmArgs += additional_compiler_args
 
   doFirst {
+    // this is not perfect yet -- we should only add the commandLineIncludePatterns to the
+    // testTasks that include the tests, and exclude all from the others.
+    // get --test argument
+    filter.commandLineIncludePatterns = test.filter.commandLineIncludePatterns
+
     if (useClover) {
       println("Running tests " + (useClover?"WITH":"WITHOUT") + " clover")
     }
   }
 
+  /* ensure the "test" task dependsOn all the testTasks */
+  test.dependsOn testTask
 }
 
 gradle.buildFinished {
@@ -1943,19 +1979,6 @@ private static void printResults(allResults) {
 }
 /* END of test tasks results summary */
 
-test {
-  // from original test task
-  if (useClover) {
-    dependsOn cloverClasses
-  } else { //?
-    dependsOn testClasses
-  }
-  dependsOn tasks.withType(Test).matching {t -> t.getName().startsWith("testTask")}
-
-  // not running tests in this task
-  exclude "**/*"
-}
-
 
 task compileLinkCheck(type: JavaCompile) {
   options.fork = true