Project

General

Profile

Misc #16235 ยป t.diff

View differences:

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
    (1-1/1)