From 2a3a6fe6e45fff64f12d999661eb2ad375f109d2 Mon Sep 17 00:00:00 2001
From: Robert Scott <code@humanleg.org.uk>
Date: Mon, 7 May 2018 10:44:24 +0100
Subject: [PATCH v2 21/28] JOSMTestRules preferences handling: clear
 defaultsMap between tests to provide better isolation

also add log message when skipping the setting of a value due to defaults -
this hint could save a lot of debugging time if noticed.
---
 src/org/openstreetmap/josm/data/Preferences.java              | 4 +++-
 test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java | 6 ++++++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/src/org/openstreetmap/josm/data/Preferences.java b/src/org/openstreetmap/josm/data/Preferences.java
index 72189f66c..af88902c4 100644
--- a/src/org/openstreetmap/josm/data/Preferences.java
+++ b/src/org/openstreetmap/josm/data/Preferences.java
@@ -621,8 +621,10 @@ public class Preferences extends AbstractPreferences {
                 settingOld = settingsMap.get(key);
                 if (setting.equals(settingOld))
                     return false;
-                if (settingOld == null && setting.equals(defaultsMap.get(key)))
+                if (settingOld == null && setting.equals(defaultsMap.get(key))) {
+                    Logging.debug(tr("Not setting ''{0}'' to value ''{1}'': it appears to be the default", key, setting));
                     return false;
+                }
                 settingCopy = setting.copy();
                 settingsMap.put(key, settingCopy);
             }
diff --git a/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java b/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java
index 048e87c6f..b24fc3939 100644
--- a/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java
+++ b/test/unit/org/openstreetmap/josm/testutils/JOSMTestRules.java
@@ -10,6 +10,7 @@ import java.io.IOException;
 import java.security.GeneralSecurityException;
 import java.text.MessageFormat;
 import java.util.Arrays;
+import java.util.Map;
 import java.util.TimeZone;
 import java.util.logging.Handler;
 
@@ -40,6 +41,7 @@ import org.openstreetmap.josm.io.OsmApiInitializationException;
 import org.openstreetmap.josm.io.OsmConnection;
 import org.openstreetmap.josm.io.OsmTransferCanceledException;
 import org.openstreetmap.josm.spi.preferences.Config;
+import org.openstreetmap.josm.spi.preferences.Setting;
 import org.openstreetmap.josm.tools.I18n;
 import org.openstreetmap.josm.tools.JosmRuntimeException;
 import org.openstreetmap.josm.tools.Logging;
@@ -439,6 +441,10 @@ public class JOSMTestRules implements TestRule {
 
         // Add preferences
         if (usePreferences) {
+            @SuppressWarnings("unchecked")
+            final Map<String, Setting<?>> defaultsMap = (Map<String, Setting<?>>) TestUtils.getPrivateField(Main.pref, "defaultsMap");
+            defaultsMap.clear();
+
             Main.pref.resetToInitialState();
             Main.pref.enableSaveOnPut(false);
             // No pref init -> that would only create the preferences file.
-- 
2.11.0

