diff options
Diffstat (limited to 'spec/ruby/core/env/fetch_spec.rb')
-rw-r--r-- | spec/ruby/core/env/fetch_spec.rb | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/spec/ruby/core/env/fetch_spec.rb b/spec/ruby/core/env/fetch_spec.rb new file mode 100644 index 0000000000..708ee91c39 --- /dev/null +++ b/spec/ruby/core/env/fetch_spec.rb @@ -0,0 +1,35 @@ +require File.expand_path('../../../spec_helper', __FILE__) + +describe "ENV.fetch" do + it "returns a value" do + ENV["foo"] = "bar" + ENV.fetch("foo").should == "bar" + ENV.delete "foo" + end + + it "raises a TypeError if the key is not a String" do + lambda { ENV.fetch :should_never_be_set }.should raise_error(TypeError) + end + + it "raises a KeyError if the key is not found" do + lambda { ENV.fetch "should_never_be_set" }.should raise_error(KeyError) + end + + it "provides the given default parameter" do + ENV.fetch("should_never_be_set", "default").should == "default" + end + + it "provides a default value from a block" do + ENV.fetch("should_never_be_set") { |k| "wanted #{k}" }.should == "wanted should_never_be_set" + end + + it "warns on block and default parameter given" do + lambda do + ENV.fetch("should_never_be_set", "default") { 1 }.should == 1 + end.should complain(/block supersedes default value argument/) + end + + it "uses the locale encoding" do + ENV.fetch(ENV.keys.first).encoding.should == Encoding.find('locale') + end +end |