]> gitweb.fluxo.info Git - puppet-stdlib.git/commitdiff
Add more specs
authorHunter Haugen <hunter@puppetlabs.com>
Tue, 29 Apr 2014 00:28:22 +0000 (17:28 -0700)
committerHunter Haugen <hunter@puppetlabs.com>
Thu, 1 May 2014 21:07:54 +0000 (14:07 -0700)
27 files changed:
spec/acceptance/pick_default_spec.rb [new file with mode: 0644]
spec/acceptance/range_spec.rb [new file with mode: 0644]
spec/acceptance/reject_spec.rb
spec/acceptance/reverse_spec.rb [new file with mode: 0644]
spec/acceptance/rstrip_spec.rb [new file with mode: 0644]
spec/acceptance/shuffle_spec.rb [new file with mode: 0644]
spec/acceptance/size_spec.rb
spec/acceptance/sort_spec.rb
spec/acceptance/squeeze_spec.rb [new file with mode: 0644]
spec/acceptance/str2bool_spec.rb [new file with mode: 0644]
spec/acceptance/str2saltedsha512_spec.rb [new file with mode: 0644]
spec/acceptance/strftime_spec.rb [new file with mode: 0644]
spec/acceptance/strip_spec.rb [new file with mode: 0644]
spec/acceptance/suffix_spec.rb [new file with mode: 0644]
spec/acceptance/swapcase_spec.rb [new file with mode: 0644]
spec/acceptance/time_spec.rb [new file with mode: 0644]
spec/acceptance/to_bytes_spec.rb [new file with mode: 0644]
spec/acceptance/type_spec.rb [new file with mode: 0644]
spec/acceptance/union_spec.rb [new file with mode: 0644]
spec/acceptance/unique_spec.rb [new file with mode: 0644]
spec/acceptance/upcase_spec.rb [new file with mode: 0644]
spec/acceptance/uriescape_spec.rb [new file with mode: 0644]
spec/acceptance/validate_absolute_path_spec.rb [new file with mode: 0644]
spec/acceptance/validate_augeas_spec.rb
spec/acceptance/validate_ipv4_address_spec.rb [new file with mode: 0644]
spec/acceptance/validate_ipv6_address_spec.rb [new file with mode: 0644]
spec/acceptance/values_at_spec.rb

