package tests.net.sf.jabref.testutils; import java.security.Permission; import net.sf.jabref.JabRef; /** * UtilsClass for UnitTests. * * @author kahlert, cordes * */ public class TestUtils { public static final String PATH_TO_TEST_BIBTEX = "src/tests/net/sf/jabref/bibtexFiles/test.bib"; /** * Returns a full configured and initialized instance of JabRef. As long as * {@link TestUtils#closeJabRef()} wasn't called this method returns the * same instance. * * @see TestUtils#closeJabRef() */ public static JabRef getInitializedJabRef() { disableSystemExit(); try { String[] args = { "-p", " ", PATH_TO_TEST_BIBTEX }; JabRef.main(args); } catch (ExitException e) { } finally { enableSystemExit(); } JabRef jabref = JabRef.singleton; return jabref; } /** * Closes the current instance of JabRef. */ public static void closeJabRef() { JabRef jabref = JabRef.singleton; if (jabref != null) { jabref.jrf.getFrame().dispose(); } } @SuppressWarnings("serial") private static class ExitException extends SecurityException { } private static void disableSystemExit() { final SecurityManager securityManager = new SecurityManager() { public void checkPermission(Permission permission) { if (permission.getName().contains("exitVM")) { throw new ExitException(); } } }; System.setSecurityManager(securityManager); } private static void enableSystemExit() { System.setSecurityManager(null); } }