Test and fix for issue #1568. Wasn't testing for end element in the right place.
authorMatt Amos <zerebubuth@gmail.com>
Sun, 8 Feb 2009 16:33:48 +0000 (16:33 +0000)
committerMatt Amos <zerebubuth@gmail.com>
Sun, 8 Feb 2009 16:33:48 +0000 (16:33 +0000)
lib/diff_reader.rb
test/functional/changeset_controller_test.rb

index 3b13e94626cc301f941a103a8df812a1b7fc831a..452d73dab1696c48ea7db6c00f85d943ac473371 100644 (file)
@@ -47,7 +47,7 @@ class DiffReader
       # read the first element
       read_or_die
 
-      begin
+      while @reader.node_type != 15 do # end element
         # because we read elements in DOM-style to reuse their DOM
         # parsing code, we don't always read an element on each pass
         # as the call to @reader.next in the innermost loop will take
@@ -57,7 +57,7 @@ class DiffReader
         else
           read_or_die
         end
-      end while @reader.node_type != 15 # end element
+      end 
     end
     read_or_die
   end
index 4669df07d4ed96d0714d349ea41721b7c4392e3f..b5d65d46db1c8827bf636d1695c6db2040505bcf 100644 (file)
@@ -530,6 +530,24 @@ EOF
       "shouldn't be able to re-use placeholder IDs"
   end
 
+  ##
+  # test for more issues in #1568
+  def test_upload_empty_invalid
+    basic_authorization "test@openstreetmap.org", "test"
+
+    [ "<osmChange/>",
+      "<osmChange></osmChange>",
+      "<osmChange><modify/></osmChange>",
+      "<osmChange><modify></modify></osmChange>"
+    ].each do |diff|
+      # upload it
+      content diff
+      post :upload, :id => 1
+      assert_response(:success, "should be able to upload " +
+                      "empty changeset: " + diff)
+    end
+  end
+
   ##
   # when we make some simple changes we get the same changes back from the 
   # diff download.