]> gitweb.fluxo.info Git - puppet-stdlib.git/commitdiff
Add some acceptance tests for functions.
authorAshley Penney <ashley.penney@puppetlabs.com>
Thu, 13 Mar 2014 18:21:38 +0000 (18:21 +0000)
committerHunter Haugen <hunter@puppetlabs.com>
Thu, 3 Apr 2014 23:58:12 +0000 (16:58 -0700)
14 files changed:
spec/acceptance/abs_spec.rb [new file with mode: 0644]
spec/acceptance/any2array_spec.rb [new file with mode: 0644]
spec/acceptance/base64_spec.rb [new file with mode: 0644]
spec/acceptance/bool2num_spec.rb [new file with mode: 0644]
spec/acceptance/capitalize_spec.rb [new file with mode: 0644]
spec/acceptance/chomp_spec.rb [new file with mode: 0644]
spec/acceptance/chop_spec.rb [new file with mode: 0644]
spec/acceptance/concat_spec.rb [new file with mode: 0644]
spec/acceptance/count_spec.rb [new file with mode: 0644]
spec/acceptance/deep_merge_spec.rb [new file with mode: 0644]
spec/acceptance/defined_with_params_spec.rb [new file with mode: 0644]
spec/acceptance/delete_at_spec.rb [new file with mode: 0644]
spec/acceptance/delete_spec.rb [new file with mode: 0644]
spec/acceptance/delete_undef_values_spec.rb [new file with mode: 0644]

