@@ -99,8 +99,12 @@ class TestGemSafeMarshal < Gem::TestCase
9999 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 ) } ] }
100100 define_method ( "test_safe_load_marshal String \" abc\" binary" ) { assert_safe_load_marshal "\x04 \b \" \b abc" , additional_methods : [ :encoding ] }
101101 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 ) } ] }
104108 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 ] } }
105109 define_method ( "test_safe_load_marshal String \" \" " ) { assert_safe_load_marshal "\x04 \b I\" \b abc\x06 :\x06 ET" }
106110 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
163167 String . new ( "abc" , encoding : "UTF-8" ) ,
164168 String . new ( "abc" , encoding : "Windows-1256" ) ,
165169 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" ) ,
167173
168174 String . new ( "" , encoding : "US-ASCII" ) ,
169175 String . new ( "" , encoding : "UTF-8" ) ,
170176 String . new ( "" , encoding : "Windows-1256" ) ,
171177 String . new ( "" , encoding : Encoding ::BINARY ) ,
172178 String . new ( "" , encoding : "UTF-32" ) ,
173- ] . each do |s |
179+ ] . compact . each do |s |
174180 assert_safe_load_as s , additional_methods : [ :encoding ]
175181 assert_safe_load_as [ s , s ] , additional_methods : [ -> ( a ) { a . map ( &:encoding ) } ]
176182 end
0 commit comments