JAL-3065 - amended commit 4906697ab6e5a79fbce3baae89f7f64178c9a739 to exclude ...
[jalview.git] / test / jalview / bin / CommandLineOperations.java
index 70f6079..9b94be9 100644 (file)
@@ -20,6 +20,8 @@
  */
 package jalview.bin;
 
+import jalview.gui.JvOptionPane;
+
 import java.io.BufferedReader;
 import java.io.File;
 import java.io.IOException;
@@ -28,6 +30,7 @@ import java.util.ArrayList;
 
 import org.testng.Assert;
 import org.testng.FileAssert;
+import org.testng.annotations.BeforeClass;
 import org.testng.annotations.BeforeTest;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
@@ -35,7 +38,24 @@ import org.testng.annotations.Test;
 public class CommandLineOperations
 {
 
-  private ArrayList<String> successfulCMDs = new ArrayList<String>();
+  @BeforeClass(alwaysRun = true)
+  public void setUpJvOptionPane()
+  {
+    JvOptionPane.setInteractiveMode(false);
+    JvOptionPane.setMockResponse(JvOptionPane.CANCEL_OPTION);
+  }
+
+  private static final int TEST_TIMEOUT = 4500; // Note longer timeout needed on
+                                                // full test run than on
+                                                // individual tests
+
+  private static final int SETUP_TIMEOUT = 9000;
+
+  private static final int MINFILESIZE_SMALL = 2096;
+
+  private static final int MINFILESIZE_BIG = 4096;
+
+  private ArrayList<String> successfulCMDs = new ArrayList<>();
 
   /***
    * from
@@ -48,8 +68,11 @@ public class CommandLineOperations
   private static class Worker extends Thread
   {
     private final Process process;
+
     private BufferedReader outputReader;
+
     private BufferedReader errorReader;
+
     private Integer exit;
 
     private Worker(Process process)
@@ -57,6 +80,7 @@ public class CommandLineOperations
       this.process = process;
     }
 
+    @Override
     public void run()
     {
       try
@@ -92,9 +116,15 @@ public class CommandLineOperations
   private Worker jalviewDesktopRunner(boolean withAwt, String cmd,
           int timeout)
   {
+    String cp_sep = ":";
+    if (System.getProperty("os.name").indexOf("Windows") >= 0)
+    {
+      cp_sep = ";";
+    }
     String _cmd = "java "
             + (withAwt ? "-Djava.awt.headless=true" : "")
-            + " -Djava.ext.dirs=./lib -classpath ./classes jalview.bin.Jalview ";
+            + " -classpath \"./lib/*" + cp_sep
+            + "./classes\" jalview.bin.Jalview ";
     System.out.println("CMD [" + cmd + "]");
     Process ls2_proc = null;
     Worker worker = null;
@@ -109,7 +139,6 @@ public class CommandLineOperations
     {
       BufferedReader outputReader = new BufferedReader(
               new InputStreamReader(ls2_proc.getInputStream()));
-
       BufferedReader errorReader = new BufferedReader(
               new InputStreamReader(ls2_proc.getErrorStream()));
       worker = new Worker(ls2_proc);
@@ -127,21 +156,20 @@ public class CommandLineOperations
     return worker;
   }
 
-  @BeforeTest
+  @BeforeTest(alwaysRun = true)
   public void initialize()
   {
     new CommandLineOperations();
   }
 
-  
-  @BeforeTest
+  @BeforeTest(alwaysRun = true)
   public void setUpForHeadlessCommandLineInputOperations()
           throws IOException
   {
     String cmds = "nodisplay -open examples/uniref50.fa -sortbytree -props FILE -colour zappo "
             + "-jabaws http://www.compbio.dundee.ac.uk/jabaws -nosortbytree -dasserver nickname=www.test.com "
-            + "-features uniref50_test_features -annotations uniref50_test_annot -tree uniref50_test_tree";
-    Worker worker = jalviewDesktopRunner(true, cmds, 9000);
+            + "-features examples/testdata/plantfdx.features -annotations examples/testdata/plantfdx.annotations -tree examples/testdata/uniref50_test_tree";
+    Worker worker = jalviewDesktopRunner(true, cmds, SETUP_TIMEOUT);
     String ln = null;
     while ((ln = worker.getOutputReader().readLine()) != null)
     {
@@ -150,11 +178,11 @@ public class CommandLineOperations
     }
   }
 
-  @BeforeTest
+  @BeforeTest(alwaysRun = true)
   public void setUpForCommandLineInputOperations() throws IOException
   {
     String cmds = "-open examples/uniref50.fa -noquestionnaire -nousagestats";
-    Worker worker = jalviewDesktopRunner(false, cmds, 9000);
+    Worker worker = jalviewDesktopRunner(false, cmds, SETUP_TIMEOUT);
     String ln = null;
     int count = 0;
     while ((ln = worker.getErrorReader().readLine()) != null)
@@ -174,16 +202,16 @@ public class CommandLineOperations
     }
   }
 
-  @Test(groups =
-  { "Functional" }, dataProvider = "allInputOpearationsData")
+  @Test(groups = { "Functional" }, dataProvider = "allInputOpearationsData")
   public void testAllInputOperations(String expectedString,
           String failureMsg)
   {
     Assert.assertTrue(successfulCMDs.contains(expectedString), failureMsg);
   }
 
-  @Test(groups =
-  { "Functional" }, dataProvider = "headlessModeOutputOperationsData")
+  @Test(
+    groups = { "Functional" },
+    dataProvider = "headlessModeOutputOperationsData")
   public void testHeadlessModeOutputOperations(String harg, String type,
           String fileName, boolean withAWT, int expectedMinFileSize,
           int timeout)
@@ -203,18 +231,17 @@ public class CommandLineOperations
       worker.process.destroy();
       Assert.fail("Jalview did not exit after "
               + type
-              + " generation (try running test again to verify - timeout at 9000ms). ["
+              + " generation (try running test again to verify - timeout at "
+              + SETUP_TIMEOUT + "ms). ["
               + harg + "]");
     }
     new File(fileName).delete();
   }
 
-
   @DataProvider(name = "allInputOpearationsData")
   public Object[][] getHeadlessModeInputParams()
   {
-    return new Object[][]
-    {
+    return new Object[][] {
         // headless mode input operations
         { "CMD [-color zappo] executed successfully!",
             "Failed command : -color zappo" },
@@ -231,58 +258,58 @@ public class CommandLineOperations
             "Failed command : -nosortbytree" },
         { "CMD [-dasserver nickname=www.test.com] executed successfully!",
             "Failed command : -dasserver nickname=www.test.com" },
-        { "CMD [-features uniref50_test_features]  executed successfully!",
-            "Failed command : -features uniref50_test_features" },
-        { "CMD [-annotations uniref50_test_annot] executed successfully!",
-            "Failed command : -annotations uniref50_test_annot" },
-        { "CMD [-tree uniref50_test_tree] executed successfully!",
-            "Failed command : -tree uniref50_test_tree" },
+        {
+            "CMD [-features examples/testdata/plantfdx.features]  executed successfully!",
+            "Failed command : -features examples/testdata/plantfdx.features" },
+        {
+            "CMD [-annotations examples/testdata/plantfdx.annotations] executed successfully!",
+            "Failed command : -annotations examples/testdata/plantfdx.annotations" },
+        {
+            "CMD [-tree examples/testdata/uniref50_test_tree] executed successfully!",
+            "Failed command : -tree examples/testdata/uniref50_test_tree" },
         // non headless mode input operations
         { "CMD [-nousagestats] executed successfully!",
             "Failed command : -nousagestats" },
         { "CMD [-noquestionnaire] executed successfully!",
-            "Failed command : -noquestionnaire nickname=www.test.com" }
-    };
+            "Failed command : -noquestionnaire nickname=www.test.com" } };
 
   }
-   
+
   @DataProvider(name = "headlessModeOutputOperationsData")
   public static Object[][] getHeadlessModeOutputParams()
   {
-    return new Object[][]
-    {
+    return new Object[][] {
         { "nodisplay -open examples/uniref50.fa", " -eps",
-            "test_uniref50_out.eps", true, 4096, 3000 },
+            "test_uniref50_out.eps", true, MINFILESIZE_BIG, TEST_TIMEOUT },
         { "nodisplay -open examples/uniref50.fa", " -eps",
-            "test_uniref50_out.eps", false, 4096, 3000 },
+            "test_uniref50_out.eps", false, MINFILESIZE_BIG, TEST_TIMEOUT },
         { "nogui -open examples/uniref50.fa", " -eps",
-            "test_uniref50_out.eps", true, 4096, 3000 },
+            "test_uniref50_out.eps", true, MINFILESIZE_BIG, TEST_TIMEOUT },
         { "nogui -open examples/uniref50.fa", " -eps",
-            "test_uniref50_out.eps", false, 4096, 3000 },
+            "test_uniref50_out.eps", false, MINFILESIZE_BIG, TEST_TIMEOUT },
         { "headless -open examples/uniref50.fa", " -eps",
-            "test_uniref50_out.eps", true, 4096, 3000 },
+            "test_uniref50_out.eps", true, MINFILESIZE_BIG, TEST_TIMEOUT },
         { "headless -open examples/uniref50.fa", " -svg",
-            "test_uniref50_out.svg", false, 4096, 3000 },
+            "test_uniref50_out.svg", false, MINFILESIZE_BIG, TEST_TIMEOUT },
         { "headless -open examples/uniref50.fa", " -png",
-            "test_uniref50_out.png", true, 4096, 3000 },
+            "test_uniref50_out.png", true, MINFILESIZE_BIG, TEST_TIMEOUT },
         { "headless -open examples/uniref50.fa", " -html",
-            "test_uniref50_out.html", true, 4096, 3000 },
+            "test_uniref50_out.html", true, MINFILESIZE_BIG, TEST_TIMEOUT },
         { "headless -open examples/uniref50.fa", " -fasta",
-            "test_uniref50_out.mfa", true, 2096, 3000 },
+            "test_uniref50_out.mfa", true, MINFILESIZE_SMALL, TEST_TIMEOUT },
         { "headless -open examples/uniref50.fa", " -clustal",
-            "test_uniref50_out.aln", true, 2096, 3000 },
+            "test_uniref50_out.aln", true, MINFILESIZE_SMALL, TEST_TIMEOUT },
         { "headless -open examples/uniref50.fa", " -msf",
-            "test_uniref50_out.msf", true, 2096, 3000 },
+            "test_uniref50_out.msf", true, MINFILESIZE_SMALL, TEST_TIMEOUT },
         { "headless -open examples/uniref50.fa", " -pileup",
-            "test_uniref50_out.aln", true, 2096, 3000 },
+            "test_uniref50_out.aln", true, MINFILESIZE_SMALL, TEST_TIMEOUT },
         { "headless -open examples/uniref50.fa", " -pir",
-            "test_uniref50_out.pir", true, 2096, 3000 },
+            "test_uniref50_out.pir", true, MINFILESIZE_SMALL, TEST_TIMEOUT },
         { "headless -open examples/uniref50.fa", " -pfam",
-            "test_uniref50_out.pfam", true, 2096, 3000 },
+            "test_uniref50_out.pfam", true, MINFILESIZE_SMALL, TEST_TIMEOUT },
         { "headless -open examples/uniref50.fa", " -blc",
-            "test_uniref50_out.blc", true, 2096, 3000 },
+            "test_uniref50_out.blc", true, MINFILESIZE_SMALL, TEST_TIMEOUT },
         { "headless -open examples/uniref50.fa", " -jalview",
-            "test_uniref50_out.jvp", true, 2096, 3000 },
-    };
+            "test_uniref50_out.jvp", true, MINFILESIZE_SMALL, TEST_TIMEOUT }, };
   }
 }