From 00c881d0dabe77fd2401beb0d39c7386b50bb791 Mon Sep 17 00:00:00 2001 From: David Schmitt Date: Mon, 14 Sep 2015 18:26:25 +0100 Subject: (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 . * Added acceptance tests * Added dispatch * Improved unit tests * Added docs to README --- spec/acceptance/is_a_spec.rb | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 spec/acceptance/is_a_spec.rb (limited to 'spec/acceptance/is_a_spec.rb') diff --git a/spec/acceptance/is_a_spec.rb b/spec/acceptance/is_a_spec.rb new file mode 100644 index 0000000..533673c --- /dev/null +++ b/spec/acceptance/is_a_spec.rb @@ -0,0 +1,28 @@ +#! /usr/bin/env ruby -S rspec +require 'spec_helper_acceptance' + +describe 'is_a function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do + it 'should match a string' do + pp = <<-EOS + if 'hello world'.is_a(String) { + notify { 'output correct': } + } + EOS + + apply_manifest(pp, :catch_failures => true) do |r| + expect(r.stdout).to match(/Notice: output correct/) + end + end + + it 'should not match a integer as string' do + pp = <<-EOS + if 5.is_a(String) { + notify { 'output wrong': } + } + EOS + + apply_manifest(pp, :catch_failures => true) do |r| + expect(r.stdout).not_to match(/Notice: output wrong/) + end + end +end -- cgit v1.2.3 From b20239e7963a370d4a4eefb5754ddc6a2c072ab9 Mon Sep 17 00:00:00 2001 From: Morgan Haskel Date: Mon, 21 Sep 2015 14:12:25 -0700 Subject: Update is_a acceptance tests to only run on puppet4 --- spec/acceptance/is_a_spec.rb | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) (limited to 'spec/acceptance/is_a_spec.rb') diff --git a/spec/acceptance/is_a_spec.rb b/spec/acceptance/is_a_spec.rb index 533673c..355fd83 100644 --- a/spec/acceptance/is_a_spec.rb +++ b/spec/acceptance/is_a_spec.rb @@ -1,28 +1,30 @@ #! /usr/bin/env ruby -S rspec require 'spec_helper_acceptance' -describe 'is_a function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do - it 'should match a string' do - pp = <<-EOS - if 'hello world'.is_a(String) { - notify { 'output correct': } - } - EOS +if get_puppet_version =~ /^4/ + describe 'is_a function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do + it 'should match a string' do + pp = <<-EOS + if 'hello world'.is_a(String) { + notify { 'output correct': } + } + EOS - apply_manifest(pp, :catch_failures => true) do |r| - expect(r.stdout).to match(/Notice: output correct/) + apply_manifest(pp, :catch_failures => true) do |r| + expect(r.stdout).to match(/Notice: output correct/) + end end - end - it 'should not match a integer as string' do - pp = <<-EOS - if 5.is_a(String) { - notify { 'output wrong': } - } - EOS + it 'should not match a integer as string' do + pp = <<-EOS + if 5.is_a(String) { + notify { 'output wrong': } + } + EOS - apply_manifest(pp, :catch_failures => true) do |r| - expect(r.stdout).not_to match(/Notice: output wrong/) + apply_manifest(pp, :catch_failures => true) do |r| + expect(r.stdout).not_to match(/Notice: output wrong/) + end end end end -- cgit v1.2.3