[rubygems/rubygems] Tests passing on truffleruby 22 in addition to 23
https://github.com/rubygems/rubygems/commit/8065530d43
This commit is contained in:
parent
d3628e6ac4
commit
c65c88e65c
@ -89,7 +89,11 @@ module Gem::SafeMarshal
|
||||
nano = Rational(nano_num, nano_den * 1_000_000_000)
|
||||
object = Time.at(object.to_i + nano + object.subsec)
|
||||
elsif RUBY_ENGINE == "truffleruby"
|
||||
object = Time.at(object.to_i, Rational(nano_num, nano_den).to_i, :nanosecond)
|
||||
if RUBY_ENGINE_VERSION >= "23.0.0"
|
||||
object = Time.at(object.to_i, Rational(nano_num, nano_den).to_i, :nanosecond)
|
||||
else
|
||||
object = object.floor + Rational(nano_num, nano_den * 1_000_000_000)
|
||||
end
|
||||
else # assume "ruby"
|
||||
nano = Rational(nano_num, nano_den)
|
||||
nsec, subnano = nano.divmod(1)
|
||||
@ -106,12 +110,19 @@ module Gem::SafeMarshal
|
||||
object = object.localtime offset
|
||||
end
|
||||
|
||||
if RUBY_ENGINE == "truffleruby" && RUBY_ENGINE_VERSION < "23.0.0"
|
||||
ivars << [:@offset, offset]
|
||||
ivars << [:@zone, zone]
|
||||
ivars << [:@nano_num, nano_num] if nano_num
|
||||
ivars << [:@nano_den, nano_den] if nano_den
|
||||
end
|
||||
|
||||
@objects[object_offset] = object
|
||||
end
|
||||
when Elements::String
|
||||
enc = nil
|
||||
|
||||
ivars.each do |k, v|
|
||||
ivars.reject! do |k, v|
|
||||
case k
|
||||
when :E
|
||||
case v
|
||||
@ -119,17 +130,19 @@ module Gem::SafeMarshal
|
||||
enc = "UTF-8"
|
||||
when FalseClass
|
||||
enc = "US-ASCII"
|
||||
else
|
||||
enc = v
|
||||
end
|
||||
else
|
||||
break
|
||||
next false
|
||||
end
|
||||
idx += 1
|
||||
true
|
||||
end
|
||||
|
||||
object.replace ::String.new(object, encoding: enc)
|
||||
end
|
||||
|
||||
ivars[idx..].each do |k, v|
|
||||
ivars.each do |k, v|
|
||||
object.instance_variable_set k, v
|
||||
end
|
||||
object
|
||||
|
@ -77,7 +77,10 @@ class TestGemSafeMarshal < Gem::TestCase
|
||||
Time.at(secs, 1.00001, :nanosecond),
|
||||
].each_with_index do |t, i|
|
||||
define_method("test_time_#{i} #{t.inspect}") do
|
||||
assert_safe_load_as t, additional_methods: [:ctime, :to_f, :to_r, :to_i, :zone, :subsec, :instance_variables, :dst?, :to_a]
|
||||
pend "Marshal.load of Time with custom zone is broken before Truffleruby 23" if t.zone.nil? && RUBY_ENGINE == "truffleruby" && RUBY_ENGINE_VERSION < "23"
|
||||
|
||||
additional_methods = [:ctime, :to_f, :to_r, :to_i, :zone, :subsec, :instance_variables, :dst?, :to_a]
|
||||
assert_safe_load_as t, additional_methods: additional_methods
|
||||
end
|
||||
end
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user