diff options
author | Jon Leighton <j@jonathanleighton.com> | 2011-08-13 13:54:54 +0100 |
---|---|---|
committer | Jon Leighton <j@jonathanleighton.com> | 2011-08-13 13:54:54 +0100 |
commit | 34689c40a03c9921b5c43ac1e120a9885edded73 (patch) | |
tree | c1b70ae5e71a48daa96b357787c9a56085e169fe | |
parent | 6b56f059bfb5e0c9ff4198864cf469077bb91b71 (diff) | |
download | rails-34689c40a03c9921b5c43ac1e120a9885edded73.tar.gz rails-34689c40a03c9921b5c43ac1e120a9885edded73.tar.bz2 rails-34689c40a03c9921b5c43ac1e120a9885edded73.zip |
Work around for lolruby bug. (Read on for explanation.)
We were experiencing CI test failures, for example:
* 3-1-stable: http://travis-ci.org/#!/rails/rails/builds/79473/L407
* master: http://travis-ci.org/#!/rails/rails/builds/79507/L80
These failures only happened on 1.8.7-p352, and we were only able to
reproduce on the Travis CI VM worker. We even tried creating a new 32
bit Ubuntu VM and running the tests on that, and it all worked fine.
After some epic trial and error, we discovered that replacing the
following:
fuu = Marshal.load(Marshal.dump(fuu))
with:
marshalled = Marshal.dump(fuu)
fuu = Marshal.load(marshalled)
seemed to prevent the failure.
We have NO IDEA why this is. If anyone has some great insight to
contribute then that is welcome. Otherwise, hopefully this will just
help us get the CI green again.
Many thanks to @joshk for help with sorting this out.
-rw-r--r-- | activerecord/test/cases/associations/extension_test.rb | 8 | ||||
-rw-r--r-- | activerecord/test/cases/base_test.rb | 11 |
2 files changed, 14 insertions, 5 deletions
diff --git a/activerecord/test/cases/associations/extension_test.rb b/activerecord/test/cases/associations/extension_test.rb index 24830a661a..490fc5177e 100644 --- a/activerecord/test/cases/associations/extension_test.rb +++ b/activerecord/test/cases/associations/extension_test.rb @@ -39,7 +39,9 @@ class AssociationsExtensionsTest < ActiveRecord::TestCase david = developers(:david) assert_equal projects(:action_controller), david.projects.find_most_recent - david = Marshal.load(Marshal.dump(david)) + marshalled = Marshal.dump(david) + david = Marshal.load(marshalled) + assert_equal projects(:action_controller), david.projects.find_most_recent end @@ -47,7 +49,9 @@ class AssociationsExtensionsTest < ActiveRecord::TestCase david = developers(:david) assert_equal projects(:action_controller), david.projects_extended_by_name.find_most_recent - david = Marshal.load(Marshal.dump(david)) + marshalled = Marshal.dump(david) + david = Marshal.load(marshalled) + assert_equal projects(:action_controller), david.projects_extended_by_name.find_most_recent end diff --git a/activerecord/test/cases/base_test.rb b/activerecord/test/cases/base_test.rb index c78d887ed7..b8ebabfe70 100644 --- a/activerecord/test/cases/base_test.rb +++ b/activerecord/test/cases/base_test.rb @@ -1808,20 +1808,25 @@ class BasicsTest < ActiveRecord::TestCase def test_marshal_round_trip expected = posts(:welcome) - actual = Marshal.load(Marshal.dump(expected)) + marshalled = Marshal.dump(expected) + actual = Marshal.load(marshalled) assert_equal expected.attributes, actual.attributes end def test_marshal_new_record_round_trip - post = Marshal.load(Marshal.dump(Post.new)) + marshalled = Marshal.dump(Post.new) + post = Marshal.load(marshalled) + assert post.new_record?, "should be a new record" end def test_marshalling_with_associations post = Post.new post.comments.build - post = Marshal.load(Marshal.dump(post)) + + marshalled = Marshal.dump(post) + post = Marshal.load(marshalled) assert_equal 1, post.comments.length end |