--- /dev/null
+package jalview.bin;
+
+import static org.junit.Assert.*;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.InputStreamReader;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+public class CommandLineOperations
+{
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception
+ {
+ }
+
+ @AfterClass
+ public static void tearDownAfterClass() throws Exception
+ {
+ }
+/***
+ * from http://stackoverflow.com/questions/808276/how-to-add-a-timeout-value-when-using-javas-runtime-exec
+ * @author jimp
+ *
+ */
+private static class Worker extends Thread {
+ private final Process process;
+ private Integer exit;
+ private Worker(Process process) {
+ this.process = process;
+ }
+ public void run() {
+ try {
+ exit = process.waitFor();
+ } catch (InterruptedException ignore) {
+ return;
+ }
+ }
+}
+ @Test
+ public void testHeadlessModeEPS() throws Exception
+ {
+ 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;
+
+ 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()));
+ Worker worker = new Worker(ls2_proc);
+ worker.start();
+ worker.join(9000);
+ 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);
+ }
+ 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);
+ 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).");
+}
+ }
+
+}