From 58ffc119fe9b4f4434c1c375812b7f505004982e Mon Sep 17 00:00:00 2001
From: Robert Scott <code@humanleg.org.uk>
Date: Fri, 26 Oct 2018 23:31:14 +0100
Subject: [PATCH v1] HelpBrowserTest: fix for non-headless mode

---
 .../openstreetmap/josm/gui/help/HelpBrowser.java    | 14 ++++++--------
 .../josm/gui/help/HelpBrowserTest.java              | 21 +++++++++++++++++++++
 2 files changed, 27 insertions(+), 8 deletions(-)

diff --git a/src/org/openstreetmap/josm/gui/help/HelpBrowser.java b/src/org/openstreetmap/josm/gui/help/HelpBrowser.java
index 1332c2354..db24f2423 100644
--- a/src/org/openstreetmap/josm/gui/help/HelpBrowser.java
+++ b/src/org/openstreetmap/josm/gui/help/HelpBrowser.java
@@ -465,14 +465,12 @@ public class HelpBrowser extends JFrame implements IHelpBrowser {
                         url,
                         HelpUtil.getWikiBaseUrl()
                 );
-                if (!GraphicsEnvironment.isHeadless()) {
-                    JOptionPane.showMessageDialog(
-                            MainApplication.getMainFrame(),
-                            message,
-                            tr("Warning"),
-                            JOptionPane.WARNING_MESSAGE
-                    );
-                }
+                JOptionPane.showMessageDialog(
+                        MainApplication.getMainFrame(),
+                        message,
+                        tr("Warning"),
+                        JOptionPane.WARNING_MESSAGE
+                );
                 return;
             }
             url = url.replaceAll("#[^#]*$", "");
diff --git a/test/unit/org/openstreetmap/josm/gui/help/HelpBrowserTest.java b/test/unit/org/openstreetmap/josm/gui/help/HelpBrowserTest.java
index f5a7d965e..f4271d519 100644
--- a/test/unit/org/openstreetmap/josm/gui/help/HelpBrowserTest.java
+++ b/test/unit/org/openstreetmap/josm/gui/help/HelpBrowserTest.java
@@ -4,11 +4,17 @@ package org.openstreetmap.josm.gui.help;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
 
+import javax.swing.JOptionPane;
+
 import org.junit.Rule;
 import org.junit.Test;
+import org.openstreetmap.josm.TestUtils;
 import org.openstreetmap.josm.testutils.JOSMTestRules;
+import org.openstreetmap.josm.testutils.mockers.JOptionPaneSimpleMocker;
 import org.openstreetmap.josm.tools.LanguageInfo.LocaleType;
 
+import com.google.common.collect.ImmutableMap;
+
 import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 
 /**
@@ -88,6 +94,7 @@ public class HelpBrowserTest {
      */
     @Test
     public void testEditAction() {
+        TestUtils.assumeWorkingJMockit();
         IHelpBrowser browser = newHelpBrowser();
         assertNull(browser.getUrl());
         new HelpBrowser.EditAction(browser).actionPerformed(null);
@@ -96,9 +103,23 @@ public class HelpBrowserTest {
         assertEquals(URL_2, browser.getUrl());
         new HelpBrowser.EditAction(browser).actionPerformed(null);
 
+        final JOptionPaneSimpleMocker jopsMocker = new JOptionPaneSimpleMocker(
+            ImmutableMap.<String, Object>of(
+                "<html>The current URL <tt>https://josm.openstreetmap.de/javadoc</tt><br>is an external "
+                + "URL. Editing is only possible for help topics<br>on the help server "
+                + "<tt>https://josm.openstreetmap.de</tt>.</html>",
+                JOptionPane.OK_OPTION
+            )
+        );
+
         browser.openUrl(URL_3);
         assertEquals(URL_3, browser.getUrl());
         new HelpBrowser.EditAction(browser).actionPerformed(null);
+
+        assertEquals(1, jopsMocker.getInvocationLog().size());
+        Object[] invocationLogEntry = jopsMocker.getInvocationLog().get(0);
+        assertEquals(JOptionPane.OK_OPTION, (int) invocationLogEntry[0]);
+        assertEquals("Warning", invocationLogEntry[2]);
     }
 
     /**
-- 
2.11.0

