JAL-3453 Some tests require different Desktop constructor
authorhansonr <hansonr@STO24954W.ad.stolaf.edu>
Sun, 6 Oct 2019 18:56:57 +0000 (20:56 +0200)
committerhansonr <hansonr@STO24954W.ad.stolaf.edu>
Sun, 6 Oct 2019 18:56:57 +0000 (20:56 +0200)
src/jalview/bin/ApplicationSingletonProvider.java
src/jalview/gui/Desktop.java

index eb82104..45ec8ab 100644 (file)
@@ -140,11 +140,15 @@ public class ApplicationSingletonProvider
      * store the new singleton; note that a
      * null value is saved if construction failed
      */
-    getContextMap().put(c, o);
-
+    setInstance(c, o);
     return o;
   }
 
+  public static void setInstance(Class<? extends ApplicationSingletonI> 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
index 85ec3ae..226efdf 100644 (file)
@@ -242,7 +242,7 @@ public class Desktop extends GDesktop
    * JInternalFrame objects when in that mode.
    * 
    */
-  private boolean instanceOnly;
+  boolean instanceOnly;
 
   class MyDesktopManager implements DesktopManager
   {
@@ -384,17 +384,16 @@ public class Desktop extends GDesktop
   }
 
   /**
-   * For testing purposes, this constructor can be utilized to allow the creation 
-   * of a singleton Desktop instance without the formation of frames. The Cache is 
-   * initialized, but that is all. 
-   * 
-   * It is not currently used. 
+   * 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.
    * 
    * @param forInstance
    */
   public Desktop(boolean forInstance)
   {
-
+    ApplicationSingletonProvider.setInstance(Desktop.class, this);
     Cache.initLogger();
     instanceOnly = true;
   }
@@ -3317,7 +3316,9 @@ public class Desktop extends GDesktop
           {
           }
         }
-        if (instanceOnly)
+        System.out.println("Desktop headless or instanceonly" + instanceOnly
+                + " " + Jalview.isHeadlessMode());
+        if (instanceOnly || Jalview.isHeadlessMode())
         {
           return;
         }