*/
public static final String JALVIEWLOGLEVEL = "logs.Jalview.level";
+ // for tests
+ public static final String BOOTSTRAP_TEST = "BOOTSTRAP_TEST";
+
/**
* Sifts settings
*/
}
private static final Collection<String> bootstrapProperties = new ArrayList<>(
- Arrays.asList(JALVIEWLOGLEVEL));
+ Arrays.asList(JALVIEWLOGLEVEL, BOOTSTRAP_TEST));
public static Properties bootstrapProperties(String filename)
{
--- /dev/null
+package jalview.bin;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+import java.util.Properties;
+
+import org.testng.Assert;
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+import jalview.bin.ArgParser.Arg;
+import jalview.bin.ArgParser.BootstrapArgs;
+import jalview.util.FileUtils;
+
+public class ArgParserTest
+{
+
+ @Test(groups = "Functional", dataProvider = "argLines")
+ public void parseArgsAndSubValsTest(String commandLineArgs)
+ {
+ String[] args = commandLineArgs.split("\\s*");
+ ArgParser argparser = new ArgParser(args);
+ }
+
+ @Test(groups = "Functional", dataProvider = "argLines")
+ public void bootstrapArgsTest(String commandLineArgs, Arg a, String other)
+ {
+ String[] args = commandLineArgs.split("\\s+");
+ BootstrapArgs b = BootstrapArgs.getBootstrapArgs(args);
+
+ Assert.assertTrue(b.contains(a));
+ if (a == Arg.PROPS)
+ {
+ Properties bP = Cache.bootstrapProperties(b.get(Arg.PROPS));
+ Assert.assertTrue(other.equals(bP.get(Cache.BOOTSTRAP_TEST)));
+ }
+ else if (a == Arg.ARGFILE)
+ {
+ List<File> files = FileUtils.getFilesFromGlob(b.get(a));
+ boolean found = false;
+ for (File f : files)
+ {
+ File fo = new File(other);
+ try
+ {
+ if (fo.getCanonicalPath().equals(f.getCanonicalPath()))
+ {
+ found = true;
+ break;
+ }
+ } catch (IOException e)
+ {
+ }
+ }
+ Assert.assertTrue(found);
+ }
+
+ }
+
+ @Test(groups = "Functional", dataProvider = "argFiles")
+ public void argFilesTest(String commandLineArgs, Arg a)
+ {
+ String[] args = commandLineArgs.split("\\s+");
+ BootstrapArgs b = BootstrapArgs.getBootstrapArgs(args);
+
+ Assert.assertTrue(b.contains(a));
+ if (a == Arg.PROPS)
+ {
+ Properties bP = Cache.bootstrapProperties(b.get(Arg.PROPS));
+ Assert.assertTrue("true".equals(bP.get(Cache.BOOTSTRAP_TEST)));
+ }
+
+ }
+
+ @DataProvider(name = "argLines")
+ public Object[][] argLines()
+ {
+ return new Object[][] {
+ { "--debug --open=test/jalview/bin/argparser/test1.fa", Arg.DEBUG,
+ null },
+ { "--open=test/jalview/bin/argparser/test1.fa --headless",
+ Arg.HEADLESS, null },
+ { "--open=test/jalview/bin/argparser/test1.fa --props=test/jalview/bin/argparser/testProps.jvprops",
+ Arg.PROPS, "true" },
+ { "--argfile=test/jalview/bin/argparser/argfile*.txt", Arg.ARGFILE,
+ "test/jalview/bin/argparser/argfile1.txt" } };
+ }
+
+ @DataProvider(name = "argFiles")
+ public Object[][] argFiles()
+ {
+ return new Object[][] {
+ { "--argfile=test/jalview/bin/argparser/argfile0.txt", Arg.OPEN,
+ "test/jalview/bin/argfiles/test1.fa" } };
+ }
+}
--- /dev/null
+package jalview.bin;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.management.ManagementFactory;
+
+import org.testng.annotations.BeforeTest;
+import org.testng.annotations.Test;
+
+import io.github.classgraph.ClassGraph;
+
+public class CommandsTest
+{
+
+ private static final int SETUP_TIMEOUT = 30000;
+
+ private static class Worker extends Thread
+ {
+ private final Process process;
+
+ private Integer exit;
+
+ private Worker(Process process)
+ {
+ this.process = process;
+ }
+
+ @Override
+ public void run()
+ {
+ try
+ {
+ exit = process.waitFor();
+ } catch (InterruptedException ignore)
+ {
+ return;
+ }
+ }
+ }
+
+ private static ClassGraph scanner = null;
+
+ private static String classpath = null;
+
+ private static String modules = null;
+
+ private static String java_exe = null;
+
+ public synchronized static String getClassPath()
+ {
+ java_exe = System.getProperty("java.home") + File.separator + "bin"
+ + File.separator + "java";
+ classpath = ManagementFactory.getRuntimeMXBean().getClassPath();
+ return classpath;
+ }
+
+ private Worker getJalviewDesktopRunner(boolean withAwt, String cmd,
+ int timeout)
+ {
+ // Note: JAL-3065 - don't include quotes for lib/* because the arguments are
+ // not expanded by the shell
+ String classpath = getClassPath();
+ String _cmd = java_exe + " "
+ + (withAwt ? "-Djava.awt.headless=true" : "") + " -classpath "
+ + classpath + " jalview.bin.Jalview ";
+ Process ls2_proc = null;
+ Worker worker = null;
+ try
+ {
+ ls2_proc = Runtime.getRuntime().exec(_cmd + cmd);
+ } catch (Throwable e1)
+ {
+ e1.printStackTrace();
+ }
+ if (ls2_proc != null)
+ {
+ worker = new Worker(ls2_proc);
+ worker.start();
+ try
+ {
+ worker.join(timeout);
+ } catch (InterruptedException e)
+ {
+ System.err.println("Thread interrupted");
+ }
+ }
+ return worker;
+ }
+
+ @BeforeTest(alwaysRun = true)
+ public void initialize()
+ {
+ new CommandsTest();
+ }
+
+ @Test(groups = "Functional")
+ public void setUpForHeadlessCommandsTest() throws IOException
+ {
+ String cmds = "--open=./examples/uniref50.fa";
+ Worker worker = getJalviewDesktopRunner(true, cmds, SETUP_TIMEOUT);
+ }
+
+}
--- /dev/null
+--open=test/jalview/bin/argparser/test1.fa
+--open=test/jalview/bin/argparser/test2.fa
--- /dev/null
+--open[all]=test/jalview/bin/argparser/test1.fa
+--open[all]=test/jalview/bin/argparser/test2.fa
+--open[1]=test/jalview/bin/argparser/test1.fa
+--open[2]=test/jalview/bin/argparser/test1.fa
--- /dev/null
+--open=test/jalview/bin/argparser/test1.fa
--- /dev/null
+>TEST1A
+AAAARG
+>TEST1B
+HELLO
+>TEST1C
+OUTTHERE
--- /dev/null
+>TEST2A
+AAAARG
+>TEST2B
+HELLO
+>TEST2C
+OUTTHERE
--- /dev/null
+#---JalviewX Properties File---
+#Fri Apr 25 09:54:25 BST 2014
+SCREEN_Y=768
+SCREEN_X=936
+SHOW_WSDISCOVERY_ERRORS=true
+LATEST_VERSION=2.8.0b1
+SHOW_CONSERVATION=true
+JALVIEW_RSS_WINDOW_SCREEN_WIDTH=550
+JAVA_CONSOLE_SCREEN_WIDTH=450
+LAST_DIRECTORY=/Volumes/Data/Users/jimp/Documents/testing/Jalview/examples
+ID_ITALICS=true
+SORT_ALIGNMENT=No sort
+SHOW_IDENTITY=true
+WSMENU_BYHOST=false
+SEQUENCE_LINKS=EMBL-EBI Search|http\://www.ebi.ac.uk/ebisearch/search.ebi?db\=allebi&query\=$SEQUENCE_ID$
+SHOW_FULLSCREEN=false
+RECENT_URL=http\://www.jalview.org/examples/exampleFile_2_7.jar
+FONT_NAME=SansSerif
+BLC_JVSUFFIX=true
+VERSION_CHECK=false
+YEAR=2011
+SHOW_DBREFS_TOOLTIP=true
+MSF_JVSUFFIX=true
+SCREENGEOMETRY_HEIGHT=1600
+JAVA_CONSOLE_SCREEN_Y=475
+JAVA_CONSOLE_SCREEN_X=830
+PFAM_JVSUFFIX=true
+PIR_JVSUFFIX=true
+STARTUP_FILE=http\://www.jalview.org/examples/exampleFile_2_3.jar
+JAVA_CONSOLE_SCREEN_HEIGHT=162
+PIR_MODELLER=false
+GAP_SYMBOL=-
+SHOW_QUALITY=true
+SHOW_GROUP_CONSERVATION=false
+SHOW_JWS2_SERVICES=true
+SHOW_NPFEATS_TOOLTIP=true
+FONT_STYLE=plain
+ANTI_ALIAS=false
+SORT_BY_TREE=false
+RSBS_SERVICES=|Multi-Harmony|Analysis|Sequence Harmony and Multi-Relief (Brandt et al. 2010)|hseparable,gapCharacter\='-',returns\='ANNOTATION'|?tool\=jalview|http\://zeus.few.vu.nl/programs/shmrwww/index.php?tool\=jalview&groups\=$PARTITION\:min\='2',minsize\='2',sep\=' '$&ali_file\=$ALIGNMENT\:format\='FASTA',writeasfile$
+AUTHORFNAMES=Jim Procter, Andrew Waterhouse, Jan Engelhardt, Lauren Lui, Michele Clamp, James Cuff, Steve Searle, David Martin & Geoff Barton
+JALVIEW_RSS_WINDOW_SCREEN_HEIGHT=328
+SHOW_GROUP_CONSENSUS=false
+SHOW_CONSENSUS_HISTOGRAM=true
+SHOW_OVERVIEW=false
+AUTHORS=J Procter, AM Waterhouse, LM Lui, J Engelhardt, G Barton, M Clamp, S Searle
+FIGURE_AUTOIDWIDTH=false
+SCREEN_WIDTH=900
+ANNOTATIONCOLOUR_MIN=ffc800
+SHOW_STARTUP_FILE=false
+RECENT_FILE=examples/uniref50.fa\t/Volumes/Data/Users/jimp/Documents/testing/Jalview/examples/RF00031_folded.stk\t/Volumes/Data/Users/jimp/bs_ig_mult.out
+DEFAULT_FILE_FORMAT=FASTA
+SHOW_JAVA_CONSOLE=false
+VERSION=2.8b1
+FIGURE_USERIDWIDTH=
+WSMENU_BYTYPE=false
+DEFAULT_COLOUR=None
+NOQUESTIONNAIRES=true
+JALVIEW_NEWS_RSS_LASTMODIFIED=Apr 23, 2014 2\:53\:26 PM
+BUILD_DATE=01 November 2013
+PILEUP_JVSUFFIX=true
+SHOW_CONSENSUS_LOGO=false
+SCREENGEOMETRY_WIDTH=2560
+SHOW_ANNOTATIONS=true
+JALVIEW_RSS_WINDOW_SCREEN_Y=0
+USAGESTATS=false
+JALVIEW_RSS_WINDOW_SCREEN_X=0
+SHOW_UNCONSERVED=false
+SHOW_JVSUFFIX=true
+DAS_LOCAL_SOURCE=
+SCREEN_HEIGHT=650
+ANNOTATIONCOLOUR_MAX=ff0000
+AUTO_CALC_CONSENSUS=true
+FASTA_JVSUFFIX=true
+DAS_ACTIVE_SOURCE=uniprot\t
+JWS2HOSTURLS=http\://www.compbio.dundee.ac.uk/jabaws
+PAD_GAPS=false
+CLUSTAL_JVSUFFIX=true
+SHOW_ENFIN_SERVICES=true
+FONT_SIZE=10
+RIGHT_ALIGN_IDS=false
+USE_PROXY=false
+WRAP_ALIGNMENT=false
+#DAS_REGISTRY_URL=http\://www.dasregistry.org/das/ # retired 01/05/2015
+DAS_REGISTRY_URL=http\://www.ebi.ac.uk/das-srv/registry/das/
+BOOTSTRAP_TEST=true