@@ -99,8 +99,12 @@ class TestGemSafeMarshal < Gem::TestCase
99
99
define_method ( "test_safe_load_marshal Array [\" abc\" , \" abc\" ] Windows-1256" ) { assert_safe_load_marshal "\x04 \b [\a I\" \b abc\x06 :\r encoding\" \x11 Windows-1256@\x06 " , additional_methods : [ -> ( x ) { x . map ( &:encoding ) } ] }
100
100
define_method ( "test_safe_load_marshal String \" abc\" binary" ) { assert_safe_load_marshal "\x04 \b \" \b abc" , additional_methods : [ :encoding ] }
101
101
define_method ( "test_safe_load_marshal Array [\" abc\" , \" abc\" ] binary" ) { assert_safe_load_marshal "\x04 \b [\a \" \b abc@\x06 " , additional_methods : [ -> ( x ) { x . map ( &:encoding ) } ] }
102
- define_method ( "test_safe_load_marshal String \" \\ x61\\ x62\\ x63\" utf32" ) { assert_safe_load_marshal "\x04 \b I\" \b abc\x06 :\r encoding\" \v UTF-32" , additional_methods : [ :encoding ] }
103
- define_method ( "test_safe_load_marshal Array [\" \\ x61\\ x62\\ x63\" , \" \\ x61\\ x62\\ x63\" ] utf32" ) { assert_safe_load_marshal "\x04 \b [\a I\" \b abc\x06 :\r encoding\" \v UTF-32@\x06 " , additional_methods : [ -> ( x ) { x . map ( &:encoding ) } ] }
102
+ unless RUBY_ENGINE == "truffleruby" # Not supported
103
+ define_method ( "test_safe_load_marshal String \" \\ x61\\ x62\\ x63\" utf32 with length not a multiple of 4" ) { assert_safe_load_marshal "\x04 \b I\" \b abc\x06 :\r encoding\" \v UTF-32" , additional_methods : [ :encoding ] }
104
+ define_method ( "test_safe_load_marshal Array [\" \\ x61\\ x62\\ x63\" , \" \\ x61\\ x62\\ x63\" ] utf32 with length not a multiple of 4)" ) { assert_safe_load_marshal "\x04 \b [\a I\" \b abc\x06 :\r encoding\" \v UTF-32@\x06 " , additional_methods : [ -> ( x ) { x . map ( &:encoding ) } ] }
105
+ end
106
+ define_method ( "test_safe_load_marshal String \" \\ x61\\ x62\\ x63\\ x64\" utf32" ) { assert_safe_load_marshal "\x04 \b I\" \x09 abcd\x06 :\r encoding\" \v UTF-32" , additional_methods : [ :encoding ] }
107
+ define_method ( "test_safe_load_marshal Array [\" \\ x61\\ x62\\ x63\\ x64\" , \" \\ x61\\ x62\\ x63\\ x64\" ] utf32" ) { assert_safe_load_marshal "\x04 \b [\a I\" \x09 abcd\x06 :\r encoding\" \v UTF-32@\x06 " , additional_methods : [ -> ( x ) { x . map ( &:encoding ) } ] }
104
108
define_method ( "test_safe_load_marshal String \" abc\" ivar" ) { assert_safe_load_marshal "\x04 \b I\" \b abc\a :\x06 ET:\n @typeI\" \t type\x06 ;\x00 T" , permitted_ivars : { "String" => %w[ @type E ] } }
105
109
define_method ( "test_safe_load_marshal String \" \" " ) { assert_safe_load_marshal "\x04 \b I\" \b abc\x06 :\x06 ET" }
106
110
define_method ( "test_safe_load_marshal Time 2000-12-31 20:07:59 -1152" ) { assert_safe_load_marshal "\x04 \b Iu:\t Time\r '@\x19 \x80 \x00 \x00 \xB0 \xEF \a :\v offseti\xFE Y:\t zone0" , additional_methods : [ :ctime , :to_f , :to_r , :to_i , :zone , :subsec , :instance_variables , :dst? , :to_a ] }
@@ -163,14 +167,16 @@ def test_string_with_encoding
163
167
String . new ( "abc" , encoding : "UTF-8" ) ,
164
168
String . new ( "abc" , encoding : "Windows-1256" ) ,
165
169
String . new ( "abc" , encoding : Encoding ::BINARY ) ,
166
- String . new ( "abc" , encoding : "UTF-32" ) ,
170
+ String . new ( "abcd" , encoding : "UTF-32" ) ,
171
+ # TruffleRuby: Not supported since length of UTF-16 string must be a multiple of 2
172
+ ( String . new ( "abc" , encoding : "UTF-32" ) unless RUBY_ENGINE == "truffleruby" ) ,
167
173
168
174
String . new ( "" , encoding : "US-ASCII" ) ,
169
175
String . new ( "" , encoding : "UTF-8" ) ,
170
176
String . new ( "" , encoding : "Windows-1256" ) ,
171
177
String . new ( "" , encoding : Encoding ::BINARY ) ,
172
178
String . new ( "" , encoding : "UTF-32" ) ,
173
- ] . each do |s |
179
+ ] . compact . each do |s |
174
180
assert_safe_load_as s , additional_methods : [ :encoding ]
175
181
assert_safe_load_as [ s , s ] , additional_methods : [ -> ( a ) { a . map ( &:encoding ) } ]
176
182
end
0 commit comments