diff options
author | Kenichi Kamiya <kachick1@gmail.com> | 2019-06-21 12:28:28 +0900 |
---|---|---|
committer | Benoit Daloze <eregontp@gmail.com> | 2019-06-21 18:25:01 +0200 |
commit | d01fd821875b989affc36e54e98f5dd67f47062e (patch) | |
tree | e34d7777ea878d7a5cc78d3429b3014dcccdf937 | |
parent | 3b2d11ad90fcb64b41acc9006dfd1e40b4bd9000 (diff) | |
download | ruby-d01fd821875b989affc36e54e98f5dd67f47062e.tar.gz |
Alias ENV.merge! as ENV.update
[Feature #15947]
Closes: https://github.com/ruby/ruby/pull/2246
-rw-r--r-- | hash.c | 3 | ||||
-rw-r--r-- | spec/ruby/core/env/merge_spec.rb | 8 | ||||
-rw-r--r-- | spec/ruby/core/env/shared/update.rb | 21 | ||||
-rw-r--r-- | spec/ruby/core/env/update_spec.rb | 23 |
4 files changed, 34 insertions, 21 deletions
@@ -5788,6 +5788,8 @@ env_update_i(VALUE key, VALUE val) * call-seq: * ENV.update(hash) -> Hash * ENV.update(hash) { |name, old_value, new_value| block } -> Hash + * ENV.merge!(hash) -> Hash + * ENV.merge!(hash) { |name, old_value, new_value| block } -> Hash * * Adds the contents of +hash+ to the environment variables. If no block is * specified entries with duplicate keys are overwritten, otherwise the value @@ -6059,6 +6061,7 @@ Init_Hash(void) rb_define_singleton_method(envtbl, "invert", env_invert, 0); rb_define_singleton_method(envtbl, "replace", env_replace, 1); rb_define_singleton_method(envtbl, "update", env_update, 1); + rb_define_singleton_method(envtbl, "merge!", env_update, 1); rb_define_singleton_method(envtbl, "inspect", env_inspect, 0); rb_define_singleton_method(envtbl, "rehash", env_none, 0); rb_define_singleton_method(envtbl, "to_a", env_to_a, 0); diff --git a/spec/ruby/core/env/merge_spec.rb b/spec/ruby/core/env/merge_spec.rb new file mode 100644 index 0000000000..b418cd11f4 --- /dev/null +++ b/spec/ruby/core/env/merge_spec.rb @@ -0,0 +1,8 @@ +require_relative '../../spec_helper' +require_relative 'shared/update' + +ruby_version_is "2.7" do + describe "ENV.merge!" do + it_behaves_like :env_update, :merge! + end +end diff --git a/spec/ruby/core/env/shared/update.rb b/spec/ruby/core/env/shared/update.rb new file mode 100644 index 0000000000..cd09877243 --- /dev/null +++ b/spec/ruby/core/env/shared/update.rb @@ -0,0 +1,21 @@ +describe :env_update, shared: true do + it "adds the parameter hash to ENV" do + ENV["foo"].should == nil + ENV.send @method, "foo" => "bar" + ENV["foo"].should == "bar" + ENV.delete "foo" + end + + it "yields key, the old value and the new value when replacing entries" do + ENV.send @method, "foo" => "bar" + ENV["foo"].should == "bar" + ENV.send(@method, "foo" => "boo") do |key, old, new| + key.should == "foo" + old.should == "bar" + new.should == "boo" + "rab" + end + ENV["foo"].should == "rab" + ENV.delete "foo" + end +end diff --git a/spec/ruby/core/env/update_spec.rb b/spec/ruby/core/env/update_spec.rb index 9f8775138a..95a8a2eb49 100644 --- a/spec/ruby/core/env/update_spec.rb +++ b/spec/ruby/core/env/update_spec.rb @@ -1,25 +1,6 @@ require_relative '../../spec_helper' +require_relative 'shared/update' describe "ENV.update" do - - it "adds the parameter hash to ENV" do - ENV["foo"].should == nil - ENV.update "foo" => "bar" - ENV["foo"].should == "bar" - ENV.delete "foo" - end - - it "yields key, the old value and the new value when replacing entries" do - ENV.update "foo" => "bar" - ENV["foo"].should == "bar" - ENV.update("foo" => "boo") do |key, old, new| - key.should == "foo" - old.should == "bar" - new.should == "boo" - "rab" - end - ENV["foo"].should == "rab" - ENV.delete "foo" - end - + it_behaves_like :env_update, :update end |