[OSM-dev] Rails_port unit tests 3 errors, functional tests 39 failures -- found fix

Shaun McDonald shaun at shaunmcdonald.me.uk
Mon Jan 18 01:18:26 GMT 2010


If you are getting exactly three errors, and the tests that are failing are test_changes_simple, test_changes_zoom_invalid and test_changes_zoom_valid, then you need to install the quadtile functions.

See the following comment:
http://trac.openstreetmap.org/browser/sites/rails_port/test/functional/api_controller_test.rb#L197

Shaun

On 17 Jan 2010, at 22:25, Jonathan-David SCHRODER wrote:

> Hello Steve,
> 
> thanks for what found and did.
> I had three errors too running the tests though I don't remember what, on an Ubuntu 8.04 server too on Amazon EC2.
> When I deploy rails from trunk on another machine I'll hopefully have no more errors running the tests.
> 
> Thank you very much, take care,
> 
> Jonathan
> 
> On Sun, Jan 17, 2010 at 5:50 PM, Steve <steveh1966 at msn.com> wrote:
> Hi everyone,
> 
>  
> Ubuntu server 8.04.3 install
> 
>  
> Whenever I ran 'rake test', I would get 3 unit errors and 39 functional failures ie:
> 
>  
>   1) Error:
> 
> test_create(NodeTest):
> 
> OSM::APIChangesetAlreadyClosedError: The changeset 1 was closed at Tue Jan 12 18:46:10 UTC 2010
> 
>     lib/consistency_validations.rb:29:in `check_create_consistency'
> 
>     app/models/node.rb:180:in `create_with_history'
> 
>     /test/unit/node_test.rb:85:in `test_create'
> 
>  
> with the 2nd and 3rd errors always complaining about changeset closed also, and functional test errors like:
> 
>  
>  36) Failure:
> 
> test_update_relation_tags_via_upload(RelationControllerTest)
> 
>     [/test/functional/relation_controller_test.rb:835:in `with_update_diff'
> 
>      /test/functional/../test_helper.rb:86:in `with_controller'
> 
>      /test/functional/relation_controller_test.rb:825:in `with_update_diff'
> 
>      /test/functional/relation_controller_test.rb:314:in `test_update_relation_tags_via_upload'
> 
>      /test/functional/relation_controller_test.rb:792:in `with_relation'
> 
>      /test/functional/relation_controller_test.rb:307:in `test_update_relation_tags_via_upload']:
> 
> can't upload diff relation: The changeset 2 was closed at Wed Jan 13 06:27:56 UTC 2010.
> 
> Expected response to be a <:success>, but was <409>
> 
>  
> Again, complaining about closed changesets.
> 
>  
> Finally, after five (possibly more) OS, Ruby, Rails and Rails_port reinstalls, decided to look at the code even though previous posts concerning this error were always thought to be ruby/rails, or outdated svn rails_port problems. http://www.mail-archive.com/dev@openstreetmap.org/msg07830.html
> 
>  
> Found that in /app/models/changeset.rb open changesets are determined by,
> 
>  
>   def is_open?
> 
>     return ((closed_at > Time.now.getutc) and (num_changes <= MAX_ELEMENTS))
> 
>   end
> 
>  
> Here the Ruby 'Time' function is called referencing UTC, but in /tests/fixtures/changsets.yml the 'Open" changesets were polulated with:
> 
>  
>   closed_at: <%= DateTime.now + Rational(1,24) %>
> 
>  
> Ruby 'Time' and "DateTime' are not interchangeable: http://stackoverflow.com/questions/279769/convert-to-from-datetime-and-time-in-ruby
> 
>  
> They are 2 defferent classes.
> 
>  
> I modified my local changesets.yml to use Time.now.utc only, ie:
> 
>  
> # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
> 
> normal_user_first_change:
> 
>   id: 1
> 
>   user_id: 1
> 
>   created_at: "2007-01-01 00:00:00"
> 
>   closed_at: <%= Time.now.utc + 86400 %>
> 
>   min_lon: <%= 1 * SCALE %>
> 
>   min_lat: <%= 1 * SCALE %>
> 
>   max_lon: <%= 5 * SCALE %>
> 
>   max_lat: <%= 5 * SCALE %>
> 
>   num_changes: 11
> 
>   
> public_user_first_change:
> 
>   id: 2
> 
>   user_id: 2
> 
>   created_at: <%= Time.now.utc %>
> 
>   closed_at: <%= Time.now.utc + 86400 %>
> 
>   num_changes: 0
> 
>  
> Where the 86400 is 24 hours in seconds, and all 3 errors and 39 failures disappeared, and 100% 'rake test's’ now pass!
> 
>  
> Haven't looked into why DateTime would work on some installs and not others, (timezone, local date format??) but just fixing the changesets.yml to be consistent with how the open changeset is being determined seems to work like it should.
> 
>  
> Would someone with svn write capability want to update changesets.yml?  I can post the code as the file is not too long.
> 
>  
> Bye,
> 
> Steve
> 
> 
> _______________________________________________
> dev mailing list
> dev at openstreetmap.org
> http://lists.openstreetmap.org/listinfo/dev
> 
> 
> _______________________________________________
> dev mailing list
> dev at openstreetmap.org
> http://lists.openstreetmap.org/listinfo/dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstreetmap.org/pipermail/dev/attachments/20100118/8077723f/attachment.html>


More information about the dev mailing list