JAL-629 Avoid hidden options dialog when saving in headless mode
[jalview.git] / build.gradle
index 6d0eedd..ca599a8 100644 (file)
@@ -1735,6 +1735,20 @@ 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 +1774,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
@@ -1784,22 +1812,26 @@ tasks.withType(Test).matching {t -> t.getName().startsWith("testTask")}.all { te
     testTask.mustRunAfter "testTask0"
 
   testTask.testLogging { logging ->
-    events TestLogEvent.FAILED,
-      TestLogEvent.SKIPPED,
-      TestLogEvent.STANDARD_OUT,
-      TestLogEvent.STANDARD_ERROR
+    events TestLogEvent.FAILED
+//      TestLogEvent.SKIPPED,
+//      TestLogEvent.STANDARD_OUT,
+//      TestLogEvent.STANDARD_ERROR
 
     exceptionFormat TestExceptionFormat.FULL
     showExceptions true
     showCauses true
     showStackTraces true
+
+    info.events = [ TestLogEvent.FAILED ]
   }
 
+
+
   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 +1857,25 @@ 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
+    // do something with testTask.getCandidateClassFiles() to see if the test should silently finish because of the
+    // commandLineIncludePatterns not matching anything.  Instead we are doing setFailOnNoMatchingTests(false) below
+
+
     if (useClover) {
       println("Running tests " + (useClover?"WITH":"WITHOUT") + " clover")
     }
   }
 
+
+  /* don't fail on no matching tests (so --tests will run across all testTasks) */
+  testTask.filter.setFailOnNoMatchingTests(false)
+
+  /* ensure the "test" task dependsOn all the testTasks */
+  test.dependsOn testTask
 }
 
 gradle.buildFinished {
@@ -1850,24 +1896,30 @@ private static String colString(styler, col, colour, text) {
 
 private static String getSummaryLine(s, pn, tn, rt, rc, rs, rf, rsk, t, col) {
   def colour = 'black'
+  def text = rt
   def nocol = false
-  switch(rt) {
-    case TestResult.ResultType.SUCCESS:
-      colour = 'green'
-      break;
-    case TestResult.ResultType.FAILURE:
-      colour = 'red'
-      break;
-    default:
-      nocol = true
-      break;
+  if (rc == 0) {
+    text = "-----"
+    nocol = true
+  } else {
+    switch(rt) {
+      case TestResult.ResultType.SUCCESS:
+        colour = 'green'
+        break;
+      case TestResult.ResultType.FAILURE:
+        colour = 'red'
+        break;
+      default:
+        nocol = true
+        break;
+    }
   }
   StringBuilder sb = new StringBuilder()
   sb.append("${pn}")
   if (tn != null)
     sb.append(":${tn}")
   sb.append(" results: ")
-  sb.append(colString(s, col && !nocol, colour, rt))
+  sb.append(colString(s, col && !nocol, colour, text))
   sb.append(" (")
   sb.append("${rc} tests, ")
   sb.append(colString(s, col && rs > 0, 'green', rs))
@@ -1943,19 +1995,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
@@ -2198,8 +2237,8 @@ task getdownWebsite() {
       props.put("getdown_txt_ui.instant_background_image", "${getdownImagesBuildDir}/${getdown_instant_background_image}")
       props.put("getdown_txt_ui.error_background", "${getdownImagesBuildDir}/${getdown_error_background}")
       props.put("getdown_txt_ui.progress_image", "${getdownImagesBuildDir}/${getdown_progress_image}")
-      props.put("getdown_txt_ui.icon", "${getdownImagesBuildDir}/${getdown_icon}")
-      props.put("getdown_txt_ui.mac_dock_icon", "${getdownImagesBuildDir}/${getdown_mac_dock_icon}")
+      props.put("getdown_txt_ui.icon", "${getdownImagesDir}/${getdown_icon}")
+      props.put("getdown_txt_ui.mac_dock_icon", "${getdownImagesDir}/${getdown_mac_dock_icon}")
     }
 
     props.put("getdown_txt_title", jalview_name)
@@ -2748,6 +2787,7 @@ task installerFiles(type: com.install4j.gradle.Install4jTask) {
     'WRAPPER_LINK': getdownWrapperLink,
     'BASH_WRAPPER_SCRIPT': getdown_bash_wrapper_script,
     'POWERSHELL_WRAPPER_SCRIPT': getdown_powershell_wrapper_script,
+    'BATCH_WRAPPER_SCRIPT': getdown_batch_wrapper_script,
     'WRAPPER_SCRIPT_BIN_DIR': getdown_wrapper_script_dir,
     'INSTALLER_NAME': install4jInstallerName,
     'INSTALL4J_UTILS_DIR': install4j_utils_dir,