diff options
| author | Josef Haider <josef.haider@oracle.com> | 2024-12-04 15:46:00 +0000 |
|---|---|---|
| committer | git <svn-admin@ruby-lang.org> | 2024-12-11 17:06:13 +0000 |
| commit | 13530af05a5783173d09c50da20539171c79fb5e (patch) | |
| tree | 822976ef51273f2ac22753ec68a0fbdea0e6c681 /test | |
| parent | b37ab8c1232f1ae3b43050f574fdb771a1dedc5c (diff) | |
[rubygems/rubygems] Avoid UTF-32 and UTF-16 strings with trailing bytes in truffleruby
https://github.com/rubygems/rubygems/commit/5f8249471f
Diffstat (limited to 'test')
| -rw-r--r-- | test/rubygems/test_gem_safe_marshal.rb | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/test/rubygems/test_gem_safe_marshal.rb b/test/rubygems/test_gem_safe_marshal.rb index 1085aca9fd..b33028c17b 100644 --- a/test/rubygems/test_gem_safe_marshal.rb +++ b/test/rubygems/test_gem_safe_marshal.rb @@ -99,8 +99,12 @@ class TestGemSafeMarshal < Gem::TestCase define_method("test_safe_load_marshal Array [\"abc\", \"abc\"] Windows-1256") { assert_safe_load_marshal "\x04\b[\aI\"\babc\x06:\rencoding\"\x11Windows-1256@\x06", additional_methods: [->(x) { x.map(&:encoding) }] } define_method("test_safe_load_marshal String \"abc\" binary") { assert_safe_load_marshal "\x04\b\"\babc", additional_methods: [:encoding] } define_method("test_safe_load_marshal Array [\"abc\", \"abc\"] binary") { assert_safe_load_marshal "\x04\b[\a\"\babc@\x06", additional_methods: [->(x) { x.map(&:encoding) }] } - define_method("test_safe_load_marshal String \"\\x61\\x62\\x63\" utf32") { assert_safe_load_marshal "\x04\bI\"\babc\x06:\rencoding\"\vUTF-32", additional_methods: [:encoding] } - define_method("test_safe_load_marshal Array [\"\\x61\\x62\\x63\", \"\\x61\\x62\\x63\"] utf32") { assert_safe_load_marshal "\x04\b[\aI\"\babc\x06:\rencoding\"\vUTF-32@\x06", additional_methods: [->(x) { x.map(&:encoding) }] } + unless RUBY_ENGINE == "truffleruby" # Not supported + define_method("test_safe_load_marshal String \"\\x61\\x62\\x63\" utf32 with length not a multiple of 4") { assert_safe_load_marshal "\x04\bI\"\babc\x06:\rencoding\"\vUTF-32", additional_methods: [:encoding] } + 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[\aI\"\babc\x06:\rencoding\"\vUTF-32@\x06", additional_methods: [->(x) { x.map(&:encoding) }] } + end + define_method("test_safe_load_marshal String \"\\x61\\x62\\x63\\x64\" utf32") { assert_safe_load_marshal "\x04\bI\"\x09abcd\x06:\rencoding\"\vUTF-32", additional_methods: [:encoding] } + define_method("test_safe_load_marshal Array [\"\\x61\\x62\\x63\\x64\", \"\\x61\\x62\\x63\\x64\"] utf32") { assert_safe_load_marshal "\x04\b[\aI\"\x09abcd\x06:\rencoding\"\vUTF-32@\x06", additional_methods: [->(x) { x.map(&:encoding) }] } define_method("test_safe_load_marshal String \"abc\" ivar") { assert_safe_load_marshal "\x04\bI\"\babc\a:\x06ET:\n@typeI\"\ttype\x06;\x00T", permitted_ivars: { "String" => %w[@type E] } } define_method("test_safe_load_marshal String \"\"") { assert_safe_load_marshal "\x04\bI\"\babc\x06:\x06ET" } define_method("test_safe_load_marshal Time 2000-12-31 20:07:59 -1152") { assert_safe_load_marshal "\x04\bIu:\tTime\r'@\x19\x80\x00\x00\xB0\xEF\a:\voffseti\xFE Y:\tzone0", additional_methods: [:ctime, :to_f, :to_r, :to_i, :zone, :subsec, :instance_variables, :dst?, :to_a] } @@ -163,14 +167,16 @@ class TestGemSafeMarshal < Gem::TestCase String.new("abc", encoding: "UTF-8"), String.new("abc", encoding: "Windows-1256"), String.new("abc", encoding: Encoding::BINARY), - String.new("abc", encoding: "UTF-32"), + String.new("abcd", encoding: "UTF-32"), + # TruffleRuby: Not supported since length of UTF-16 string must be a multiple of 2 + (String.new("abc", encoding: "UTF-32") unless RUBY_ENGINE == "truffleruby"), String.new("", encoding: "US-ASCII"), String.new("", encoding: "UTF-8"), String.new("", encoding: "Windows-1256"), String.new("", encoding: Encoding::BINARY), String.new("", encoding: "UTF-32"), - ].each do |s| + ].compact.each do |s| assert_safe_load_as s, additional_methods: [:encoding] assert_safe_load_as [s, s], additional_methods: [->(a) { a.map(&:encoding) }] end |
