[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)
|
nano = Rational(nano_num, nano_den * 1_000_000_000)
|
||||||
object = Time.at(object.to_i + nano + object.subsec)
|
object = Time.at(object.to_i + nano + object.subsec)
|
||||||
elsif RUBY_ENGINE == "truffleruby"
|
elsif RUBY_ENGINE == "truffleruby"
|
||||||
|
if RUBY_ENGINE_VERSION >= "23.0.0"
|
||||||
object = Time.at(object.to_i, Rational(nano_num, nano_den).to_i, :nanosecond)
|
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"
|
else # assume "ruby"
|
||||||
nano = Rational(nano_num, nano_den)
|
nano = Rational(nano_num, nano_den)
|
||||||
nsec, subnano = nano.divmod(1)
|
nsec, subnano = nano.divmod(1)
|
||||||
@ -106,12 +110,19 @@ module Gem::SafeMarshal
|
|||||||
object = object.localtime offset
|
object = object.localtime offset
|
||||||
end
|
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
|
@objects[object_offset] = object
|
||||||
end
|
end
|
||||||
when Elements::String
|
when Elements::String
|
||||||
enc = nil
|
enc = nil
|
||||||
|
|
||||||
ivars.each do |k, v|
|
ivars.reject! do |k, v|
|
||||||
case k
|
case k
|
||||||
when :E
|
when :E
|
||||||
case v
|
case v
|
||||||
@ -119,17 +130,19 @@ module Gem::SafeMarshal
|
|||||||
enc = "UTF-8"
|
enc = "UTF-8"
|
||||||
when FalseClass
|
when FalseClass
|
||||||
enc = "US-ASCII"
|
enc = "US-ASCII"
|
||||||
|
else
|
||||||
|
enc = v
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
break
|
next false
|
||||||
end
|
end
|
||||||
idx += 1
|
true
|
||||||
end
|
end
|
||||||
|
|
||||||
object.replace ::String.new(object, encoding: enc)
|
object.replace ::String.new(object, encoding: enc)
|
||||||
end
|
end
|
||||||
|
|
||||||
ivars[idx..].each do |k, v|
|
ivars.each do |k, v|
|
||||||
object.instance_variable_set k, v
|
object.instance_variable_set k, v
|
||||||
end
|
end
|
||||||
object
|
object
|
||||||
|
@ -77,7 +77,10 @@ class TestGemSafeMarshal < Gem::TestCase
|
|||||||
Time.at(secs, 1.00001, :nanosecond),
|
Time.at(secs, 1.00001, :nanosecond),
|
||||||
].each_with_index do |t, i|
|
].each_with_index do |t, i|
|
||||||
define_method("test_time_#{i} #{t.inspect}") do
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user