/* * The MIT License (MIT) * * Copyright (c) 2007-2015 Broad Institute * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package org.broad.igv.ui; import org.broad.igv.Globals; import org.broad.igv.feature.genome.Genome; import org.broad.igv.feature.genome.GenomeManager; import org.broad.igv.track.Track; import org.broad.igv.util.TestUtils; import org.junit.*; import org.junit.rules.TestRule; import org.junit.rules.Timeout; import javax.swing.*; import java.awt.*; import java.io.File; import java.io.IOException; import static org.junit.Assert.assertTrue; /** * Class from which headed tests can inherit * User: jacob * Date: 2012/05/24 */ @Ignore public class AbstractHeadedTest { protected static IGV igv; protected static Genome genome; @Rule public TestRule testTimeout = new Timeout((int) 60000); @BeforeClass public static void setUpClass() throws Exception { assumeNotHeadless(); TestUtils.setUpTestEnvironment(); igv = startGUI(); TestUtils.setAllNames(igv, true); } @AfterClass public static void tearDownClass() throws Exception { TestUtils.clearOutputDir(); stopGUI(); igv = null; } @Before public void setUp() throws Exception { igv.newSession(); IGV.getMainFrame().requestFocus(); TestUtils.resetPrefsFile(); TestUtils.resetTestUserDefinedGenomes(); IGV.getInstance().getContentPane().getCommandBar().refreshGenomeListComboBox(); } @After public void tearDown() throws Exception { TestUtils.resetPrefsFile(); TestUtils.resetTestUserDefinedGenomes(); } /** * Start GUI with default genome file * * @return * @throws java.io.IOException */ public static IGV startGUI() throws IOException { return startGUI(TestUtils.defaultGenome); } /** * Load a gui with the specified genome file. * No genome is loaded if null * * @param genomeFile * @return * @throws IOException */ protected static IGV startGUI(String genomeFile) throws IOException { Globals.setHeadless(false); IGV igv; //If IGV is already open, we get the instance. if (IGV.hasInstance()) { igv = IGV.getInstance(); IGV.getMainFrame().setVisible(true); System.out.println("Using old IGV"); } else { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Main.open(frame); System.out.println("Started new IGV"); igv = IGV.getInstance(); assertTrue(IGV.getInstance().waitForNotify(1000)); } if (genomeFile != null) { GenomeManager.getInstance().loadGenome(genomeFile, null); genome = igv.getGenomeManager().getCurrentGenome(); } return igv; } /** * This closes the IGV window. */ public static void stopGUI() { if (!IGV.hasInstance()) { return; } IGV.getMainFrame().setVisible(false); IGV.getMainFrame().dispose(); IGV.destroyInstance(); } public static void assumeNotHeadless() { boolean headless = true; try { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); headless = ge.isHeadless(); } catch (Exception e) { e.printStackTrace(); } catch (Error e) { //Really not sure why this ever happens, maybe just jenkins issues e.printStackTrace(); } if (headless) { System.out.println("You are trying to start a GUI in a headless environment. Aborting test"); } org.junit.Assume.assumeTrue(!headless); } public void testTest() throws Exception { java.util.List<Track> tracks = IGV.getInstance().getAllTracks(); System.out.println("# tracks: " + tracks.size()); for (Track track : tracks) { System.out.println(track.getName()); } java.util.List<Track> featureTracks = IGV.getInstance().getTrackPanel(IGV.FEATURE_PANEL_NAME).getTracks(); System.out.println(featureTracks.size()); } protected static String rewriteRestoreSession(String sessionPath) throws Exception{ sessionPath = (TestUtils.replaceTestPaths(new File(sessionPath))).getAbsolutePath(); IGV.getInstance().doRestoreSession(sessionPath, null, false); return sessionPath; } }