Skip to content

Commit afce327

Browse files
committed
Avoid UTF-32 and UTF-16 strings with trailing bytes in mri tests.
PullRequest: truffleruby/4419
2 parents 40f369b + 3e2ab04 commit afce327

File tree

6 files changed

+27
-17
lines changed

6 files changed

+27
-17
lines changed

spec/ruby/core/file/expand_path_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@
159159
platform_is_not :windows do
160160
it "raises an Encoding::CompatibilityError if the external encoding is not compatible" do
161161
Encoding.default_external = Encoding::UTF_16BE
162-
-> { File.expand_path("./ab") }.should raise_error(Encoding::CompatibilityError)
162+
-> { File.expand_path("./a") }.should raise_error(Encoding::CompatibilityError)
163163
end
164164
end
165165

test/mri/tests/ruby/enc/test_utf16.rb

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -71,15 +71,15 @@ def test_utf16be_valid_encoding
7171
}
7272
}
7373
[
74-
"\x00",
75-
"\xd7",
74+
# "\x00", # TruffleString: UTF-16 string byte length is not a multiple of 2
75+
# "\xd7",
7676
"\xd8\x00",
7777
"\xd8\x00\xd8\x00",
7878
"\xdc\x00",
7979
"\xdc\x00\xd8\x00",
8080
"\xdc\x00\xdc\x00",
81-
"\xe0",
82-
"\xff",
81+
# "\xe0",
82+
# "\xff",
8383
].each {|s|
8484
s.force_encoding("utf-16be")
8585
a.for(s) {
@@ -151,8 +151,11 @@ def test_casecmp
151151
end
152152

153153
def test_end_with
154-
s1 = "ab".force_encoding("utf-16be")
155-
s2 = "b".force_encoding("utf-16be")
154+
# TruffleString: UTF-16 string byte length is not a multiple of 2
155+
# s1 = "ab".force_encoding("utf-16be")
156+
# s2 = "b".force_encoding("utf-16be")
157+
s1 = "\xd8\x00\xdc\x00".force_encoding("utf-16be")
158+
s2 = "\xdc\x00".force_encoding("utf-16be")
156159
assert_equal(false, s1.end_with?(s2), "#{encdump s1}.end_with?(#{encdump s2})")
157160
end
158161

test/mri/tests/ruby/enc/test_utf32.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,9 @@ def test_utf32be_valid_encoding
108108
}
109109
}
110110
[
111-
"a",
112-
"\x00a",
113-
"\x00\x00a",
111+
# "a", # TruffleString: UTF-32 string byte length is not a multiple of 4
112+
# "\x00a",
113+
# "\x00\x00a",
114114
"\x00\x00\xd8\x00",
115115
"\x00\x00\xdb\xff",
116116
"\x00\x00\xdc\x00",

test/mri/tests/ruby/test_m17n_comb.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ def assert_strenc(bytes, enc, actual, message=nil)
5858
WSTRINGS = [
5959
"aa".force_encoding("utf-16be"),
6060
"aaaa".force_encoding("utf-32be"),
61-
"aaa".force_encoding("utf-32be"),
61+
# TruffleString: UTF-32 string byte length is not a multiple of 4
62+
# "aaa".force_encoding("utf-32be"),
6263
]
6364

6465
def combination(*args, &b)

test/mri/tests/ruby/test_regexp.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -939,9 +939,10 @@ def test_quote
939939
assert_equal("\u3042\\t", Regexp.quote("\u3042\t"))
940940
assert_equal("\\t\xff", Regexp.quote("\t" + [0xff].pack("C")))
941941

942-
bug13034 = '[ruby-core:78646] [Bug #13034]'
943-
str = "\x00".force_encoding("UTF-16BE")
944-
assert_equal(str, Regexp.quote(str), bug13034)
942+
# TruffleString: length of utf-16 string is not a multiple of 2
943+
# bug13034 = '[ruby-core:78646] [Bug #13034]'
944+
# str = "\x00".force_encoding("UTF-16BE")
945+
# assert_equal(str, Regexp.quote(str), bug13034)
945946
end
946947

947948
def test_try_convert

test/mri/tests/rubygems/test_gem_safe_marshal.rb

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,11 @@ class TestGemSafeMarshal < Gem::TestCase
9999
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) }] }
100100
define_method("test_safe_load_marshal String \"abc\" binary") { assert_safe_load_marshal "\x04\b\"\babc", additional_methods: [:encoding] }
101101
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) }] }
102-
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] }
103-
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) }] }
102+
# TruffleString: UTF-32 string byte length is not a multiple of 4
103+
# 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] }
104+
# 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) }] }
105+
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] }
106+
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) }] }
104107
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] } }
105108
define_method("test_safe_load_marshal String \"\"") { assert_safe_load_marshal "\x04\bI\"\babc\x06:\x06ET" }
106109
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,7 +166,9 @@ def test_string_with_encoding
163166
String.new("abc", encoding: "UTF-8"),
164167
String.new("abc", encoding: "Windows-1256"),
165168
String.new("abc", encoding: Encoding::BINARY),
166-
String.new("abc", encoding: "UTF-32"),
169+
# TruffleRuby: length of UTF-16 string is not a multiple of 2
170+
# String.new("abc", encoding: "UTF-32"),
171+
String.new("abcd", encoding: "UTF-32"),
167172

168173
String.new("", encoding: "US-ASCII"),
169174
String.new("", encoding: "UTF-8"),

0 commit comments

Comments
 (0)