diff --git a/spec/acceptance/pick_default_spec.rb b/spec/acceptance/pick_default_spec.rb
new file mode 100644 (file)
index 0000000..e94a999
--- /dev/null
@@ -0,0 +1,53 @@
+require 'spec_helper_acceptance'
+
+describe 'pick_default function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  describe 'success' do
+    it 'pick_defaults a default value' do
+      pp = <<-EOS
+      $a = undef
+      $o = pick_default($a, 'default')
+      notice(inline_template('picked is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/picked is "default"/)
+      end
+    end
+    it 'pick_defaults with no value' do
+      pp = <<-EOS
+      $a = undef
+      $b = undef
+      $o = pick_default($a,$b)
+      notice(inline_template('picked is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/picked is ""/)
+      end
+    end
+    it 'pick_defaults the first set value' do
+      pp = <<-EOS
+      $a = "something"
+      $b = "long"
+      $o = pick_default($a, $b, 'default')
+      notice(inline_template('picked is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/picked is "something"/)
+      end
+    end
+  end
+  describe 'failure' do
+    it 'raises error with no values' do
+      pp = <<-EOS
+      $o = pick_default()
+      notice(inline_template('picked is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :expect_failures => true) do |r|
+        expect(r.stderr).to match(/Must receive at least one argument/)
+      end
+    end
+  end
+end
diff --git a/spec/acceptance/range_spec.rb b/spec/acceptance/range_spec.rb
new file mode 100644 (file)
index 0000000..0387e4e
--- /dev/null
@@ -0,0 +1,35 @@
+require 'spec_helper_acceptance'
+
+describe 'range function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  describe 'success' do
+    it 'ranges letters' do
+      pp = <<-EOS
+      $o = range('a','d')
+      notice(inline_template('range is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/range is \["a", "b", "c", "d"\]/)
+      end
+    end
+    it 'ranges letters with a step' do
+      pp = <<-EOS
+      $o = range('a','d', '2')
+      notice(inline_template('range is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/range is \["a", "c"\]/)
+      end
+    end
+    it 'ranges letters with a negative step'
+    it 'ranges numbers'
+    it 'ranges numbers with a step'
+    it 'ranges numbers with a negative step'
+    it 'ranges numeric strings'
+    it 'ranges zero padded numbers'
+  end
+  describe 'failure' do
+    it 'fails with no arguments'
+  end
+end
index 5333f36c32adf9b1c3461289100fe81faf4c4e06..52b875583febffd2a10be1a3233d5c433d72678f 100644 (file)
@@ -29,7 +29,7 @@ describe 'reject function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('oper
       EOS
 
       apply_manifest(pp, :catch_failures => true) do |r|
-        expect(r.stdout).to match(/reject is \["aaa", "bbb", "ccc", "aaaddd"\]/)
+        expect(r.stdout).to match(/reject is \[\]/)
       end
     end
   end
diff --git a/spec/acceptance/reverse_spec.rb b/spec/acceptance/reverse_spec.rb
new file mode 100644 (file)
index 0000000..29bdc25
--- /dev/null
@@ -0,0 +1,22 @@
+require 'spec_helper_acceptance'
+
+describe 'reverse function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  describe 'success' do
+    it 'reverses strings' do
+      pp = <<-EOS
+      $a = "the public art galleries"
+      # Anagram: Large picture halls, I bet
+      $o = reverse($a)
+      notice(inline_template('reverse is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/reverse is "seirellag tra cilbup eht"/)
+      end
+    end
+  end
+  describe 'failure' do
+    it 'handles no arguments'
+    it 'handles non strings or arrays'
+  end
+end
diff --git a/spec/acceptance/rstrip_spec.rb b/spec/acceptance/rstrip_spec.rb
new file mode 100644 (file)
index 0000000..11ed60a
--- /dev/null
@@ -0,0 +1,33 @@
+require 'spec_helper_acceptance'
+
+describe 'rstrip function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  describe 'success' do
+    it 'rstrips arrays' do
+      pp = <<-EOS
+      $a = ["  the   ","   public   ","   art","galleries   "]
+      # Anagram: Large picture halls, I bet
+      $o = rstrip($a)
+      notice(inline_template('rstrip is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/rstrip is \["  the", "   public", "   art", "galleries"\]/)
+      end
+    end
+    it 'rstrips strings' do
+      pp = <<-EOS
+      $a = "   blowzy night-frumps vex'd jack q   "
+      $o = rstrip($a)
+      notice(inline_template('rstrip is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/rstrip is "   blowzy night-frumps vex'd jack q"/)
+      end
+    end
+  end
+  describe 'failure' do
+    it 'handles no arguments'
+    it 'handles non strings or arrays'
+  end
+end
diff --git a/spec/acceptance/shuffle_spec.rb b/spec/acceptance/shuffle_spec.rb
new file mode 100644 (file)
index 0000000..e22171f
--- /dev/null
@@ -0,0 +1,33 @@
+require 'spec_helper_acceptance'
+
+describe 'shuffle function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  describe 'success' do
+    it 'shuffles arrays' do
+      pp = <<-EOS
+      $a = ["the","public","art","galleries"]
+      # Anagram: Large picture halls, I bet
+      $o = shuffle($a)
+      notice(inline_template('shuffle is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to_not match(/shuffle is \["the", "public", "art", "galleries"\]/)
+      end
+    end
+    it 'shuffles strings' do
+      pp = <<-EOS
+      $a = "blowzy night-frumps vex'd jack q"
+      $o = shuffle($a)
+      notice(inline_template('shuffle is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to_not match(/shuffle is "blowzy night-frumps vex'd jack q"/)
+      end
+    end
+  end
+  describe 'failure' do
+    it 'handles no arguments'
+    it 'handles non strings or arrays'
+  end
+end
index 2aacf0bc094e9be3282c6938c9557da74f2a71da..d79140ebedf8ca8a5f46d2ada4303e3a7c68de4a 100644 (file)
@@ -5,7 +5,7 @@ describe 'size function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operat
     it 'single string size' do
       pp = <<-EOS
       $a = 'discombobulate'
-      $o =size($a)
+      $o = size($a)
       notice(inline_template('size is <%= @o.inspect %>'))
       EOS
 
@@ -16,7 +16,7 @@ describe 'size function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operat
     it 'with empty string' do
       pp = <<-EOS
       $a = ''
-      $o =size($a)
+      $o = size($a)
       notice(inline_template('size is <%= @o.inspect %>'))
       EOS
 
@@ -27,7 +27,7 @@ describe 'size function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operat
     it 'with undef' do
       pp = <<-EOS
       $a = undef
-      $o =size($a)
+      $o = size($a)
       notice(inline_template('size is <%= @o.inspect %>'))
       EOS
 
@@ -38,7 +38,7 @@ describe 'size function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operat
     it 'strings in array' do
       pp = <<-EOS
       $a = ['discombobulate', 'moo']
-      $o =size($a)
+      $o = size($a)
       notice(inline_template('size is <%= @o.inspect %>'))
       EOS
 
index 1868a031e8f1f365d26d9e7ab9b81f56f7150d38..ae7c9db036ddb806fb46d15af35da43ef5f21aa7 100644 (file)
@@ -6,7 +6,7 @@ describe 'sort function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operat
       pp = <<-EOS
       $a = ["the","public","art","galleries"]
       # Anagram: Large picture halls, I bet
-      $o =sort($a)
+      $o = sort($a)
       notice(inline_template('sort is <%= @o.inspect %>'))
       EOS
 
@@ -17,7 +17,7 @@ describe 'sort function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operat
     it 'sorts strings' do
       pp = <<-EOS
       $a = "blowzy night-frumps vex'd jack q"
-      $o =sort($a)
+      $o = sort($a)
       notice(inline_template('sort is <%= @o.inspect %>'))
       EOS
 
diff --git a/spec/acceptance/squeeze_spec.rb b/spec/acceptance/squeeze_spec.rb
new file mode 100644 (file)
index 0000000..82e3233
--- /dev/null
@@ -0,0 +1,46 @@
+require 'spec_helper_acceptance'
+
+describe 'squeeze function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  describe 'success' do
+    it 'squeezes arrays' do
+      pp = <<-EOS
+      # Real words!
+      $a = ["wallless", "laparohysterosalpingooophorectomy", "brrr", "goddessship"]
+      $o = squeeze($a)
+      notice(inline_template('squeeze is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/squeeze is \["wales", "laparohysterosalpingophorectomy", "br", "godeship"\]/)
+      end
+    end
+    it 'squeezez arrays with an argument'
+    it 'squeezes strings' do
+      pp = <<-EOS
+      $a = "wallless laparohysterosalpingooophorectomy brrr goddessship"
+      $o = squeeze($a)
+      notice(inline_template('squeeze is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/squeeze is "wales laparohysterosalpingophorectomy br godeship"/)
+      end
+    end
+
+    it 'squeezes strings with an argument' do
+      pp = <<-EOS
+      $a = "countessship duchessship governessship hostessship"
+      $o = squeeze($a, 's')
+      notice(inline_template('squeeze is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/squeeze is "counteship ducheship governeship hosteship"/)
+      end
+    end
+  end
+  describe 'failure' do
+    it 'handles no arguments'
+    it 'handles non strings or arrays'
+  end
+end
diff --git a/spec/acceptance/str2bool_spec.rb b/spec/acceptance/str2bool_spec.rb
new file mode 100644 (file)
index 0000000..a3ba5fe
--- /dev/null
@@ -0,0 +1,30 @@
+require 'spec_helper_acceptance'
+
+describe 'str2bool function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  describe 'success' do
+    it 'works with "y"' do
+      pp = <<-EOS
+      $o = str2bool('y')
+      notice(inline_template('str2bool is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/str2bool is true/)
+      end
+    end
+    it 'works with "Y"'
+    it 'works with "yes"'
+    it 'works with "1"'
+    it 'works with "true"'
+    it 'works with "n"'
+    it 'works with "N"'
+    it 'works with "no"'
+    it 'works with "0"'
+    it 'works with "false"'
+    it 'works with undef'
+  end
+  describe 'failure' do
+    it 'handles no arguments'
+    it 'handles non arrays or strings'
+  end
+end
diff --git a/spec/acceptance/str2saltedsha512_spec.rb b/spec/acceptance/str2saltedsha512_spec.rb
new file mode 100644 (file)
index 0000000..d353e22
--- /dev/null
@@ -0,0 +1,21 @@
+require 'spec_helper_acceptance'
+
+describe 'str2saltedsha512 function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  describe 'success' do
+    it 'works with "y"' do
+      pp = <<-EOS
+      $o = str2saltedsha512('password')
+      notice(inline_template('str2saltedsha512 is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/str2saltedsha512 is "[a-f0-9]{136}"/)
+      end
+    end
+  end
+  describe 'failure' do
+    it 'handles no arguments'
+    it 'handles more than one argument'
+    it 'handles non strings'
+  end
+end
diff --git a/spec/acceptance/strftime_spec.rb b/spec/acceptance/strftime_spec.rb
new file mode 100644 (file)
index 0000000..73a01c0
--- /dev/null
@@ -0,0 +1,21 @@
+require 'spec_helper_acceptance'
+
+describe 'strftime function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  describe 'success' do
+    it 'gives the Century' do
+      pp = <<-EOS
+      $o = strftime('%C')
+      notice(inline_template('strftime is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/strftime is "20"/)
+      end
+    end
+    it 'takes a timezone argument'
+  end
+  describe 'failure' do
+    it 'handles no arguments'
+    it 'handles invalid format strings'
+  end
+end
diff --git a/spec/acceptance/strip_spec.rb b/spec/acceptance/strip_spec.rb
new file mode 100644 (file)
index 0000000..fe0c7e9
--- /dev/null
@@ -0,0 +1,33 @@
+require 'spec_helper_acceptance'
+
+describe 'strip function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  describe 'success' do
+    it 'strips arrays' do
+      pp = <<-EOS
+      $a = ["  the   ","   public   ","   art","galleries   "]
+      # Anagram: Large picture halls, I bet
+      $o = strip($a)
+      notice(inline_template('strip is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/strip is \["the", "public", "art", "galleries"\]/)
+      end
+    end
+    it 'strips strings' do
+      pp = <<-EOS
+      $a = "   blowzy night-frumps vex'd jack q   "
+      $o = strip($a)
+      notice(inline_template('strip is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/strip is "blowzy night-frumps vex'd jack q"/)
+      end
+    end
+  end
+  describe 'failure' do
+    it 'handles no arguments'
+    it 'handles non strings or arrays'
+  end
+end
diff --git a/spec/acceptance/suffix_spec.rb b/spec/acceptance/suffix_spec.rb
new file mode 100644 (file)
index 0000000..493bc2b
--- /dev/null
@@ -0,0 +1,41 @@
+require 'spec_helper_acceptance'
+
+describe 'suffix function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  describe 'success' do
+    it 'suffixes array of values' do
+      pp = <<-EOS
+      $o = suffix(['a','b','c'],'p')
+      notice(inline_template('suffix is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/suffix is \["ap", "bp", "cp"\]/)
+      end
+    end
+    it 'suffixs with empty array' do
+      pp = <<-EOS
+      $o = suffix([],'p')
+      notice(inline_template('suffix is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/suffix is \[\]/)
+      end
+    end
+    it 'suffixs array of values with undef' do
+      pp = <<-EOS
+      $o = suffix(['a','b','c'], undef)
+      notice(inline_template('suffix is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/suffix is \["a", "b", "c"\]/)
+      end
+    end
+  end
+  describe 'failure' do
+    it 'fails with no arguments'
+    it 'fails when first argument is not array'
+    it 'fails when second argument is not string'
+  end
+end
diff --git a/spec/acceptance/swapcase_spec.rb b/spec/acceptance/swapcase_spec.rb
new file mode 100644 (file)
index 0000000..d4ae0dd
--- /dev/null
@@ -0,0 +1,21 @@
+require 'spec_helper_acceptance'
+
+describe 'swapcase function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  describe 'success' do
+    it 'works with strings' do
+      pp = <<-EOS
+      $o = swapcase('aBcD')
+      notice(inline_template('swapcase is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/swapcase is "AbCd"/)
+      end
+    end
+    it 'works with arrays'
+  end
+  describe 'failure' do
+    it 'handles no arguments'
+    it 'handles non arrays or strings'
+  end
+end
diff --git a/spec/acceptance/time_spec.rb b/spec/acceptance/time_spec.rb
new file mode 100644 (file)
index 0000000..2a5e52a
--- /dev/null
@@ -0,0 +1,35 @@
+require 'spec_helper_acceptance'
+
+describe 'time function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  describe 'success' do
+    it 'gives the time' do
+      pp = <<-EOS
+      $o = time()
+      notice(inline_template('time is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        m = r.stdout.match(/time is (\d+)\D/)
+
+        # When I wrote this test
+        expect(Integer(m[1])).to be > 1398894170
+      end
+    end
+    it 'takes a timezone argument' do
+      pp = <<-EOS
+      $o = time('UTC')
+      notice(inline_template('time is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        m = r.stdout.match(/time is (\d+)\D/)
+
+        expect(Integer(m[1])).to be > 1398894170
+      end
+    end
+  end
+  describe 'failure' do
+    it 'handles more arguments'
+    it 'handles invalid timezones'
+  end
+end
diff --git a/spec/acceptance/to_bytes_spec.rb b/spec/acceptance/to_bytes_spec.rb
new file mode 100644 (file)
index 0000000..34f3647
--- /dev/null
@@ -0,0 +1,26 @@
+require 'spec_helper_acceptance'
+
+describe 'to_bytes function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  describe 'success' do
+    it 'converts kB to B' do
+      pp = <<-EOS
+      $o = to_bytes('4 kB')
+      notice(inline_template('to_bytes is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        m = r.stdout.match(/to_bytes is (\d+)\D/)
+        expect(m[1]).to eq("4096")
+      end
+    end
+    it 'works without the B in unit'
+    it 'works without a space before unit'
+    it 'works without a unit'
+    it 'converts fractions'
+  end
+  describe 'failure' do
+    it 'handles no arguments'
+    it 'handles non integer arguments'
+    it 'handles unknown units like uB'
+  end
+end
diff --git a/spec/acceptance/type_spec.rb b/spec/acceptance/type_spec.rb
new file mode 100644 (file)
index 0000000..dc72f74
--- /dev/null
@@ -0,0 +1,36 @@
+require 'spec_helper_acceptance'
+
+describe 'type function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  describe 'success' do
+    it 'types arrays' do
+      pp = <<-EOS
+      $a = ["the","public","art","galleries"]
+      # Anagram: Large picture halls, I bet
+      $o = type($a)
+      notice(inline_template('type is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/type is "array"/)
+      end
+    end
+    it 'types strings' do
+      pp = <<-EOS
+      $a = "blowzy night-frumps vex'd jack q"
+      $o = type($a)
+      notice(inline_template('type is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/type is "string"/)
+      end
+    end
+    it 'types hashes'
+    it 'types integers'
+    it 'types floats'
+    it 'types booleans'
+  end
+  describe 'failure' do
+    it 'handles no arguments'
+  end
+end
diff --git a/spec/acceptance/union_spec.rb b/spec/acceptance/union_spec.rb
new file mode 100644 (file)
index 0000000..f413d9a
--- /dev/null
@@ -0,0 +1,23 @@
+require 'spec_helper_acceptance'
+
+describe 'union function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  describe 'success' do
+    it 'unions arrays' do
+      pp = <<-EOS
+      $a = ["the","public"]
+      $b = ["art","galleries"]
+      # Anagram: Large picture halls, I bet
+      $o = union($a,$b)
+      notice(inline_template('union is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/union is \["the", "public", "art", "galleries"\]/)
+      end
+    end
+  end
+  describe 'failure' do
+    it 'handles no arguments'
+    it 'handles non arrays'
+  end
+end
diff --git a/spec/acceptance/unique_spec.rb b/spec/acceptance/unique_spec.rb
new file mode 100644 (file)
index 0000000..ea63cb4
--- /dev/null
@@ -0,0 +1,32 @@
+require 'spec_helper_acceptance'
+
+describe 'unique function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  describe 'success' do
+    it 'uniques arrays' do
+      pp = <<-EOS
+      $a = ["wallless", "wallless", "brrr", "goddessship"]
+      $o = unique($a)
+      notice(inline_template('unique is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/unique is \["wallless", "brrr", "goddessship"\]/)
+      end
+    end
+    it 'uniques strings' do
+      pp = <<-EOS
+      $a = "wallless laparohysterosalpingooophorectomy brrr goddessship"
+      $o = unique($a)
+      notice(inline_template('unique is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/unique is "wales prohytingcmbd"/)
+      end
+    end
+  end
+  describe 'failure' do
+    it 'handles no arguments'
+    it 'handles non strings or arrays'
+  end
+end
diff --git a/spec/acceptance/upcase_spec.rb b/spec/acceptance/upcase_spec.rb
new file mode 100644 (file)
index 0000000..50e6302
--- /dev/null
@@ -0,0 +1,32 @@
+require 'spec_helper_acceptance'
+
+describe 'upcase function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  describe 'success' do
+    it 'upcases arrays' do
+      pp = <<-EOS
+      $a = ["wallless", "laparohysterosalpingooophorectomy", "brrr", "goddessship"]
+      $o = upcase($a)
+      notice(inline_template('upcase is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/upcase is \["WALLLESS", "LAPAROHYSTEROSALPINGOOOPHORECTOMY", "BRRR", "GODDESSSHIP"\]/)
+      end
+    end
+    it 'upcases strings' do
+      pp = <<-EOS
+      $a = "wallless laparohysterosalpingooophorectomy brrr goddessship"
+      $o = upcase($a)
+      notice(inline_template('upcase is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/upcase is "WALLLESS LAPAROHYSTEROSALPINGOOOPHORECTOMY BRRR GODDESSSHIP"/)
+      end
+    end
+  end
+  describe 'failure' do
+    it 'handles no arguments'
+    it 'handles non strings or arrays'
+  end
+end
diff --git a/spec/acceptance/uriescape_spec.rb b/spec/acceptance/uriescape_spec.rb
new file mode 100644 (file)
index 0000000..0b8a549
--- /dev/null
@@ -0,0 +1,22 @@
+require 'spec_helper_acceptance'
+
+describe 'uriescape function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  describe 'success' do
+    it 'uriescape strings' do
+      pp = <<-EOS
+      $a = ":/?#[]@!$&'()*+,;= \\\"{}"
+      $o = uriescape($a)
+      notice(inline_template('uriescape is <%= @o.inspect %>'))
+      EOS
+
+      apply_manifest(pp, :catch_failures => true) do |r|
+        expect(r.stdout).to match(/uriescape is ":\/\?%23\[\]@!\$&'\(\)\*\+,;=%20%22%7B%7D"/)
+      end
+    end
+    it 'does nothing if a string is already safe'
+  end
+  describe 'failure' do
+    it 'handles no arguments'
+    it 'handles non strings or arrays'
+  end
+end
diff --git a/spec/acceptance/validate_absolute_path_spec.rb b/spec/acceptance/validate_absolute_path_spec.rb
new file mode 100644 (file)
index 0000000..35ee974
--- /dev/null
@@ -0,0 +1,30 @@
+require 'spec_helper_acceptance'
+
+describe 'validate_absolute_path function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  describe 'success' do
+    %w{
+      C:/
+      C:\\\\
+      C:\\\\WINDOWS\\\\System32
+      C:/windows/system32
+      X:/foo/bar
+      X:\\\\foo\\\\bar
+      /var/tmp
+      /var/lib/puppet
+      /var/opt/../lib/puppet
+    }.each do |path|
+      it "validates a single argument #{path}" do
+        pp = <<-EOS
+        $one = '#{path}'
+        validate_absolute_path($one)
+        EOS
+
+        apply_manifest(pp, :catch_failures => true)
+      end
+    end
+  end
+  describe 'failure' do
+    it 'handles improper number of arguments'
+    it 'handles relative paths'
+  end
+end
index 8b904f5307bc5d02a44f1b63ef61abc3350fc585..2175ada0e0f42e0a845ba905172e071e67a6c1b9 100644 (file)
@@ -1,39 +1,39 @@
-require 'spec_helper_acceptance'
-
-describe 'validate_augeas function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
-  describe 'prep' do
-    it 'installs augeas for tests'
-  end
-  describe 'success' do
-    it 'validates a single argument' do
-      pp = <<-EOS
-      $one = { 'a' => 1 }
-      validate_hash($one)
-      EOS
-
-      apply_manifest(pp, :catch_failures => true)
-    end
-    it 'validates an multiple arguments' do
-      pp = <<-EOS
-      $one = { 'a' => 1 }
-      $two = { 'b' => 2 }
-      validate_hash($one,$two)
-      EOS
-
-      apply_manifest(pp, :catch_failures => true)
-    end
-    it 'validates a non-hash' do
-      {
-        %{validate_hash('{ "not" => "hash" }')} => "String",
-        %{validate_hash('string')}              => "String",
-        %{validate_hash(["array"])}             => "Array",
-        %{validate_hash(undef)}                 => "String",
-      }.each do |pp,type|
-        expect(apply_manifest(pp, :expect_failures => true).stderr).to match(/a #{type}/)
-      end
-    end
-  end
-  describe 'failure' do
-    it 'handles improper number of arguments'
-  end
-end
+#require 'spec_helper_acceptance'
+#
+#describe 'validate_augeas function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+#  describe 'prep' do
+#    it 'installs augeas for tests'
+#  end
+#  describe 'success' do
+#    it 'validates a single argument' do
+#      pp = <<-EOS
+#      $one = { 'a' => 1 }
+#      validate_hash($one)
+#      EOS
+#
+#      apply_manifest(pp, :catch_failures => true)
+#    end
+#    it 'validates an multiple arguments' do
+#      pp = <<-EOS
+#      $one = { 'a' => 1 }
+#      $two = { 'b' => 2 }
+#      validate_hash($one,$two)
+#      EOS
+#
+#      apply_manifest(pp, :catch_failures => true)
+#    end
+#    it 'validates a non-hash' do
+#      {
+#        %{validate_hash('{ "not" => "hash" }')} => "String",
+#        %{validate_hash('string')}              => "String",
+#        %{validate_hash(["array"])}             => "Array",
+#        %{validate_hash(undef)}                 => "String",
+#      }.each do |pp,type|
+#        expect(apply_manifest(pp, :expect_failures => true).stderr).to match(/a #{type}/)
+#      end
+#    end
+#  end
+#  describe 'failure' do
+#    it 'handles improper number of arguments'
+#  end
+#end
diff --git a/spec/acceptance/validate_ipv4_address_spec.rb b/spec/acceptance/validate_ipv4_address_spec.rb
new file mode 100644 (file)
index 0000000..b98b81c
--- /dev/null
@@ -0,0 +1,30 @@
+require 'spec_helper_acceptance'
+
+describe 'validate_ipv4_address function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  describe 'success' do
+    it 'validates a single argument' do
+      pp = <<-EOS
+      $one = '1.2.3.4'
+      validate_ipv4_address($one)
+      EOS
+
+      apply_manifest(pp, :catch_failures => true)
+    end
+    it 'validates an multiple arguments' do
+      pp = <<-EOS
+      $one = '1.2.3.4'
+      $two = '5.6.7.8'
+      validate_ipv4_address($one,$two)
+      EOS
+
+      apply_manifest(pp, :catch_failures => true)
+    end
+  end
+  describe 'failure' do
+    it 'handles improper number of arguments'
+    it 'handles ipv6 addresses'
+    it 'handles non-ipv4 strings'
+    it 'handles numbers'
+    it 'handles no arguments'
+  end
+end
diff --git a/spec/acceptance/validate_ipv6_address_spec.rb b/spec/acceptance/validate_ipv6_address_spec.rb
new file mode 100644 (file)
index 0000000..3e73a82
--- /dev/null
@@ -0,0 +1,30 @@
+require 'spec_helper_acceptance'
+
+describe 'validate_ipv6_address function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('operatingsystem')) do
+  describe 'success' do
+    it 'validates a single argument' do
+      pp = <<-EOS
+      $one = '3ffe:0505:0002::'
+      validate_ipv6_address($one)
+      EOS
+
+      apply_manifest(pp, :catch_failures => true)
+    end
+    it 'validates an multiple arguments' do
+      pp = <<-EOS
+      $one = '3ffe:0505:0002::'
+      $two = '3ffe:0505:0001::'
+      validate_ipv6_address($one,$two)
+      EOS
+
+      apply_manifest(pp, :catch_failures => true)
+    end
+  end
+  describe 'failure' do
+    it 'handles improper number of arguments'
+    it 'handles ipv6 addresses'
+    it 'handles non-ipv6 strings'
+    it 'handles numbers'
+    it 'handles no arguments'
+  end
+end
index fb661dde0c47dcb6799500742e37aa47d3d810f5..f341e3d0769f36011707e693998e254c11d3ada0 100644 (file)
@@ -13,9 +13,10 @@ describe 'values_at function', :unless => UNSUPPORTED_PLATFORMS.include?(fact('o
       expect(apply_manifest(pp, :catch_failures => true).stdout).to match(/\["b"\]/)
     end
     it 'returns a specific negative index value' do
+      pending("negative numbers don't work")
       pp = <<-EOS
       $one = ['a','b','c','d','e']
-      $two = "-1"
+      $two = -1
       $output = values_at($one,$two)
       notice(inline_template('<%= @output.inspect %>'))
       EOS