Update spec/ruby/ for colon-style hash inspect

This commit is contained in:
tompng 2024-06-14 21:57:41 +09:00 committed by Yusuke Endoh
parent af1c356c7b
commit c94815bab7
Notes: git 2024-10-03 09:47:27 +00:00
7 changed files with 29 additions and 30 deletions

View file

@ -4,14 +4,8 @@ require_relative '../fixtures/classes'
describe :hash_to_s, shared: true do describe :hash_to_s, shared: true do
it "returns a string representation with same order as each()" do it "returns a string representation with same order as each()" do
h = { a: [1, 2], b: -2, d: -6, nil => nil } h = { a: [1, 2], b: -2, d: -6, nil => nil }
expected = ruby_version_is("3.4") ? "{a: [1, 2], b: -2, d: -6, nil => nil}" : "{:a=>[1, 2], :b=>-2, :d=>-6, nil=>nil}"
pairs = [] h.send(@method).should == expected
h.each do |key, value|
pairs << key.inspect + '=>' + value.inspect
end
str = '{' + pairs.join(', ') + '}'
h.send(@method).should == str
end end
it "calls #inspect on keys and values" do it "calls #inspect on keys and values" do
@ -19,31 +13,31 @@ describe :hash_to_s, shared: true do
val = mock('val') val = mock('val')
key.should_receive(:inspect).and_return('key') key.should_receive(:inspect).and_return('key')
val.should_receive(:inspect).and_return('val') val.should_receive(:inspect).and_return('val')
expected = ruby_version_is("3.4") ? "{key => val}" : "{key=>val}"
{ key => val }.send(@method).should == '{key=>val}' { key => val }.send(@method).should == expected
end end
it "does not call #to_s on a String returned from #inspect" do it "does not call #to_s on a String returned from #inspect" do
str = +"abc" str = +"abc"
str.should_not_receive(:to_s) str.should_not_receive(:to_s)
expected = ruby_version_is("3.4") ? '{a: "abc"}' : '{:a=>"abc"}'
{ a: str }.send(@method).should == '{:a=>"abc"}' { a: str }.send(@method).should == expected
end end
it "calls #to_s on the object returned from #inspect if the Object isn't a String" do it "calls #to_s on the object returned from #inspect if the Object isn't a String" do
obj = mock("Hash#inspect/to_s calls #to_s") obj = mock("Hash#inspect/to_s calls #to_s")
obj.should_receive(:inspect).and_return(obj) obj.should_receive(:inspect).and_return(obj)
obj.should_receive(:to_s).and_return("abc") obj.should_receive(:to_s).and_return("abc")
expected = ruby_version_is("3.4") ? "{a: abc}" : "{:a=>abc}"
{ a: obj }.send(@method).should == "{:a=>abc}" { a: obj }.send(@method).should == expected
end end
it "does not call #to_str on the object returned from #inspect when it is not a String" do it "does not call #to_str on the object returned from #inspect when it is not a String" do
obj = mock("Hash#inspect/to_s does not call #to_str") obj = mock("Hash#inspect/to_s does not call #to_str")
obj.should_receive(:inspect).and_return(obj) obj.should_receive(:inspect).and_return(obj)
obj.should_not_receive(:to_str) obj.should_not_receive(:to_str)
expected_pattern = ruby_version_is("3.4") ? /^\{a: #<MockObject:0x[0-9a-f]+>\}$/ : /^\{:a=>#<MockObject:0x[0-9a-f]+>\}$/
{ a: obj }.send(@method).should =~ /^\{:a=>#<MockObject:0x[0-9a-f]+>\}$/ { a: obj }.send(@method).should =~ expected_pattern
end end
it "does not call #to_str on the object returned from #to_s when it is not a String" do it "does not call #to_str on the object returned from #to_s when it is not a String" do
@ -51,8 +45,8 @@ describe :hash_to_s, shared: true do
obj.should_receive(:inspect).and_return(obj) obj.should_receive(:inspect).and_return(obj)
obj.should_receive(:to_s).and_return(obj) obj.should_receive(:to_s).and_return(obj)
obj.should_not_receive(:to_str) obj.should_not_receive(:to_str)
expected_pattern = ruby_version_is("3.4") ? /^\{a: #<MockObject:0x[0-9a-f]+>\}$/ : /^\{:a=>#<MockObject:0x[0-9a-f]+>\}$/
{ a: obj }.send(@method).should =~ /^\{:a=>#<MockObject:0x[0-9a-f]+>\}$/ { a: obj }.send(@method).should =~ expected_pattern
end end
it "does not swallow exceptions raised by #to_s" do it "does not swallow exceptions raised by #to_s" do
@ -66,24 +60,28 @@ describe :hash_to_s, shared: true do
it "handles hashes with recursive values" do it "handles hashes with recursive values" do
x = {} x = {}
x[0] = x x[0] = x
x.send(@method).should == '{0=>{...}}' expected = ruby_version_is("3.4") ? '{0 => {...}}' : '{0=>{...}}'
x.send(@method).should == expected
x = {} x = {}
y = {} y = {}
x[0] = y x[0] = y
y[1] = x y[1] = x
x.send(@method).should == "{0=>{1=>{...}}}" expected_x = ruby_version_is("3.4") ? '{0 => {1 => {...}}}' : '{0=>{1=>{...}}}'
y.send(@method).should == "{1=>{0=>{...}}}" expected_y = ruby_version_is("3.4") ? '{1 => {0 => {...}}}' : '{1=>{0=>{...}}}'
x.send(@method).should == expected_x
y.send(@method).should == expected_y
end end
it "does not raise if inspected result is not default external encoding" do it "does not raise if inspected result is not default external encoding" do
utf_16be = mock("utf_16be") utf_16be = mock("utf_16be")
utf_16be.should_receive(:inspect).and_return(%<"utf_16be \u3042">.encode(Encoding::UTF_16BE)) utf_16be.should_receive(:inspect).and_return(%<"utf_16be \u3042">.encode(Encoding::UTF_16BE))
expected = ruby_version_is("3.4") ? '{a: "utf_16be \u3042"}' : '{:a=>"utf_16be \u3042"}'
{a: utf_16be}.send(@method).should == '{:a=>"utf_16be \u3042"}' {a: utf_16be}.send(@method).should == expected
end end
it "works for keys and values whose #inspect return a frozen String" do it "works for keys and values whose #inspect return a frozen String" do
{ true => false }.to_s.should == "{true=>false}" expected = ruby_version_is("3.4") ? "{true => false}" : "{true=>false}"
{ true => false }.to_s.should == expected
end end
end end

View file

@ -570,7 +570,7 @@ describe "String#%" do
("%1$p" % [10, 5]).should == "10" ("%1$p" % [10, 5]).should == "10"
("%-22p" % 10).should == "10 " ("%-22p" % 10).should == "10 "
("%*p" % [10, 10]).should == " 10" ("%*p" % [10, 10]).should == " 10"
("%p" % {capture: 1}).should == "{:capture=>1}" ("%p" % {capture: 1}).should == {capture: 1}.inspect
("%p" % "str").should == "\"str\"" ("%p" % "str").should == "\"str\""
end end

View file

@ -232,11 +232,12 @@ describe "Pattern matching" do
end end
}.should raise_error(NoMatchingPatternError, /\[0, 1\]/) }.should raise_error(NoMatchingPatternError, /\[0, 1\]/)
error_pattern = ruby_version_is("3.4") ? /\{a: 0, b: 1\}/ : /\{:a=>0, :b=>1\}/
-> { -> {
case {a: 0, b: 1} case {a: 0, b: 1}
in a: 1, b: 1 in a: 1, b: 1
end end
}.should raise_error(NoMatchingPatternError, /\{:a=>0, :b=>1\}/) }.should raise_error(NoMatchingPatternError, error_pattern)
end end
it "raises NoMatchingPatternError if no pattern matches and evaluates the expression only once" do it "raises NoMatchingPatternError if no pattern matches and evaluates the expression only once" do

View file

@ -27,7 +27,7 @@ describe "Net::HTTP.post" do
it "sends Content-Type: application/x-www-form-urlencoded by default" do it "sends Content-Type: application/x-www-form-urlencoded by default" do
response = Net::HTTP.post(URI("http://localhost:#{NetHTTPSpecs.port}/request/header"), "test=test") response = Net::HTTP.post(URI("http://localhost:#{NetHTTPSpecs.port}/request/header"), "test=test")
response.body.should include('"Content-Type"=>"application/x-www-form-urlencoded"') response.body.should include({ "Content-Type" => "application/x-www-form-urlencoded" }.inspect.delete("{}"))
end end
it "does not support HTTP Basic Auth" do it "does not support HTTP Basic Auth" do

View file

@ -54,7 +54,7 @@ describe "Net::HTTP#send_request" do
@methods.each do |method| @methods.each do |method|
response = @http.send_request(method, "/request/header", "test=test", "referer" => referer) response = @http.send_request(method, "/request/header", "test=test", "referer" => referer)
response.body.should include('"Referer"=>"' + referer + '"') response.body.should include({ "Referer" => referer }.inspect.delete("{}"))
end end
end end
end end

View file

@ -25,6 +25,6 @@ describe "PP.pp" do
hash = { 'key' => 42 } hash = { 'key' => 42 }
-> { -> {
PP.pp hash PP.pp hash
}.should output('{"key"=>42}' + "\n") }.should output("#{hash.inspect}\n")
end end
end end

View file

@ -1096,7 +1096,7 @@ end
end end
it "tries to convert the passed argument to a string by calling #to_s" do it "tries to convert the passed argument to a string by calling #to_s" do
@s.rb_String({"bar" => "foo"}).should == '{"bar"=>"foo"}' @s.rb_String({"bar" => "foo"}).should == {"bar" => "foo"}.to_s
end end
end end