Index: trunk/build.xml
===================================================================
--- trunk/build.xml	(revision 7084)
+++ trunk/build.xml	(revision 7085)
@@ -267,8 +267,4 @@
             <replace file="${test.dir}/config/@{testfamily}-josm.home/preferences.xml" encoding="UTF-8" token="@OSM_USERNAME@" value="${osm.username}"/>
             <replace file="${test.dir}/config/@{testfamily}-josm.home/preferences.xml" encoding="UTF-8" token="@OSM_PASSWORD@" value="${osm.password}"/>
-        	<!-- Works only on Windows, does nothing on Unix -->
-        	<attrib file="${test.dir}/config/@{testfamily}-josm.home/preferences.xml" readonly="true"/>
-            <!-- Works only on Unix, does nothing on Windows -->
-        	<chmod file="${test.dir}/config/@{testfamily}-josm.home/preferences.xml" perm="ugo-w" verbose="true"/>
         </sequential>
     </macrodef>
Index: trunk/src/org/openstreetmap/josm/data/Preferences.java
===================================================================
--- trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 7084)
+++ trunk/src/org/openstreetmap/josm/data/Preferences.java	(revision 7085)
@@ -86,8 +86,14 @@
      */
     private File preferencesDirFile = null;
+
     /**
      * Internal storage for the cache directory.
      */
     private File cacheDirFile = null;
+
+    /**
+     * Determines if preferences file is saved each time a property is changed.
+     */
+    private boolean saveOnPut = true;
 
     /**
@@ -1036,8 +1042,10 @@
                 settingsMap.put(key, settingCopy);
             }
-            try {
-                save();
-            } catch (IOException e){
-                Main.warn(tr("Failed to persist preferences to ''{0}''", getPreferenceFile().getAbsoluteFile()));
+            if (saveOnPut) {
+                try {
+                    save();
+                } catch (IOException e){
+                    Main.warn(tr("Failed to persist preferences to ''{0}''", getPreferenceFile().getAbsoluteFile()));
+                }
             }
         }
@@ -1642,3 +1650,15 @@
         return a.equals(b);
     }
+
+    /**
+     * Enables or not the preferences file auto-save mechanism (save each time a setting is changed).
+     * This behaviour is enabled by default.
+     * @param enable if {@code true}, makes JOSM save preferences file each time a setting is changed
+     * @since 7085
+     */
+    public final void enableSaveOnPut(boolean enable) {
+        synchronized (this) {
+            saveOnPut = enable;
+        }
+    }
 }
Index: trunk/test/unit/org/openstreetmap/josm/JOSMFixture.java
===================================================================
--- trunk/test/unit/org/openstreetmap/josm/JOSMFixture.java	(revision 7084)
+++ trunk/test/unit/org/openstreetmap/josm/JOSMFixture.java	(revision 7085)
@@ -47,4 +47,5 @@
         System.setProperty("josm.home", josmHome);
         Main.initApplicationPreferences();
+        Main.pref.enableSaveOnPut(false);
         I18n.init();
         // initialize the plaform hook, and
