f604bae98c
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.
45 lines
1.2 KiB
Ruby
45 lines
1.2 KiB
Ruby
#! /usr/bin/env ruby -S rspec
|
|
require 'spec_helper'
|
|
|
|
describe "the is_ip_address 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_ip_address").should == "function_is_ip_address"
|
|
end
|
|
|
|
it "should raise a ParseError if there is less than 1 arguments" do
|
|
lambda { @scope.function_is_ip_address([]) }.should( raise_error(Puppet::ParseError))
|
|
end
|
|
|
|
it "should return true if an IPv4 address" do
|
|
result = @scope.function_is_ip_address(["1.2.3.4"])
|
|
result.should(eq(true))
|
|
end
|
|
|
|
it "should return true if a full IPv6 address" do
|
|
result = @scope.function_is_ip_address(["fe80:0000:cd12:d123:e2f8:47ff:fe09:dd74"])
|
|
result.should(eq(true))
|
|
end
|
|
|
|
it "should return true if a compressed IPv6 address" do
|
|
result = @scope.function_is_ip_address(["fe00::1"])
|
|
result.should(eq(true))
|
|
end
|
|
|
|
it "should return false if not valid" do
|
|
result = @scope.function_is_ip_address(["asdf"])
|
|
result.should(eq(false))
|
|
end
|
|
|
|
it "should return false if IP octets out of range" do
|
|
result = @scope.function_is_ip_address(["1.1.1.300"])
|
|
result.should(eq(false))
|
|
end
|
|
end
|