Index: /trunk/build.xml
===================================================================
--- /trunk/build.xml	(revision 7078)
+++ /trunk/build.xml	(revision 7079)
@@ -270,5 +270,5 @@
         	<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="a-w"/>
+        	<chmod file="${test.dir}/config/@{testfamily}-josm.home/preferences.xml" perm="ugo-w" verbose="true"/>
         </sequential>
     </macrodef>
Index: /trunk/src/org/openstreetmap/josm/data/osm/ChangesetCache.java
===================================================================
--- /trunk/src/org/openstreetmap/josm/data/osm/ChangesetCache.java	(revision 7078)
+++ /trunk/src/org/openstreetmap/josm/data/osm/ChangesetCache.java	(revision 7079)
@@ -46,5 +46,5 @@
 
     /** the cached changesets */
-    private final Map<Integer, Changeset> cache  = new HashMap<>();
+    private final Map<Integer, Changeset> cache = new HashMap<>();
 
     private final CopyOnWriteArrayList<ChangesetCacheListener> listeners =
@@ -56,9 +56,13 @@
 
     public void addChangesetCacheListener(ChangesetCacheListener listener) {
-        listeners.addIfAbsent(listener);
+        if (listener != null) {
+            listeners.addIfAbsent(listener);
+        }
     }
 
     public void removeChangesetCacheListener(ChangesetCacheListener listener) {
-        listeners.remove(listener);
+        if (listener != null) {
+            listeners.remove(listener);
+        }
     }
 
Index: /trunk/test/functional/org/openstreetmap/josm/io/OsmServerHistoryReaderTest.java
===================================================================
--- /trunk/test/functional/org/openstreetmap/josm/io/OsmServerHistoryReaderTest.java	(revision 7078)
+++ /trunk/test/functional/org/openstreetmap/josm/io/OsmServerHistoryReaderTest.java	(revision 7079)
@@ -1,4 +1,6 @@
 // License: GPL. For details, see LICENSE file.
 package org.openstreetmap.josm.io;
+
+import static org.junit.Assert.assertTrue;
 
 import org.junit.BeforeClass;
@@ -10,34 +12,52 @@
 import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
 
+/**
+ * History fetching tests. This test operates with production API.
+ */
 public class OsmServerHistoryReaderTest {
 
+    /**
+     * Setup tests.
+     */
     @BeforeClass
     public static void init() {
-        System.setProperty("josm.home", "C:\\data\\projekte\\osm\\tag-editor-plugin");
-        Main.pref.init(false);
+        Main.initApplicationPreferences();
+        Main.pref.put("osm-server.url", OsmApi.DEFAULT_API_URL);
     }
 
+    /**
+     * Tests node history fetching.
+     * @throws OsmTransferException if any error occurs
+     */
     @Test
-    public void testNode()  throws OsmTransferException {
-        OsmServerHistoryReader reader = new OsmServerHistoryReader(OsmPrimitiveType.NODE,266187);
+    public void testNode() throws OsmTransferException {
+        OsmServerHistoryReader reader = new OsmServerHistoryReader(OsmPrimitiveType.NODE, 266187);
         HistoryDataSet ds = reader.parseHistory(NullProgressMonitor.INSTANCE);
         History h = ds.getHistory(266187, OsmPrimitiveType.NODE);
-        System.out.println("num versions: " + h.getNumVersions());
+        assertTrue("NumVersions", h.getNumVersions() >= 4);
     }
 
+    /**
+     * Tests way history fetching.
+     * @throws OsmTransferException if any error occurs
+     */
     @Test
-    public void testWay()  throws OsmTransferException {
-        OsmServerHistoryReader reader = new OsmServerHistoryReader(OsmPrimitiveType.WAY,3058844);
+    public void testWay() throws OsmTransferException {
+        OsmServerHistoryReader reader = new OsmServerHistoryReader(OsmPrimitiveType.WAY, 3058844);
         HistoryDataSet ds = reader.parseHistory(NullProgressMonitor.INSTANCE);
         History h = ds.getHistory(3058844, OsmPrimitiveType.WAY);
-        System.out.println("num versions: " + h.getNumVersions());
+        assertTrue("NumVersions", h.getNumVersions() >= 13);
     }
 
+    /**
+     * Tests relation history fetching.
+     * @throws OsmTransferException if any error occurs
+     */
     @Test
-    public void testRelation()  throws OsmTransferException {
-        OsmServerHistoryReader reader = new OsmServerHistoryReader(OsmPrimitiveType.RELATION,49);
+    public void testRelation() throws OsmTransferException {
+        OsmServerHistoryReader reader = new OsmServerHistoryReader(OsmPrimitiveType.RELATION, 49);
         HistoryDataSet ds = reader.parseHistory(NullProgressMonitor.INSTANCE);
         History h = ds.getHistory(49, OsmPrimitiveType.RELATION);
-        System.out.println("num versions: " + h.getNumVersions());
+        assertTrue("NumVersions", h.getNumVersions() >= 3);
     }
 }
