From: hansonr Date: Mon, 7 Oct 2019 05:50:08 +0000 (+0200) Subject: JAL-3453 Some tests require different Desktop constructor X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=d6ab7729d96fd22c5e733dbb0af998f8e6387200;p=jalview.git JAL-3453 Some tests require different Desktop constructor better idea: Desktop.getInstanceOnly() - creates an instance with no dialog prompting and no frame display, similar to headless mode, but not fully bypassing the code that Jalview.headless bypasses. --- diff --git a/src/jalview/bin/ApplicationSingletonProvider.java b/src/jalview/bin/ApplicationSingletonProvider.java index 45ec8ab..b64f40c 100644 --- a/src/jalview/bin/ApplicationSingletonProvider.java +++ b/src/jalview/bin/ApplicationSingletonProvider.java @@ -140,15 +140,10 @@ public class ApplicationSingletonProvider * store the new singleton; note that a * null value is saved if construction failed */ - setInstance(c, o); + getContextMap().put(c, o); return o; } - public static void setInstance(Class c, - ApplicationSingletonI o) - { - getContextMap().put(c, o); - } /** * Removes the current singleton instance of the given class from the current * application context. This has the effect of ensuring that a new instance is diff --git a/src/jalview/gui/Desktop.java b/src/jalview/gui/Desktop.java index d2f3841..91e1948 100644 --- a/src/jalview/gui/Desktop.java +++ b/src/jalview/gui/Desktop.java @@ -234,7 +234,7 @@ public class Desktop extends GDesktop * object but no actual frames. Though not headless, this option disallows * dialogs to run in test environments. * - * It is set by invoking the Desktop(true) constructor. + * It is set by invoking Desktop.getInstanceOnly(). * */ boolean instanceOnly; @@ -380,17 +380,18 @@ public class Desktop extends GDesktop /** * For TestNG, this constructor can be utilized to allow the creation of a - * singleton Desktop instance without the formation of frames and, especially, - * not involving dialogs. Cache.log is also initialized for some tests that - * require it despite there being no Desktop. + * singleton Desktop instance with the creation of frames, but no addition to + * the Desktop object, as in headless mode. Dialogs are not initiated. + * Cache.log is also initialized for some tests that require it despite there + * being no Desktop. * - * @param forInstance */ - public Desktop(boolean forInstance) + public static Desktop getInstanceOnly() { - ApplicationSingletonProvider.setInstance(Desktop.class, this); - Cache.initLogger(); - instanceOnly = true; + Desktop d = (Desktop) ApplicationSingletonProvider + .getInstance(Desktop.class); + d.instanceOnly = true; + return d; } /** @@ -926,7 +927,7 @@ public class Desktop extends GDesktop } // THIS IS A PUBLIC STATIC METHOD, SO IT MAY BE CALLED EVEN IN // A HEADLESS STATE WHEN NO DESKTOP EXISTS. MUST RETURN - // IF JALVIEW IS RUNNING HEADLESS + // IF JALVIEW IS RUNNING HEADLESS OR IN INSTANCE-ONLY (testNG) MODE // /////////////////////////////////////////////// if (Jalview.isHeadlessMode() || Desktop.getInstance().instanceOnly) { @@ -3311,8 +3312,6 @@ public class Desktop extends GDesktop { } } - System.out.println("Desktop headless or instanceonly" + instanceOnly - + " " + Jalview.isHeadlessMode()); if (instanceOnly || Jalview.isHeadlessMode()) { return;