Skip to content

Commit 70cc789

Browse files
nobuandrykonchin
authored andcommitted
[Bug #20009] Support marshaling non-ASCII name class/module
1 parent 76ca1cf commit 70cc789

File tree

1 file changed

+18
-9
lines changed

1 file changed

+18
-9
lines changed

core/marshal/dump_spec.rb

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -231,9 +231,12 @@ def _dump(level)
231231
Marshal.dump(MarshalSpec::ClassWithOverriddenName).should == "\x04\bc)MarshalSpec::ClassWithOverriddenName"
232232
end
233233

234-
it "dumps a class with multibyte characters in name" do
235-
source_object = eval("MarshalSpec::MultibyteぁあぃいClass".dup.force_encoding(Encoding::UTF_8))
236-
Marshal.dump(source_object).should == "\x04\bc,MarshalSpec::Multibyte\xE3\x81\x81\xE3\x81\x82\xE3\x81\x83\xE3\x81\x84Class"
234+
ruby_version_is "3.5" do
235+
it "dumps a class with multibyte characters in name" do
236+
source_object = eval("MarshalSpec::MultibyteぁあぃいClass".dup.force_encoding(Encoding::UTF_8))
237+
Marshal.dump(source_object).should == "\x04\bIc,MarshalSpec::Multibyte\xE3\x81\x81\xE3\x81\x82\xE3\x81\x83\xE3\x81\x84Class\x06:\x06ET"
238+
Marshal.load(Marshal.dump(source_object)) == source_object
239+
end
237240
end
238241

239242
it "uses object links for objects repeatedly dumped" do
@@ -258,9 +261,12 @@ def _dump(level)
258261
Marshal.dump(MarshalSpec::ModuleWithOverriddenName).should == "\x04\bc*MarshalSpec::ModuleWithOverriddenName"
259262
end
260263

261-
it "dumps a module with multibyte characters in name" do
262-
source_object = eval("MarshalSpec::MultibyteけげこごModule".dup.force_encoding(Encoding::UTF_8))
263-
Marshal.dump(source_object).should == "\x04\bm-MarshalSpec::Multibyte\xE3\x81\x91\xE3\x81\x92\xE3\x81\x93\xE3\x81\x94Module"
264+
ruby_version_is "3.5" do
265+
it "dumps a module with multibyte characters in name" do
266+
source_object = eval("MarshalSpec::MultibyteけげこごModule".dup.force_encoding(Encoding::UTF_8))
267+
Marshal.dump(source_object).should == "\x04\bIm-MarshalSpec::Multibyte\xE3\x81\x91\xE3\x81\x92\xE3\x81\x93\xE3\x81\x94Module\x06:\x06ET"
268+
Marshal.load(Marshal.dump(source_object)) == source_object
269+
end
264270
end
265271

266272
it "uses object links for objects repeatedly dumped" do
@@ -874,9 +880,12 @@ def finalizer.noop(_)
874880
Marshal.dump(obj).should include("MarshalSpec::TimeWithOverriddenName")
875881
end
876882

877-
it "dumps a Time subclass with multibyte characters in name" do
878-
source_object = eval("MarshalSpec::MultibyteぁあぃいTime".dup.force_encoding(Encoding::UTF_8))
879-
Marshal.dump(source_object).should == "\x04\bc+MarshalSpec::Multibyte\xE3\x81\x81\xE3\x81\x82\xE3\x81\x83\xE3\x81\x84Time"
883+
ruby_version_is "3.5" do
884+
it "dumps a Time subclass with multibyte characters in name" do
885+
source_object = eval("MarshalSpec::MultibyteぁあぃいTime".dup.force_encoding(Encoding::UTF_8))
886+
Marshal.dump(source_object).should == "\x04\bIc+MarshalSpec::Multibyte\xE3\x81\x81\xE3\x81\x82\xE3\x81\x83\xE3\x81\x84Time\x06:\x06ET"
887+
Marshal.load(Marshal.dump(source_object)) == source_object
888+
end
880889
end
881890

882891
it "uses object links for objects repeatedly dumped" do

0 commit comments

Comments
 (0)