mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Update to ruby/spec@875a09e
This commit is contained in:
parent
a06301b103
commit
5c276e1cc9
1247 changed files with 5316 additions and 5028 deletions
|
@ -4,7 +4,7 @@ require_relative '../../shared/hash/key_error'
|
|||
|
||||
describe "String#%" do
|
||||
context "when key is missing from passed-in hash" do
|
||||
it_behaves_like :key_error, -> (obj, key) { "%{#{key}}" % obj }, { a: 5 }
|
||||
it_behaves_like :key_error, -> obj, key { "%{#{key}}" % obj }, { a: 5 }
|
||||
end
|
||||
|
||||
it "formats multiple expressions" do
|
||||
|
@ -32,7 +32,7 @@ describe "String#%" do
|
|||
end
|
||||
|
||||
it "raises if a compatible encoding can't be found" do
|
||||
lambda { "hello %s".encode("utf-8") % "world".encode("UTF-16LE") }.should raise_error(Encoding::CompatibilityError)
|
||||
-> { "hello %s".encode("utf-8") % "world".encode("UTF-16LE") }.should raise_error(Encoding::CompatibilityError)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -45,8 +45,8 @@ describe "String#%" do
|
|||
|
||||
ruby_version_is "2.5" do
|
||||
it "raises an error if single % appears at the end" do
|
||||
lambda { ("%" % []) }.should raise_error(ArgumentError)
|
||||
lambda { ("foo%" % [])}.should raise_error(ArgumentError)
|
||||
-> { ("%" % []) }.should raise_error(ArgumentError)
|
||||
-> { ("foo%" % [])}.should raise_error(ArgumentError)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -63,18 +63,18 @@ describe "String#%" do
|
|||
end
|
||||
|
||||
it "raises an error if single % appears anywhere else" do
|
||||
lambda { (" % " % []) }.should raise_error(ArgumentError)
|
||||
lambda { ("foo%quux" % []) }.should raise_error(ArgumentError)
|
||||
-> { (" % " % []) }.should raise_error(ArgumentError)
|
||||
-> { ("foo%quux" % []) }.should raise_error(ArgumentError)
|
||||
end
|
||||
|
||||
it "raises an error if NULL or \\n appear anywhere else in the format string" do
|
||||
begin
|
||||
old_debug, $DEBUG = $DEBUG, false
|
||||
|
||||
lambda { "%.\n3f" % 1.2 }.should raise_error(ArgumentError)
|
||||
lambda { "%.3\nf" % 1.2 }.should raise_error(ArgumentError)
|
||||
lambda { "%.\03f" % 1.2 }.should raise_error(ArgumentError)
|
||||
lambda { "%.3\0f" % 1.2 }.should raise_error(ArgumentError)
|
||||
-> { "%.\n3f" % 1.2 }.should raise_error(ArgumentError)
|
||||
-> { "%.3\nf" % 1.2 }.should raise_error(ArgumentError)
|
||||
-> { "%.\03f" % 1.2 }.should raise_error(ArgumentError)
|
||||
-> { "%.3\0f" % 1.2 }.should raise_error(ArgumentError)
|
||||
ensure
|
||||
$DEBUG = old_debug
|
||||
end
|
||||
|
@ -99,8 +99,8 @@ describe "String#%" do
|
|||
s = $stderr
|
||||
$stderr = IOStub.new
|
||||
|
||||
lambda { "" % [1, 2, 3] }.should raise_error(ArgumentError)
|
||||
lambda { "%s" % [1, 2, 3] }.should raise_error(ArgumentError)
|
||||
-> { "" % [1, 2, 3] }.should raise_error(ArgumentError)
|
||||
-> { "%s" % [1, 2, 3] }.should raise_error(ArgumentError)
|
||||
ensure
|
||||
$DEBUG = old_debug
|
||||
$stderr = s
|
||||
|
@ -125,21 +125,21 @@ describe "String#%" do
|
|||
end
|
||||
|
||||
it "raises an ArgumentError when given invalid argument specifiers" do
|
||||
lambda { "%1" % [] }.should raise_error(ArgumentError)
|
||||
lambda { "%+" % [] }.should raise_error(ArgumentError)
|
||||
lambda { "%-" % [] }.should raise_error(ArgumentError)
|
||||
lambda { "%#" % [] }.should raise_error(ArgumentError)
|
||||
lambda { "%0" % [] }.should raise_error(ArgumentError)
|
||||
lambda { "%*" % [] }.should raise_error(ArgumentError)
|
||||
lambda { "%." % [] }.should raise_error(ArgumentError)
|
||||
lambda { "%_" % [] }.should raise_error(ArgumentError)
|
||||
lambda { "%0$s" % "x" }.should raise_error(ArgumentError)
|
||||
lambda { "%*0$s" % [5, "x"] }.should raise_error(ArgumentError)
|
||||
lambda { "%*1$.*0$1$s" % [1, 2, 3] }.should raise_error(ArgumentError)
|
||||
-> { "%1" % [] }.should raise_error(ArgumentError)
|
||||
-> { "%+" % [] }.should raise_error(ArgumentError)
|
||||
-> { "%-" % [] }.should raise_error(ArgumentError)
|
||||
-> { "%#" % [] }.should raise_error(ArgumentError)
|
||||
-> { "%0" % [] }.should raise_error(ArgumentError)
|
||||
-> { "%*" % [] }.should raise_error(ArgumentError)
|
||||
-> { "%." % [] }.should raise_error(ArgumentError)
|
||||
-> { "%_" % [] }.should raise_error(ArgumentError)
|
||||
-> { "%0$s" % "x" }.should raise_error(ArgumentError)
|
||||
-> { "%*0$s" % [5, "x"] }.should raise_error(ArgumentError)
|
||||
-> { "%*1$.*0$1$s" % [1, 2, 3] }.should raise_error(ArgumentError)
|
||||
end
|
||||
|
||||
it "raises an ArgumentError when multiple positional argument tokens are given for one format specifier" do
|
||||
lambda { "%1$1$s" % "foo" }.should raise_error(ArgumentError)
|
||||
-> { "%1$1$s" % "foo" }.should raise_error(ArgumentError)
|
||||
end
|
||||
|
||||
it "respects positional arguments and precision tokens given for one format specifier" do
|
||||
|
@ -155,36 +155,36 @@ describe "String#%" do
|
|||
end
|
||||
|
||||
it "raises an ArgumentError when multiple width star tokens are given for one format specifier" do
|
||||
lambda { "%**s" % [5, 5, 5] }.should raise_error(ArgumentError)
|
||||
-> { "%**s" % [5, 5, 5] }.should raise_error(ArgumentError)
|
||||
end
|
||||
|
||||
it "raises an ArgumentError when a width star token is seen after a width token" do
|
||||
lambda { "%5*s" % [5, 5] }.should raise_error(ArgumentError)
|
||||
-> { "%5*s" % [5, 5] }.should raise_error(ArgumentError)
|
||||
end
|
||||
|
||||
it "raises an ArgumentError when multiple precision tokens are given" do
|
||||
lambda { "%.5.5s" % 5 }.should raise_error(ArgumentError)
|
||||
lambda { "%.5.*s" % [5, 5] }.should raise_error(ArgumentError)
|
||||
lambda { "%.*.5s" % [5, 5] }.should raise_error(ArgumentError)
|
||||
-> { "%.5.5s" % 5 }.should raise_error(ArgumentError)
|
||||
-> { "%.5.*s" % [5, 5] }.should raise_error(ArgumentError)
|
||||
-> { "%.*.5s" % [5, 5] }.should raise_error(ArgumentError)
|
||||
end
|
||||
|
||||
it "raises an ArgumentError when there are less arguments than format specifiers" do
|
||||
("foo" % []).should == "foo"
|
||||
lambda { "%s" % [] }.should raise_error(ArgumentError)
|
||||
lambda { "%s %s" % [1] }.should raise_error(ArgumentError)
|
||||
-> { "%s" % [] }.should raise_error(ArgumentError)
|
||||
-> { "%s %s" % [1] }.should raise_error(ArgumentError)
|
||||
end
|
||||
|
||||
it "raises an ArgumentError when absolute and relative argument numbers are mixed" do
|
||||
lambda { "%s %1$s" % "foo" }.should raise_error(ArgumentError)
|
||||
lambda { "%1$s %s" % "foo" }.should raise_error(ArgumentError)
|
||||
-> { "%s %1$s" % "foo" }.should raise_error(ArgumentError)
|
||||
-> { "%1$s %s" % "foo" }.should raise_error(ArgumentError)
|
||||
|
||||
lambda { "%s %2$s" % ["foo", "bar"] }.should raise_error(ArgumentError)
|
||||
lambda { "%2$s %s" % ["foo", "bar"] }.should raise_error(ArgumentError)
|
||||
-> { "%s %2$s" % ["foo", "bar"] }.should raise_error(ArgumentError)
|
||||
-> { "%2$s %s" % ["foo", "bar"] }.should raise_error(ArgumentError)
|
||||
|
||||
lambda { "%*2$s" % [5, 5, 5] }.should raise_error(ArgumentError)
|
||||
lambda { "%*.*2$s" % [5, 5, 5] }.should raise_error(ArgumentError)
|
||||
lambda { "%*2$.*2$s" % [5, 5, 5] }.should raise_error(ArgumentError)
|
||||
lambda { "%*.*2$s" % [5, 5, 5] }.should raise_error(ArgumentError)
|
||||
-> { "%*2$s" % [5, 5, 5] }.should raise_error(ArgumentError)
|
||||
-> { "%*.*2$s" % [5, 5, 5] }.should raise_error(ArgumentError)
|
||||
-> { "%*2$.*2$s" % [5, 5, 5] }.should raise_error(ArgumentError)
|
||||
-> { "%*.*2$s" % [5, 5, 5] }.should raise_error(ArgumentError)
|
||||
end
|
||||
|
||||
it "allows reuse of the one argument multiple via absolute argument numbers" do
|
||||
|
@ -193,13 +193,13 @@ describe "String#%" do
|
|||
end
|
||||
|
||||
it "always interprets an array argument as a list of argument parameters" do
|
||||
lambda { "%p" % [] }.should raise_error(ArgumentError)
|
||||
-> { "%p" % [] }.should raise_error(ArgumentError)
|
||||
("%p" % [1]).should == "1"
|
||||
("%p %p" % [1, 2]).should == "1 2"
|
||||
end
|
||||
|
||||
it "always interprets an array subclass argument as a list of argument parameters" do
|
||||
lambda { "%p" % StringSpecs::MyArray[] }.should raise_error(ArgumentError)
|
||||
-> { "%p" % StringSpecs::MyArray[] }.should raise_error(ArgumentError)
|
||||
("%p" % StringSpecs::MyArray[1]).should == "1"
|
||||
("%p %p" % StringSpecs::MyArray[1, 2]).should == "1 2"
|
||||
end
|
||||
|
@ -270,7 +270,7 @@ describe "String#%" do
|
|||
x = mock("string modulo to_ary")
|
||||
x.should_receive(:to_ary).and_return("x")
|
||||
|
||||
lambda { "%s" % x }.should raise_error(TypeError)
|
||||
-> { "%s" % x }.should raise_error(TypeError)
|
||||
end
|
||||
|
||||
it "tries to convert the argument to Array by calling #to_ary" do
|
||||
|
@ -377,7 +377,7 @@ describe "String#%" do
|
|||
("%*c" % [10, 3]).should == " \003"
|
||||
("%c" % 42).should == "*"
|
||||
|
||||
lambda { "%c" % Object }.should raise_error(TypeError)
|
||||
-> { "%c" % Object }.should raise_error(TypeError)
|
||||
end
|
||||
|
||||
it "supports single character strings as argument for %c" do
|
||||
|
@ -385,7 +385,7 @@ describe "String#%" do
|
|||
end
|
||||
|
||||
it "raises an exception for multiple character strings as argument for %c" do
|
||||
lambda { "%c" % 'AA' }.should raise_error(ArgumentError)
|
||||
-> { "%c" % 'AA' }.should raise_error(ArgumentError)
|
||||
end
|
||||
|
||||
it "calls to_str on argument for %c formats" do
|
||||
|
@ -619,7 +619,7 @@ describe "String#%" do
|
|||
# MRI crashes on this one.
|
||||
# See http://groups.google.com/group/ruby-core-google/t/c285c18cd94c216d
|
||||
it "raises an ArgumentError for huge precisions for %s" do
|
||||
block = lambda { "%.25555555555555555555555555555555555555s" % "hello world" }
|
||||
block = -> { "%.25555555555555555555555555555555555555s" % "hello world" }
|
||||
block.should raise_error(ArgumentError)
|
||||
end
|
||||
|
||||
|
@ -712,19 +712,19 @@ describe "String#%" do
|
|||
(format % "0b1101").should == (format % Kernel.Integer("0b1101"))
|
||||
(format % "0b1101_0000").should == (format % Kernel.Integer("0b1101_0000"))
|
||||
(format % "0777").should == (format % Kernel.Integer("0777"))
|
||||
lambda {
|
||||
-> {
|
||||
# see [ruby-core:14139] for more details
|
||||
(format % "0777").should == (format % Kernel.Integer("0777"))
|
||||
}.should_not raise_error(ArgumentError)
|
||||
|
||||
lambda { format % "0__7_7_7" }.should raise_error(ArgumentError)
|
||||
-> { format % "0__7_7_7" }.should raise_error(ArgumentError)
|
||||
|
||||
lambda { format % "" }.should raise_error(ArgumentError)
|
||||
lambda { format % "x" }.should raise_error(ArgumentError)
|
||||
lambda { format % "5x" }.should raise_error(ArgumentError)
|
||||
lambda { format % "08" }.should raise_error(ArgumentError)
|
||||
lambda { format % "0b2" }.should raise_error(ArgumentError)
|
||||
lambda { format % "123__456" }.should raise_error(ArgumentError)
|
||||
-> { format % "" }.should raise_error(ArgumentError)
|
||||
-> { format % "x" }.should raise_error(ArgumentError)
|
||||
-> { format % "5x" }.should raise_error(ArgumentError)
|
||||
-> { format % "08" }.should raise_error(ArgumentError)
|
||||
-> { format % "0b2" }.should raise_error(ArgumentError)
|
||||
-> { format % "123__456" }.should raise_error(ArgumentError)
|
||||
|
||||
obj = mock('5')
|
||||
obj.should_receive(:to_i).and_return(5)
|
||||
|
@ -757,15 +757,15 @@ describe "String#%" do
|
|||
|
||||
(format % "0777").should == (format % 777)
|
||||
|
||||
lambda { format % "" }.should raise_error(ArgumentError)
|
||||
lambda { format % "x" }.should raise_error(ArgumentError)
|
||||
lambda { format % "." }.should raise_error(ArgumentError)
|
||||
lambda { format % "10." }.should raise_error(ArgumentError)
|
||||
lambda { format % "5x" }.should raise_error(ArgumentError)
|
||||
lambda { format % "0b1" }.should raise_error(ArgumentError)
|
||||
lambda { format % "10e10.5" }.should raise_error(ArgumentError)
|
||||
lambda { format % "10__10" }.should raise_error(ArgumentError)
|
||||
lambda { format % "10.10__10" }.should raise_error(ArgumentError)
|
||||
-> { format % "" }.should raise_error(ArgumentError)
|
||||
-> { format % "x" }.should raise_error(ArgumentError)
|
||||
-> { format % "." }.should raise_error(ArgumentError)
|
||||
-> { format % "10." }.should raise_error(ArgumentError)
|
||||
-> { format % "5x" }.should raise_error(ArgumentError)
|
||||
-> { format % "0b1" }.should raise_error(ArgumentError)
|
||||
-> { format % "10e10.5" }.should raise_error(ArgumentError)
|
||||
-> { format % "10__10" }.should raise_error(ArgumentError)
|
||||
-> { format % "10.10__10" }.should raise_error(ArgumentError)
|
||||
|
||||
obj = mock('5.0')
|
||||
obj.should_receive(:to_f).and_return(5.0)
|
||||
|
@ -787,7 +787,7 @@ describe "String#%" do
|
|||
end
|
||||
|
||||
it "should raise ArgumentError if no hash given" do
|
||||
lambda {"%{foo}" % []}.should raise_error(ArgumentError)
|
||||
-> {"%{foo}" % []}.should raise_error(ArgumentError)
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -797,11 +797,11 @@ describe "String#%" do
|
|||
end
|
||||
|
||||
it "raises KeyError if key is missing from passed-in hash" do
|
||||
lambda {"%<foo>d" % {}}.should raise_error(KeyError)
|
||||
-> {"%<foo>d" % {}}.should raise_error(KeyError)
|
||||
end
|
||||
|
||||
it "should raise ArgumentError if no hash given" do
|
||||
lambda {"%<foo>" % []}.should raise_error(ArgumentError)
|
||||
-> {"%<foo>" % []}.should raise_error(ArgumentError)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue