summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJeremy Evans <code@jeremyevans.net>2020-06-11 11:40:45 -0700
committerNobuyoshi Nakada <nobu@ruby-lang.org>2020-06-20 18:35:03 +0900
commitad156f7e2caa28f429a9f05f3b9b184118b85432 (patch)
tree68e629f35ba1754f339ad0e37162f101c6e455c9 /test
parentd1af2345c927a06e01002a351f0c2e36319860b7 (diff)
[ruby/date] Fix cannot load complex into simple error when loading marshal dump (Fixes #20)
This problem exists because Marshal.load calls Date.allocate, which uses a SimpleDateData. There doesn't seem to be any support for taking an existing Date instance and converting it from SimpleDateData to ComplexDateData. Work around this issue by making Date.allocate use a ComplexDateData. This causes problems in Date#initialize, so remove the Date#initialize method (keeping the date_initialize function, used internally for Date.civil). Alias Date.new to Date.civil, since they do the same thing. https://github.com/ruby/date/commit/6bb8d8fa0f
Diffstat (limited to 'test')
-rw-r--r--test/date/test_date_marshal.rb7
1 files changed, 7 insertions, 0 deletions
diff --git a/test/date/test_date_marshal.rb b/test/date/test_date_marshal.rb
index c7ce737aac..fa8b2d91f8 100644
--- a/test/date/test_date_marshal.rb
+++ b/test/date/test_date_marshal.rb
@@ -39,6 +39,13 @@ class TestDateMarshal < Test::Unit::TestCase
assert(d.frozen?)
expected_error = defined?(FrozenError) ? FrozenError : RuntimeError
assert_raise(expected_error){d.marshal_load(a)}
+
+ d = Date.new + 1/2r + 2304/65437r/86400
+ m = Marshal.dump(d)
+ d2 = Marshal.load(m)
+ assert_equal(d, d2)
+ assert_equal(d.start, d2.start)
+ assert_instance_of(String, d2.to_s)
end
def test_memsize