puppetlabs-stdlib/spec/functions/is_a_spec.rb
David Schmitt 00c881d0da (MODULES-2516) Adds an is_a() function
The data type system is very hard to understand. Many people don't
understand why

    type_of([1,2,3]) == Array

will fail, but

    type_of([1,2,3]) <= Array

passes. This does a simpler validation that doesn't rely on explicit
data types. Instead, use

    $foo = [1,2,3]
    if $foo.is_a(Array) {
      notify { 'This is an array': }
    }

This is based on code by Ben Ford <ben.ford@puppetlabs.com>.

  * Added acceptance tests
  * Added dispatch
  * Improved unit tests
  * Added docs to README
2015-09-14 18:26:25 +01:00

25 lines
748 B
Ruby

require 'spec_helper'
if ENV["FUTURE_PARSER"] == 'yes'
describe 'type_of' do
pending 'teach rspec-puppet to load future-only functions under 3.7.5' do
it { is_expected.not_to eq(nil) }
end
end
end
if Puppet.version.to_f >= 4.0
describe 'is_a' do
it { is_expected.not_to eq(nil) }
it { is_expected.to run.with_params().and_raise_error(ArgumentError) }
it { is_expected.to run.with_params('', '').and_raise_error(ArgumentError) }
it 'succeeds when comparing a string and a string' do
is_expected.to run.with_params('hello world', String).and_return(true)
end
it 'fails when comparing an integer and a string' do
is_expected.to run.with_params(5, String).and_return(false)
end
end
end