JAL-3599 More stderr/stdout output to logs when anything
[jalview.git] / build.gradle
index 6a622c3..6517f43 100644 (file)
@@ -568,11 +568,13 @@ ext {
   jalviewjsJ2sAltSettingsFileName = string("${jalviewDir}/${jalviewjs_j2s_alt_settings}")
   jalviewjsJ2sProps = null
   jalviewjsJ2sPlugin = jalviewjs_j2s_plugin
+  jalviewjsStderrLaunchFilename = "${jalviewjsSiteDir}/"+(file(jalviewjs_stderr_launch).getName())
 
   eclipseWorkspace = null
   eclipseBinary = string("")
   eclipseVersion = string("")
   eclipseDebug = false
+  
   // ENDEXT
 }
 
@@ -2237,8 +2239,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)
@@ -2787,6 +2789,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,
@@ -4206,3 +4209,79 @@ task jalviewjs {
   dependsOn jalviewjsBuildSite
 }
 
+
+task jalviewjsCopyStderrLaunchFile(type: Copy) {
+  from file(jalviewjs_stderr_launch)
+  into jalviewjsSiteDir
+
+  inputs.file jalviewjs_stderr_launch
+  outputs.file jalviewjsStderrLaunchFilename
+}
+
+task jalviewjsChromiumProfile {
+  def profileDir = "${jalviewjsBuildDir}/${jalviewjs_chromium_user_dir}/${jalviewjs_chromium_profile_name}"
+  def firstRun = file("${profileDir}/First Run")
+
+  doFirst {
+    mkdir profileDir
+    firstRun.text = ""
+  }
+  
+  outputs.file firstRun
+}
+
+task jalviewjsLaunchTest(type: Exec) {
+  group "Test"
+  description "Check JalviewJS opens in a browser"
+  dependsOn jalviewjsBuildSite
+  dependsOn jalviewjsCopyStderrLaunchFile
+  dependsOn jalviewjsChromiumProfile
+
+  def chromiumBinary = jalviewjs_chromium_binary
+  if (chromiumBinary.startsWith("~/")) {
+    chromiumBinary = System.getProperty("user.home") + chromiumBinary.substring(1)
+  }
+  
+  doFirst {
+    def exec = file(chromiumBinary)
+    if (!exec.exists()) {
+      throw new GradleException("Could not find chromium binary '${chromiumBinary}'. Cannot run task ${name}.")
+    }
+  }
+
+  executable(chromiumBinary)
+  args([
+    "--headless=new",
+    "--timeout=60000",
+    "--virtual-time-budget=60000",
+    "--user-data-dir=${jalviewjsBuildDir}/${jalviewjs_chromium_user_dir}",
+    "--profile-directory=${jalviewjs_chromium_profile_name}",
+    "--allow-file-access-from-files",
+    "--enable-logging=stderr",
+    jalviewjsStderrLaunchFilename
+  ])
+
+  standardOutput = new ByteArrayOutputStream()
+  errorOutput = new ByteArrayOutputStream()
+  
+  doLast {
+    println("Chrome STDOUT: ")
+    println(standardOutput.toString())
+    println("Chrome STDERR: ")
+    println(errorOutput.toString())
+
+    def found = false
+    def stderr = errorOutput.toString()
+    stderr.eachLine { line ->
+      if (line.contains(jalviewjs_desktop_init_string)) {
+        println("Found line '"+line+"'")
+        found = true
+        return
+      }
+    }
+    if (!found) {
+      
+      throw new GradleException("Could not find evidence of Desktop launch in JalviewJS.")
+    }
+  }
+}