Merge branch 'features/1769_headless-mode-test' into develop
[jalview.git] / test / jalview / bin / CommandLineOperations.java
index d9d3bb3..05ada31 100644 (file)
@@ -26,9 +26,11 @@ import java.io.IOException;
 import java.io.InputStreamReader;
 
 import org.testng.Assert;
-import org.testng.AssertJUnit;
+import org.testng.FileAssert;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
+import org.testng.annotations.BeforeTest;
+import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
 public class CommandLineOperations
@@ -81,7 +83,7 @@ public class CommandLineOperations
     String _cmd = "java "
             + (withAwt ? "-Djava.awt.headless=true" : "")
             + " -Djava.ext.dirs=./lib -classpath ./classes jalview.bin.Jalview ";
-    System.out.println("###############Jalview CMD: " + _cmd + cmd);
+    System.out.println("############ Testing Jalview CMD: " + _cmd + cmd);
     Process ls2_proc = Runtime.getRuntime().exec(_cmd + cmd);
     BufferedReader outputReader = new BufferedReader(new InputStreamReader(
             ls2_proc.getInputStream()));
@@ -91,81 +93,125 @@ public class CommandLineOperations
     Worker worker = new Worker(ls2_proc);
     worker.start();
     worker.join(timeout);
-    System.out.println("Output:  ");
-    String ln = null;
-    while ((ln = outputReader.readLine()) != null)
+    // System.out.println("Output:  ");
+    // String ln = null;
+    // while ((ln = outputReader.readLine()) != null)
+    // {
+    // System.out.println(ln);
+    // }
+    //
+    // System.out.println("Error:  ");
+    // while ((ln = errorReader.readLine()) != null)
+    // {
+    // System.out.println(ln);
+    // }
+    return worker;
+  }
+
+  @BeforeTest
+  public void initialize()
+  {
+    new CommandLineOperations();
+  }
+
+  @Test(dataProvider = "headlessModeOutputParams")
+  public void testHeadlessModeOutputs(String harg, String type,
+          String fileName, boolean withAWT, int expectedMinFileSize)
+  {
+    String cmd = harg + type + " " + fileName;
+    // System.out.println(">>>>>>>>>>>>>>>> Command : " + cmd);
+    File file = new File(fileName);
+    Worker worker = null;
+    try
     {
-      System.out.println(ln);
+      worker = jalviewDesktopRunner(withAWT, cmd, 9000);
+    } catch (InterruptedException e)
+    {
+      e.printStackTrace();
+    } catch (IOException e)
+    {
+      e.printStackTrace();
     }
 
-    System.out.println("Error:  ");
-    while ((ln = errorReader.readLine()) != null)
+    FileAssert.assertFile(file, "Didn't create an output" + type
+            + " file.[" + harg + "]");
+    FileAssert.assertMinLength(new File(fileName), expectedMinFileSize);
+    if (worker != null && worker.exit == null)
     {
-      System.out.println(ln);
+      worker.interrupt();
+      Thread.currentThread().interrupt();
+      worker.process.destroy();
+      Assert.fail("Jalview did not exit after  "
+              + type
+              + " generation (try running test again to verify - timeout at 9000ms). ["
+              + harg + "]");
     }
-    return worker;
+    new File(fileName).delete();
   }
 
-  @Test
-  public void testHeadlessModeEPS() throws Exception
+  @DataProvider(name = "headlessModeOutputParams")
+  public static Object[][] headlessModeOutput()
   {
-    String[] headlessArgs = new String[]
-    { "nodisplay", "headless", "nogui" };
-    for (String _harg : headlessArgs)
+    return new Object[][]
     {
-      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);
-        AssertJUnit.assertTrue("Didn't create an output EPS file.[" + harg
-                + "]", new File("test_uniref50_out.eps").exists());
-        AssertJUnit.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();
-          Assert.fail("Jalview did not exit after EPS generation (try running test again to verify - timeout at 9000ms). ["
-                  + harg + "]");
-        }
-      } while (!withAwt);
-    }
+        { "nodisplay -open examples/uniref50.fa", " -eps",
+            "test_uniref50_out.eps", true, 4096 },
+        { "nodisplay -open examples/uniref50.fa", " -eps",
+            "test_uniref50_out.eps", false, 4096 },
+        { "headless -open examples/uniref50.fa", " -eps",
+            "test_uniref50_out.eps", true, 4096 },
+        { "headless -open examples/uniref50.fa", " -eps",
+            "test_uniref50_out.eps", false, 4096 },
+        { "nogui -open examples/uniref50.fa", " -eps",
+            "test_uniref50_out.eps", true, 4096 },
+        { "nogui -open examples/uniref50.fa", " -eps",
+            "test_uniref50_out.eps", false, 4096 },
+        { "headless -open examples/uniref50.fa", " -svg",
+            "test_uniref50_out.svg", true, 4096 },
+        { "headless -open examples/uniref50.fa", " -svg",
+            "test_uniref50_out.svg", false, 4096 },
+        { "headless -open examples/uniref50.fa", " -png",
+            "test_uniref50_out.png", true, 4096 },
+        { "headless -open examples/uniref50.fa", " -png",
+            "test_uniref50_out.png", false, 4096 },
+        { "headless -open examples/uniref50.fa", " -html",
+            "test_uniref50_out.html", true, 4096 },
+        { "headless -open examples/uniref50.fa", " -html",
+            "test_uniref50_out.html", false, 4096 },
+        { "headless -open examples/uniref50.fa", " -fasta",
+            "test_uniref50_out.mfa", true, 2096 },
+        { "headless -open examples/uniref50.fa", " -fasta",
+            "test_uniref50_out.mfa", false, 2096 },
+        { "headless -open examples/uniref50.fa", " -clustal",
+            "test_uniref50_out.aln", true, 2096 },
+        { "headless -open examples/uniref50.fa", " -clustal",
+            "test_uniref50_out.aln", false, 2096 },
+        { "headless -open examples/uniref50.fa", " -msf",
+            "test_uniref50_out.msf", true, 2096 },
+        { "headless -open examples/uniref50.fa", " -msf",
+            "test_uniref50_out.msf", false, 2096 },
+        { "headless -open examples/uniref50.fa", " -pileup",
+            "test_uniref50_out.aln", true, 2096 },
+        { "headless -open examples/uniref50.fa", " -pileup",
+            "test_uniref50_out.aln", false, 2096 },
+        { "headless -open examples/uniref50.fa", " -pir",
+            "test_uniref50_out.pir", true, 2096 },
+        { "headless -open examples/uniref50.fa", " -pir",
+            "test_uniref50_out.pir", false, 2096 },
+        { "headless -open examples/uniref50.fa", " -pfam",
+            "test_uniref50_out.pfam", true, 2096 },
+        { "headless -open examples/uniref50.fa", " -pfam",
+            "test_uniref50_out.pfam", false, 2096 },
+        { "headless -open examples/uniref50.fa", " -blc",
+            "test_uniref50_out.blc", true, 2096 },
+        { "headless -open examples/uniref50.fa", " -blc",
+            "test_uniref50_out.blc", false, 2096 },
+        { "headless -open examples/uniref50.fa", " -jalview",
+            "test_uniref50_out.jvp", true, 2096 },
+        { "headless -open examples/uniref50.fa", " -jalview",
+            "test_uniref50_out.jvp", false, 2096 },
+    };
   }
-  // @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+"]");
-  // }
-  // }
+
+
 }