1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
This commit is contained in:
Benoit Daloze 2019-11-30 21:26:52 +01:00
parent ab8345271e
commit 1243255c3a
174 changed files with 1780 additions and 426 deletions

View file

@ -9,8 +9,8 @@ describe :env_update, shared: true do
ENV["bar"] = @saved_bar
end
it "adds the parameter hash to ENV" do
ENV.send @method, {"foo" => "0", "bar" => "1"}
it "adds the parameter hash to ENV, returning ENV" do
ENV.send(@method, "foo" => "0", "bar" => "1").should equal(ENV)
ENV["foo"].should == "0"
ENV["bar"].should == "1"
end
@ -19,17 +19,43 @@ describe :env_update, shared: true do
ENV.send(@method, {"foo" => "0", "bar" => "1"}).should equal(ENV)
end
it "yields key, the old value and the new value when replacing entries" do
it "yields key, the old value and the new value when replacing an entry" do
ENV.send @method, {"foo" => "0", "bar" => "3"}
a = []
ENV.send @method, {"foo" => "1", "bar" => "4"} do |key, old, new|
a << [key, old, new]
new
end
a[0].should == ["foo", "0", "1"]
a[1].should == ["bar", "3", "4"]
end
it "yields key, the old value and the new value when replacing an entry" do
ENV.send @method, {"foo" => "0", "bar" => "3"}
ENV.send @method, {"foo" => "1", "bar" => "4"} do |key, old, new|
(new.to_i + 1).to_s
end
ENV["foo"].should == "2"
ENV["bar"].should == "5"
a[0].should == ["foo", "0", "1"]
a[1].should == ["bar", "3", "4"]
end
ruby_version_is "2.7" do
# BUG: https://bugs.ruby-lang.org/issues/16192
it "does not evaluate the block when the name is new" do
ENV.delete("bar")
ENV.send @method, {"foo" => "0"}
ENV.send(@method, "bar" => "1") { |key, old, new| fail "Should not get here" }
ENV["bar"].should == "1"
end
# BUG: https://bugs.ruby-lang.org/issues/16192
it "does not use the block's return value as the value when the name is new" do
ENV.delete("bar")
ENV.send @method, {"foo" => "0"}
ENV.send(@method, "bar" => "1") { |key, old, new| "Should not use this value" }
ENV["foo"].should == "0"
ENV["bar"].should == "1"
end
end
it "returns ENV when block given" do
@ -44,6 +70,14 @@ describe :env_update, shared: true do
-> { ENV.send @method, "foo" => Object.new }.should raise_error(TypeError, "no implicit conversion of Object into String")
end
it "raises Errno::EINVAL when a name contains the '=' character" do
-> { ENV.send(@method, "foo=" => "bar") }.should raise_error(Errno::EINVAL)
end
it "raises Errno::EINVAL when a name is an empty string" do
-> { ENV.send(@method, "" => "bar") }.should raise_error(Errno::EINVAL)
end
it "updates good data preceding an error" do
ENV["foo"] = "0"
begin