diff options
author | David Schmitt <david.schmitt@puppetlabs.com> | 2015-09-14 18:26:25 +0100 |
---|---|---|
committer | David Schmitt <david.schmitt@puppetlabs.com> | 2015-09-14 18:26:25 +0100 |
commit | 00c881d0dabe77fd2401beb0d39c7386b50bb791 (patch) | |
tree | 9209c80caf9d1a51d18648b0b65721791e0e92a5 /spec/acceptance | |
parent | 2a7a93ffb49b2ae63d4fd09982fd8c382c1f4b5a (diff) |
(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
Diffstat (limited to 'spec/acceptance')
-rw-r--r-- | spec/acceptance/is_a_spec.rb | 28 |
1 files changed, 28 insertions, 0 deletions
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 |