puppetlabs-stdlib/spec/unit/puppet/parser/functions/is_hash_spec.rb
Jeff McCune f604bae98c (Maint) Fix interpreter lines
This time around I actually know why I'm doing this thanks to the
reminder from Nick Lewis.

Ruby will replace itself in memory with the executable listed in the
interpreter line if the string "ruby" is not in there.

Since /usr/bin/env rspec doesn't contain the substring "ruby", you can't
actually run ruby -W1 or whatever on the file.

This patch fixes the problem by making sure "ruby" is present,
preventing ruby from replacing itself in memory.
2012-07-19 15:41:41 -07:00

36 lines
903 B
Ruby

#! /usr/bin/env ruby -S rspec
require 'spec_helper'
describe "the is_hash function" do
before :all do
Puppet::Parser::Functions.autoloader.loadall
end
before :each do
@scope = Puppet::Parser::Scope.new
end
it "should exist" do
Puppet::Parser::Functions.function("is_hash").should == "function_is_hash"
end
it "should raise a ParseError if there is less than 1 arguments" do
lambda { @scope.function_is_hash([]) }.should( raise_error(Puppet::ParseError))
end
it "should return true if passed a hash" do
result = @scope.function_is_hash([{"a"=>1,"b"=>2}])
result.should(eq(true))
end
it "should return false if passed an array" do
result = @scope.function_is_hash([["a","b"]])
result.should(eq(false))
end
it "should return false if passed a string" do
result = @scope.function_is_hash(["asdf"])
result.should(eq(false))
end
end