JAL-1177 refactored command line test harness
[jalview.git] / test / jalview / bin / CommandLineOperations.java
index 19bc165..a1c41c7 100644 (file)
@@ -1,9 +1,28 @@
+/*
+ * Jalview - A Sequence Alignment Editor and Viewer (Version 2.8.0b1)
+ * Copyright (C) 2014 The Jalview Authors
+ * 
+ * This file is part of Jalview.
+ * 
+ * Jalview is free software: you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License 
+ * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
+ *  
+ * Jalview is distributed in the hope that it will be useful, but 
+ * WITHOUT ANY WARRANTY; without even the implied warranty 
+ * of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+ * PURPOSE.  See the GNU General Public License for more details.
+ * 
+ * You should have received a copy of the GNU General Public License along with Jalview.  If not, see <http://www.gnu.org/licenses/>.
+ * The Jalview Authors are detailed in the 'AUTHORS' file.
+ */
 package jalview.bin;
 
 import static org.junit.Assert.*;
 
 import java.io.BufferedReader;
 import java.io.File;
+import java.io.IOException;
 import java.io.InputStreamReader;
 
 import org.junit.AfterClass;
@@ -41,39 +60,79 @@ private static class Worker extends Thread {
     }
   }
 }
-  @Test
-  public void testHeadlessModeEPS() throws Exception
+private Worker jalviewDesktopRunner(boolean withAwt, String cmd, int timeout) throws InterruptedException, IOException
   {
-    String jalview_input = "examples/uniref50.fa";
-    String jalview_output = "test_uniref50_out.eps";
-    String cmd = "java -Djava.awt.headless=true -Djava.ext.dirs=./lib -classpath ./classes jalview.bin.Jalview -nodisplay -open "+ jalview_input + " -eps " + jalview_output;
+    String _cmd = "java "+(withAwt ? "-Djava.awt.headless=true":"")+" -Djava.ext.dirs=./lib -classpath ./classes jalview.bin.Jalview ";
+    System.out.println("###############Jalview CMD: " + _cmd+cmd);
+    Process ls2_proc = Runtime.getRuntime().exec(_cmd+cmd);
+    BufferedReader outputReader = new BufferedReader(new InputStreamReader(
+            ls2_proc.getInputStream()));
 
-    System.out.println("###############Jalview CMD: " + cmd);
-    Process ls2_proc = Runtime.getRuntime().exec(cmd);
-    BufferedReader outputReader = new BufferedReader(new InputStreamReader(ls2_proc.getInputStream()));
-        
-    BufferedReader errorReader = new BufferedReader(new InputStreamReader(ls2_proc.getErrorStream()));
+    BufferedReader errorReader = new BufferedReader(new InputStreamReader(
+            ls2_proc.getErrorStream()));
     Worker worker = new Worker(ls2_proc);
     worker.start();
-    worker.join(9000);
+    worker.join(timeout);
     System.out.println("Output:  ");
-    String ln=null;
-    while ((ln=outputReader.readLine())!=null) {
+    String ln = null;
+    while ((ln = outputReader.readLine()) != null)
+    {
       System.out.println(ln);
     }
-    
-    System.out.println("Error:  " );
-    while ((ln=errorReader.readLine())!=null) {
+
+    System.out.println("Error:  ");
+    while ((ln = errorReader.readLine()) != null)
+    {
       System.out.println(ln);
     }
-    assertTrue("Didn't create an output EPS file.", new File("test_uniref50_out.eps").exists());
-    assertTrue("Didn't create an EPS file with any content", new File("test_uniref50_out.eps").length()>4096);
+    return worker;
+  }
+  @Test
+  public void testHeadlessModeEPS() throws Exception
+  {
+    String[] headlessArgs=new String[] { "nodisplay","headless","nogui"};
+    for (String _harg:headlessArgs)
+    {
+      boolean _switch=false,withAwt=false;
+      do {
+        if (_switch)
+        {
+          withAwt=true;
+        }
+        _switch=true;
+    String jalview_input = "examples/uniref50.fa";
+    String jalview_output = "test_uniref50_out.eps";
+    String cmd = ""+_harg+" -open "+ jalview_input + " -eps " + jalview_output;
+    String harg = _harg+(withAwt ? "-Djava.awt.headless=true":" NO AWT.HEADLESS");
+    System.out.println("Testing with Headless argument: '"+harg+"'\n");
+    Worker worker = jalviewDesktopRunner(withAwt, cmd, 9000);
+    assertTrue("Didn't create an output EPS file.["+harg+"]", new File("test_uniref50_out.eps").exists());
+    assertTrue("Didn't create an EPS file with any content["+harg+"]", new File("test_uniref50_out.eps").length()>4096);
     if (worker.exit == null){
       worker.interrupt();
       Thread.currentThread().interrupt();
-      ls2_proc.destroy();
-      fail("Jalview did not exit after EPS generation (try running test again to verify - timeout at 9000ms).");
-}
+      worker.process.destroy();
+      fail("Jalview did not exit after EPS generation (try running test again to verify - timeout at 9000ms). ["+harg+"]");
+    }
+    } while (!withAwt);
+    } 
   }
-
+//  @Test
+//  public void testJalview2XMLDataset() throws Exception
+//  {
+//    String jalview_input = "examples/uniref50.fa";
+//    String jalview_output = "test_uniref50_out.eps";
+//    String cmd = ""+" -open "+ jalview_input + " -eps " + jalview_output;
+//    //String harg = _harg+(withAwt ? "-Djava.awt.headless=true":" NO AWT.HEADLESS");
+//    System.out.println("Testing with Headless argument: '"+harg+"'\n");
+//    Worker worker = jalviewDesktopRunner(withAwt, cmd, 9000);
+//    assertTrue("Didn't create an output EPS file.["+harg+"]", new File("test_uniref50_out.eps").exists());
+//    assertTrue("Didn't create an EPS file with any content["+harg+"]", new File("test_uniref50_out.eps").length()>4096);
+//    if (worker.exit == null){
+//      worker.interrupt();
+//      Thread.currentThread().interrupt();
+//      worker.process.destroy();
+//      fail("Jalview did not exit after EPS generation (try running test again to verify - timeout at 9000ms). ["+harg+"]");
+//    }
+//  }
 }