Misc #16235 ยป t.diff
| spec/ruby/core/env/assoc_spec.rb | ||
|---|---|---|
|
require_relative '../../spec_helper'
|
||
|
describe "ENV.assoc" do
|
||
|
before :each do
|
||
|
reserve_names("foo")
|
||
|
end
|
||
|
after :each do
|
||
|
ENV.delete("foo")
|
||
|
release_names
|
||
|
end
|
||
|
it "returns an array of the key and value of the environment variable with the given key" do
|
||
|
it "returns an array of the name and value of the environment variable with the given name" do
|
||
|
ENV["foo"] = "bar"
|
||
|
ENV.assoc("foo").should == ["foo", "bar"]
|
||
|
end
|
||
|
it "returns nil if no environment variable with the given key exists" do
|
||
|
it "returns nil if no environment variable with the given name exists" do
|
||
|
ENV.assoc("foo").should == nil
|
||
|
end
|
||
|
it "returns the key element coerced with #to_str" do
|
||
|
it "coerces a non-String name by calling :to_str" do
|
||
|
ENV["foo"] = "bar"
|
||
|
k = mock('key')
|
||
|
k.should_receive(:to_str).and_return("foo")
|
||
|
ENV.assoc(k).should == ["foo", "bar"]
|
||
|
mock_object = mock_to_str(:foo)
|
||
|
ENV.assoc(mock_object).should == ["foo", "bar"]
|
||
|
end
|
||
|
it "raises TypeError if the argument is not a String and does not respond to :to_str" do
|
||
|
-> { ENV.assoc(Object.new) }.should raise_error(TypeError)
|
||
|
end
|
||
|
end
|
||
| spec/ruby/spec_helper.rb | ||
|---|---|---|
|
dir = "fixtures/code"
|
||
|
CODE_LOADING_DIR = use_realpath ? File.realpath(dir, root) : File.expand_path(dir, root)
|
||
|
# Reserve names.
|
||
|
def reserve_names(*names)
|
||
|
@reserved = names
|
||
|
@reserved.each do |name|
|
||
|
fail "Name #{name} is already in use" if ENV.include?(name)
|
||
|
end
|
||
|
end
|
||
|
# Release reserved names.
|
||
|
def release_names
|
||
|
@reserved.each do |name|
|
||
|
ENV.delete(name)
|
||
|
end
|
||
|
end
|
||
|
# Mock object for calling to_str.
|
||
|
def mock_to_str(s)
|
||
|
mock_object = mock('name')
|
||
|
mock_object.should_receive(:to_str).and_return(s.to_s)
|
||
|
mock_object
|
||
|
end
|
||
|
# Enable Thread.report_on_exception by default to catch thread errors earlier
|
||
|
if Thread.respond_to? :report_on_exception=
|
||
|
Thread.report_on_exception = true
|
||