diff --git a/spec/acceptance/abs_spec.rb b/spec/acceptance/abs_spec.rb
new file mode 100644 (file)
index 0000000..0921497
--- /dev/null
@@ -0,0 +1,27 @@
+require 'spec_helper_acceptance'
+
+describe 'abs function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  it 'should accept a string' do
+    pp = <<-EOS
+    $input  = '-34.56'
+    $output = abs($input)
+    notify { $output: }
+    EOS
+
+    apply_manifest(pp, :catch_failures => true) do |r|
+      expect(r.stdout).to match(/Notice: 34.56/)
+    end
+  end
+
+  it 'should accept a float' do
+    pp = <<-EOS
+    $input  = -34.56
+    $output = abs($input)
+    notify { $output: }
+    EOS
+
+    apply_manifest(pp, :catch_failures => true) do |r|
+      expect(r.stdout).to match(/Notice: 34.56/)
+    end
+  end
+end
diff --git a/spec/acceptance/any2array_spec.rb b/spec/acceptance/any2array_spec.rb
new file mode 100644 (file)
index 0000000..7d452ed
--- /dev/null
@@ -0,0 +1,46 @@
+require 'spec_helper_acceptance'
+
+describe 'any2array function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  it 'should create an empty array' do
+    pp = <<-EOS
+    $input = ''
+    $output = any2array($input)
+    validate_array($output)
+    notify { "Output: ${output}": }
+    EOS
+
+    apply_manifest(pp, :catch_failures => true) do |r|
+      expect(r.stdout).to match(/Notice: Output: /)
+    end
+  end
+
+  it 'should leave arrays modified' do
+    pp = <<-EOS
+    $input = ['test', 'array']
+    $output = any2array($input)
+    validate_array($output)
+    notify { "Output: ${output}": }
+    EOS
+
+    apply_manifest(pp, :catch_failures => true) do |r|
+      expect(r.stdout).to match(/Notice: Output: testarray/)
+    end
+  end
+
+  it 'should turn a hash into an array' do
+    pp = <<-EOS
+    $input = {'test' => 'array'}
+    $output = any2array($input)
+
+    validate_array($output)
+    # Check each element of the array is a plain string.
+    validate_string($output[0])
+    validate_string($output[1])
+    notify { "Output: ${output}": }
+    EOS
+
+    apply_manifest(pp, :catch_failures => true) do |r|
+      expect(r.stdout).to match(/Notice: Output: testarray/)
+    end
+  end
+end
diff --git a/spec/acceptance/base64_spec.rb b/spec/acceptance/base64_spec.rb
new file mode 100644 (file)
index 0000000..c29b3a7
--- /dev/null
@@ -0,0 +1,15 @@
+require 'spec_helper_acceptance'
+
+describe 'base64 function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  it 'should encode then decode a string' do
+    pp = <<-EOS
+    $encodestring = base64('encode', 'thestring')
+    $decodestring = base64('decode', $encodestring)
+    notify { $decodestring: }
+    EOS
+
+    apply_manifest(pp, :catch_failures => true) do |r|
+      expect(r.stdout).to match(/thestring/)
+    end
+  end
+end
diff --git a/spec/acceptance/bool2num_spec.rb b/spec/acceptance/bool2num_spec.rb
new file mode 100644 (file)
index 0000000..5bdb452
--- /dev/null
@@ -0,0 +1,31 @@
+require 'spec_helper_acceptance'
+
+describe 'bool2num function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  ['false', 'f', '0', 'n', 'no'].each do |bool|
+    it 'should convert a given boolean, #{bool}, to 0' do
+      pp = <<-EOS
+      $input = #{bool}
+      $output = bool2num($input)
+      notify { $output: }
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/Notice: 0/)
+      end
+    end
+  end
+
+  ['true', 't', '1', 'y', 'yes'].each do |bool|
+    it 'should convert a given boolean, #{bool}, to 1' do
+      pp = <<-EOS
+      $input = #{bool}
+      $output = bool2num($input)
+      notify { $output: }
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/Notice: 1/)
+      end
+    end
+  end
+end
diff --git a/spec/acceptance/capitalize_spec.rb b/spec/acceptance/capitalize_spec.rb
new file mode 100644 (file)
index 0000000..41e16e9
--- /dev/null
@@ -0,0 +1,30 @@
+require 'spec_helper_acceptance'
+
+describe 'capitalize function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  it 'should capitalize the first letter of a string' do
+    pp = <<-EOS
+    $input = 'this is a string'
+    $output = capitalize($input)
+    notify { $output: }
+    EOS
+
+    apply_manifest(pp, :catch_failures => true) do |r|
+      expect(r.stdout).to match(/Notice: This is a string/)
+    end
+  end
+
+  it 'should capitalize the first letter of an array of strings' do
+    pp = <<-EOS
+    $input = ['this', 'is', 'a', 'string']
+    $output = capitalize($input)
+    notify { $output: }
+    EOS
+
+    apply_manifest(pp, :catch_failures => true) do |r|
+      expect(r.stdout).to match(/Notice: This/)
+      expect(r.stdout).to match(/Notice: Is/)
+      expect(r.stdout).to match(/Notice: A/)
+      expect(r.stdout).to match(/Notice: String/)
+    end
+  end
+end
diff --git a/spec/acceptance/chomp_spec.rb b/spec/acceptance/chomp_spec.rb
new file mode 100644 (file)
index 0000000..052226f
--- /dev/null
@@ -0,0 +1,18 @@
+require 'spec_helper_acceptance'
+
+describe 'chomp function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  it 'should eat the newline' do
+    pp = <<-EOS
+    $input = "test\n"
+    if size($input) != 5 {
+      fail("Size of ${input} is not 5.")
+    }
+    $output = chomp($input)
+    if size($output) != 4 {
+      fail("Size of ${input} is not 4.")
+    }
+    EOS
+
+    apply_manifest(pp, :catch_failures => true)
+  end
+end
diff --git a/spec/acceptance/chop_spec.rb b/spec/acceptance/chop_spec.rb
new file mode 100644 (file)
index 0000000..f1183a1
--- /dev/null
@@ -0,0 +1,42 @@
+require 'spec_helper_acceptance'
+
+describe 'chop function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  it 'should eat the last character' do
+    pp = <<-EOS
+    $input = "test"
+    if size($input) != 4 {
+      fail("Size of ${input} is not 4.")
+    }
+    $output = chop($input)
+    if size($output) != 3 {
+      fail("Size of ${input} is not 3.")
+    }
+    EOS
+
+    apply_manifest(pp, :catch_failures => true)
+  end
+
+  it 'should eat the last two characters of \r\n' do
+    pp = <<-EOS
+    $input = "test\r\n"
+    if size($input) != 6 {
+      fail("Size of ${input} is not 6.")
+    }
+    $output = chop($input)
+    if size($output) != 4 {
+      fail("Size of ${input} is not 4.")
+    }
+    EOS
+
+    apply_manifest(pp, :catch_failures => true)
+  end
+
+  it 'should not fail on empty strings' do
+    pp = <<-EOS
+    $input = ""
+    $output = chop($input)
+    EOS
+
+    apply_manifest(pp, :catch_failures => true)
+  end
+end
diff --git a/spec/acceptance/concat_spec.rb b/spec/acceptance/concat_spec.rb
new file mode 100644 (file)
index 0000000..1fe7729
--- /dev/null
@@ -0,0 +1,15 @@
+require 'spec_helper_acceptance'
+
+describe 'concat function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  it 'should concat one array to another' do
+    pp = <<-EOS
+    $output = concat(['1','2','3'],['4','5','6'])
+    validate_array($output)
+    if size($output) != 6 {
+      fail("${output} should have 6 elements.")
+    }
+    EOS
+
+    apply_manifest(pp, :catch_failures => true)
+  end
+end
diff --git a/spec/acceptance/count_spec.rb b/spec/acceptance/count_spec.rb
new file mode 100644 (file)
index 0000000..cc46be0
--- /dev/null
@@ -0,0 +1,27 @@
+require 'spec_helper_acceptance'
+
+describe 'count function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  it 'should count elements in an array' do
+    pp = <<-EOS
+    $input = [1,2,3,4]
+    $output = count($input)
+    notify { $output: }
+    EOS
+
+    apply_manifest(pp, :catch_failures => true) do |r|
+      expect(r.stdout).to match(/Notice: 4/)
+    end
+  end
+
+  it 'should count elements in an array that match a second argument' do
+    pp = <<-EOS
+    $input = [1,1,1,2]
+    $output = count($input, 1)
+    notify { $output: }
+    EOS
+
+    apply_manifest(pp, :catch_failures => true) do |r|
+      expect(r.stdout).to match(/Notice: 3/)
+    end
+  end
+end
diff --git a/spec/acceptance/deep_merge_spec.rb b/spec/acceptance/deep_merge_spec.rb
new file mode 100644 (file)
index 0000000..c7f35be
--- /dev/null
@@ -0,0 +1,17 @@
+require 'spec_helper_acceptance'
+
+describe 'deep_merge function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  it 'should deep merge two hashes' do
+    pp = <<-EOS
+    $hash1 = {'one' => 1, 'two' => 2, 'three' => { 'four' => 4 } }
+    $hash2 = {'two' => 'dos', 'three' => { 'five' => 5 } }
+    $merged_hash = deep_merge($hash1, $hash2)
+
+    if $merged_hash != { 'one' => 1, 'two' => 'dos', 'three' => { 'four' => 4, 'five' => 5 } } {
+      fail("Hash was incorrectly merged.")
+    }
+    EOS
+
+    apply_manifest(pp, :catch_failures => true)
+  end
+end
diff --git a/spec/acceptance/defined_with_params_spec.rb b/spec/acceptance/defined_with_params_spec.rb
new file mode 100644 (file)
index 0000000..eb549e5
--- /dev/null
@@ -0,0 +1,19 @@
+require 'spec_helper_acceptance'
+
+describe 'defined_with_params function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  it 'should successfully notify' do
+    pp = <<-EOS
+    user { 'dan':
+      ensure => present,
+    }
+
+    if defined_with_params(User[dan], {'ensure' => 'present' }) {
+      notify { 'User defined with ensure=>present': }
+    }
+    EOS
+
+    apply_manifest(pp, :catch_failures => true) do |r|
+      expect(r.stdout).to match(/Notice: User defined with ensure=>present/)
+    end
+  end
+end
diff --git a/spec/acceptance/delete_at_spec.rb b/spec/acceptance/delete_at_spec.rb
new file mode 100644 (file)
index 0000000..42d7a77
--- /dev/null
@@ -0,0 +1,16 @@
+require 'spec_helper_acceptance'
+
+describe 'delete_at function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  it 'should delete elements of the array' do
+    pp = <<-EOS
+    $output = delete_at(['a','b','c','b'], 1)
+    if $output == ['a','c','b'] {
+      notify { 'output correct': }
+    }
+    EOS
+
+    apply_manifest(pp, :catch_failures => true) do |r|
+      expect(r.stdout).to match(/Notice: output correct/)
+    end
+  end
+end
diff --git a/spec/acceptance/delete_spec.rb b/spec/acceptance/delete_spec.rb
new file mode 100644 (file)
index 0000000..63804bc
--- /dev/null
@@ -0,0 +1,16 @@
+require 'spec_helper_acceptance'
+
+describe 'delete function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  it 'should delete elements of the array' do
+    pp = <<-EOS
+    $output = delete(['a','b','c','b'], 'b')
+    if $output == ['a','c'] {
+      notify { 'output correct': }
+    }
+    EOS
+
+    apply_manifest(pp, :catch_failures => true) do |r|
+      expect(r.stdout).to match(/Notice: output correct/)
+    end
+  end
+end
diff --git a/spec/acceptance/delete_undef_values_spec.rb b/spec/acceptance/delete_undef_values_spec.rb
new file mode 100644 (file)
index 0000000..1ecdf4c
--- /dev/null
@@ -0,0 +1,16 @@
+require 'spec_helper_acceptance'
+
+describe 'delete_undef_values function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  it 'should delete elements of the array' do
+    pp = <<-EOS
+    $output = delete_undef_values({a=>'A', b=>'', c=>undef, d => false})
+    if $output == { a => 'A', b => '', d => false } {
+      notify { 'output correct': }
+    }
+    EOS
+
+    apply_manifest(pp, :catch_failures => true) do |r|
+      expect(r.stdout).to match(/Notice: output correct/)
+    end
+  end
+end