puppetmodule-stdlib 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. data/CHANGELOG +253 -0
  2. data/CONTRIBUTING.md +65 -0
  3. data/Gemfile +33 -0
  4. data/LICENSE +19 -0
  5. data/Modulefile +11 -0
  6. data/README.markdown +1173 -0
  7. data/README_DEVELOPER.markdown +35 -0
  8. data/RELEASE_PROCESS.markdown +24 -0
  9. data/Rakefile +2 -0
  10. data/lib/facter/pe_version.rb +53 -0
  11. data/lib/facter/puppet_vardir.rb +26 -0
  12. data/lib/facter/root_home.rb +19 -0
  13. data/lib/facter/util/puppet_settings.rb +21 -0
  14. data/lib/puppet/parser/functions/abs.rb +36 -0
  15. data/lib/puppet/parser/functions/any2array.rb +33 -0
  16. data/lib/puppet/parser/functions/bool2num.rb +49 -0
  17. data/lib/puppet/parser/functions/capitalize.rb +34 -0
  18. data/lib/puppet/parser/functions/chomp.rb +35 -0
  19. data/lib/puppet/parser/functions/chop.rb +37 -0
  20. data/lib/puppet/parser/functions/concat.rb +37 -0
  21. data/lib/puppet/parser/functions/count.rb +22 -0
  22. data/lib/puppet/parser/functions/defined_with_params.rb +35 -0
  23. data/lib/puppet/parser/functions/delete.rb +46 -0
  24. data/lib/puppet/parser/functions/delete_at.rb +49 -0
  25. data/lib/puppet/parser/functions/downcase.rb +33 -0
  26. data/lib/puppet/parser/functions/empty.rb +28 -0
  27. data/lib/puppet/parser/functions/ensure_packages.rb +24 -0
  28. data/lib/puppet/parser/functions/ensure_resource.rb +35 -0
  29. data/lib/puppet/parser/functions/flatten.rb +33 -0
  30. data/lib/puppet/parser/functions/floor.rb +20 -0
  31. data/lib/puppet/parser/functions/fqdn_rotate.rb +46 -0
  32. data/lib/puppet/parser/functions/get_module_path.rb +17 -0
  33. data/lib/puppet/parser/functions/getparam.rb +35 -0
  34. data/lib/puppet/parser/functions/getvar.rb +26 -0
  35. data/lib/puppet/parser/functions/grep.rb +33 -0
  36. data/lib/puppet/parser/functions/has_interface_with.rb +52 -0
  37. data/lib/puppet/parser/functions/has_ip_address.rb +25 -0
  38. data/lib/puppet/parser/functions/has_ip_network.rb +25 -0
  39. data/lib/puppet/parser/functions/has_key.rb +28 -0
  40. data/lib/puppet/parser/functions/hash.rb +41 -0
  41. data/lib/puppet/parser/functions/is_array.rb +22 -0
  42. data/lib/puppet/parser/functions/is_domain_name.rb +47 -0
  43. data/lib/puppet/parser/functions/is_float.rb +27 -0
  44. data/lib/puppet/parser/functions/is_function_available.rb +23 -0
  45. data/lib/puppet/parser/functions/is_hash.rb +22 -0
  46. data/lib/puppet/parser/functions/is_integer.rb +27 -0
  47. data/lib/puppet/parser/functions/is_ip_address.rb +32 -0
  48. data/lib/puppet/parser/functions/is_mac_address.rb +27 -0
  49. data/lib/puppet/parser/functions/is_numeric.rb +27 -0
  50. data/lib/puppet/parser/functions/is_string.rb +26 -0
  51. data/lib/puppet/parser/functions/join.rb +41 -0
  52. data/lib/puppet/parser/functions/join_keys_to_values.rb +47 -0
  53. data/lib/puppet/parser/functions/keys.rb +26 -0
  54. data/lib/puppet/parser/functions/loadyaml.rb +20 -0
  55. data/lib/puppet/parser/functions/lstrip.rb +33 -0
  56. data/lib/puppet/parser/functions/max.rb +21 -0
  57. data/lib/puppet/parser/functions/member.rb +44 -0
  58. data/lib/puppet/parser/functions/merge.rb +33 -0
  59. data/lib/puppet/parser/functions/min.rb +21 -0
  60. data/lib/puppet/parser/functions/num2bool.rb +43 -0
  61. data/lib/puppet/parser/functions/parsejson.rb +24 -0
  62. data/lib/puppet/parser/functions/parseyaml.rb +24 -0
  63. data/lib/puppet/parser/functions/pick.rb +29 -0
  64. data/lib/puppet/parser/functions/prefix.rb +45 -0
  65. data/lib/puppet/parser/functions/range.rb +80 -0
  66. data/lib/puppet/parser/functions/reject.rb +31 -0
  67. data/lib/puppet/parser/functions/reverse.rb +28 -0
  68. data/lib/puppet/parser/functions/rstrip.rb +32 -0
  69. data/lib/puppet/parser/functions/shuffle.rb +46 -0
  70. data/lib/puppet/parser/functions/size.rb +48 -0
  71. data/lib/puppet/parser/functions/sort.rb +27 -0
  72. data/lib/puppet/parser/functions/squeeze.rb +36 -0
  73. data/lib/puppet/parser/functions/str2bool.rb +46 -0
  74. data/lib/puppet/parser/functions/str2saltedsha512.rb +32 -0
  75. data/lib/puppet/parser/functions/strftime.rb +107 -0
  76. data/lib/puppet/parser/functions/strip.rb +39 -0
  77. data/lib/puppet/parser/functions/suffix.rb +45 -0
  78. data/lib/puppet/parser/functions/swapcase.rb +39 -0
  79. data/lib/puppet/parser/functions/time.rb +49 -0
  80. data/lib/puppet/parser/functions/to_bytes.rb +28 -0
  81. data/lib/puppet/parser/functions/type.rb +50 -0
  82. data/lib/puppet/parser/functions/unique.rb +51 -0
  83. data/lib/puppet/parser/functions/upcase.rb +41 -0
  84. data/lib/puppet/parser/functions/uriescape.rb +36 -0
  85. data/lib/puppet/parser/functions/validate_absolute_path.rb +56 -0
  86. data/lib/puppet/parser/functions/validate_array.rb +33 -0
  87. data/lib/puppet/parser/functions/validate_augeas.rb +81 -0
  88. data/lib/puppet/parser/functions/validate_bool.rb +34 -0
  89. data/lib/puppet/parser/functions/validate_cmd.rb +47 -0
  90. data/lib/puppet/parser/functions/validate_hash.rb +33 -0
  91. data/lib/puppet/parser/functions/validate_re.rb +40 -0
  92. data/lib/puppet/parser/functions/validate_slength.rb +52 -0
  93. data/lib/puppet/parser/functions/validate_string.rb +33 -0
  94. data/lib/puppet/parser/functions/values.rb +39 -0
  95. data/lib/puppet/parser/functions/values_at.rb +98 -0
  96. data/lib/puppet/parser/functions/zip.rb +65 -0
  97. data/lib/puppet/provider/file_line/ruby.rb +59 -0
  98. data/lib/puppet/type/anchor.rb +41 -0
  99. data/lib/puppet/type/file_line.rb +70 -0
  100. data/manifests/init.pp +20 -0
  101. data/manifests/stages.pp +43 -0
  102. data/spec/functions/defined_with_params_spec.rb +37 -0
  103. data/spec/functions/ensure_packages_spec.rb +42 -0
  104. data/spec/functions/ensure_resource_spec.rb +40 -0
  105. data/spec/functions/getparam_spec.rb +34 -0
  106. data/spec/monkey_patches/alias_should_to_must.rb +8 -0
  107. data/spec/monkey_patches/publicize_methods.rb +10 -0
  108. data/spec/spec.opts +6 -0
  109. data/spec/spec_helper.rb +28 -0
  110. data/spec/unit/facter/pe_version_spec.rb +76 -0
  111. data/spec/unit/facter/root_home_spec.rb +40 -0
  112. data/spec/unit/facter/util/puppet_settings_spec.rb +35 -0
  113. data/spec/unit/puppet/parser/functions/abs_spec.rb +25 -0
  114. data/spec/unit/puppet/parser/functions/any2array_spec.rb +55 -0
  115. data/spec/unit/puppet/parser/functions/bool2num_spec.rb +24 -0
  116. data/spec/unit/puppet/parser/functions/capitalize_spec.rb +19 -0
  117. data/spec/unit/puppet/parser/functions/chomp_spec.rb +19 -0
  118. data/spec/unit/puppet/parser/functions/chop_spec.rb +19 -0
  119. data/spec/unit/puppet/parser/functions/concat_spec.rb +15 -0
  120. data/spec/unit/puppet/parser/functions/count_spec.rb +31 -0
  121. data/spec/unit/puppet/parser/functions/delete_at_spec.rb +19 -0
  122. data/spec/unit/puppet/parser/functions/delete_spec.rb +38 -0
  123. data/spec/unit/puppet/parser/functions/downcase_spec.rb +24 -0
  124. data/spec/unit/puppet/parser/functions/empty_spec.rb +23 -0
  125. data/spec/unit/puppet/parser/functions/flatten_spec.rb +27 -0
  126. data/spec/unit/puppet/parser/functions/floor_spec.rb +39 -0
  127. data/spec/unit/puppet/parser/functions/fqdn_rotate_spec.rb +33 -0
  128. data/spec/unit/puppet/parser/functions/get_module_path_spec.rb +46 -0
  129. data/spec/unit/puppet/parser/functions/getvar_spec.rb +37 -0
  130. data/spec/unit/puppet/parser/functions/grep_spec.rb +19 -0
  131. data/spec/unit/puppet/parser/functions/has_interface_with_spec.rb +64 -0
  132. data/spec/unit/puppet/parser/functions/has_ip_address_spec.rb +39 -0
  133. data/spec/unit/puppet/parser/functions/has_ip_network_spec.rb +36 -0
  134. data/spec/unit/puppet/parser/functions/has_key_spec.rb +42 -0
  135. data/spec/unit/puppet/parser/functions/hash_spec.rb +19 -0
  136. data/spec/unit/puppet/parser/functions/is_array_spec.rb +29 -0
  137. data/spec/unit/puppet/parser/functions/is_domain_name_spec.rb +64 -0
  138. data/spec/unit/puppet/parser/functions/is_float_spec.rb +33 -0
  139. data/spec/unit/puppet/parser/functions/is_function_available.rb +31 -0
  140. data/spec/unit/puppet/parser/functions/is_hash_spec.rb +29 -0
  141. data/spec/unit/puppet/parser/functions/is_integer_spec.rb +34 -0
  142. data/spec/unit/puppet/parser/functions/is_ip_address_spec.rb +39 -0
  143. data/spec/unit/puppet/parser/functions/is_mac_address_spec.rb +29 -0
  144. data/spec/unit/puppet/parser/functions/is_numeric_spec.rb +39 -0
  145. data/spec/unit/puppet/parser/functions/is_string_spec.rb +34 -0
  146. data/spec/unit/puppet/parser/functions/join_keys_to_values_spec.rb +40 -0
  147. data/spec/unit/puppet/parser/functions/join_spec.rb +19 -0
  148. data/spec/unit/puppet/parser/functions/keys_spec.rb +21 -0
  149. data/spec/unit/puppet/parser/functions/lstrip_spec.rb +19 -0
  150. data/spec/unit/puppet/parser/functions/max_spec.rb +27 -0
  151. data/spec/unit/puppet/parser/functions/member_spec.rb +24 -0
  152. data/spec/unit/puppet/parser/functions/merge_spec.rb +47 -0
  153. data/spec/unit/puppet/parser/functions/min_spec.rb +27 -0
  154. data/spec/unit/puppet/parser/functions/num2bool_spec.rb +67 -0
  155. data/spec/unit/puppet/parser/functions/parsejson_spec.rb +22 -0
  156. data/spec/unit/puppet/parser/functions/parseyaml_spec.rb +24 -0
  157. data/spec/unit/puppet/parser/functions/pick_spec.rb +34 -0
  158. data/spec/unit/puppet/parser/functions/prefix_spec.rb +19 -0
  159. data/spec/unit/puppet/parser/functions/range_spec.rb +34 -0
  160. data/spec/unit/puppet/parser/functions/reject_spec.rb +20 -0
  161. data/spec/unit/puppet/parser/functions/reverse_spec.rb +19 -0
  162. data/spec/unit/puppet/parser/functions/rstrip_spec.rb +24 -0
  163. data/spec/unit/puppet/parser/functions/shuffle_spec.rb +24 -0
  164. data/spec/unit/puppet/parser/functions/size_spec.rb +24 -0
  165. data/spec/unit/puppet/parser/functions/sort_spec.rb +24 -0
  166. data/spec/unit/puppet/parser/functions/squeeze_spec.rb +24 -0
  167. data/spec/unit/puppet/parser/functions/str2bool_spec.rb +31 -0
  168. data/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb +45 -0
  169. data/spec/unit/puppet/parser/functions/strftime_spec.rb +29 -0
  170. data/spec/unit/puppet/parser/functions/strip_spec.rb +18 -0
  171. data/spec/unit/puppet/parser/functions/suffix_spec.rb +19 -0
  172. data/spec/unit/puppet/parser/functions/swapcase_spec.rb +19 -0
  173. data/spec/unit/puppet/parser/functions/time_spec.rb +29 -0
  174. data/spec/unit/puppet/parser/functions/to_bytes_spec.rb +58 -0
  175. data/spec/unit/puppet/parser/functions/type_spec.rb +43 -0
  176. data/spec/unit/puppet/parser/functions/unique_spec.rb +24 -0
  177. data/spec/unit/puppet/parser/functions/upcase_spec.rb +24 -0
  178. data/spec/unit/puppet/parser/functions/uriescape_spec.rb +24 -0
  179. data/spec/unit/puppet/parser/functions/validate_absolute_path_spec.rb +83 -0
  180. data/spec/unit/puppet/parser/functions/validate_array_spec.rb +38 -0
  181. data/spec/unit/puppet/parser/functions/validate_augeas_spec.rb +102 -0
  182. data/spec/unit/puppet/parser/functions/validate_bool_spec.rb +51 -0
  183. data/spec/unit/puppet/parser/functions/validate_cmd_spec.rb +81 -0
  184. data/spec/unit/puppet/parser/functions/validate_hash_spec.rb +43 -0
  185. data/spec/unit/puppet/parser/functions/validate_re_spec.rb +76 -0
  186. data/spec/unit/puppet/parser/functions/validate_slength_spec.rb +48 -0
  187. data/spec/unit/puppet/parser/functions/validate_string_spec.rb +60 -0
  188. data/spec/unit/puppet/parser/functions/values_at_spec.rb +38 -0
  189. data/spec/unit/puppet/parser/functions/values_spec.rb +31 -0
  190. data/spec/unit/puppet/parser/functions/zip_spec.rb +15 -0
  191. data/spec/unit/puppet/provider/file_line/ruby_spec.rb +127 -0
  192. data/spec/unit/puppet/type/anchor_spec.rb +11 -0
  193. data/spec/unit/puppet/type/file_line_spec.rb +69 -0
  194. data/spec/watchr.rb +86 -0
  195. data/tests/file_line.pp +9 -0
  196. data/tests/has_interface_with.pp +10 -0
  197. data/tests/has_ip_address.pp +3 -0
  198. data/tests/has_ip_network.pp +4 -0
  199. data/tests/init.pp +1 -0
  200. metadata +252 -0
@@ -0,0 +1,64 @@
1
+ #!/usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe Puppet::Parser::Functions.function(:has_interface_with) do
5
+
6
+ let(:scope) do
7
+ PuppetlabsSpec::PuppetInternals.scope
8
+ end
9
+
10
+ # The subject of these examples is the method itself.
11
+ subject do
12
+ function_name = Puppet::Parser::Functions.function(:has_interface_with)
13
+ scope.method(function_name)
14
+ end
15
+
16
+ # We need to mock out the Facts so we can specify how we expect this function
17
+ # to behave on different platforms.
18
+ context "On Mac OS X Systems" do
19
+ before :each do
20
+ scope.stubs(:lookupvar).with("interfaces").returns('lo0,gif0,stf0,en1,p2p0,fw0,en0,vmnet1,vmnet8,utun0')
21
+ end
22
+ it 'should have loopback (lo0)' do
23
+ subject.call(['lo0']).should be_true
24
+ end
25
+ it 'should not have loopback (lo)' do
26
+ subject.call(['lo']).should be_false
27
+ end
28
+ end
29
+ context "On Linux Systems" do
30
+ before :each do
31
+ scope.stubs(:lookupvar).with("interfaces").returns('eth0,lo')
32
+ scope.stubs(:lookupvar).with("ipaddress").returns('10.0.0.1')
33
+ scope.stubs(:lookupvar).with("ipaddress_lo").returns('127.0.0.1')
34
+ scope.stubs(:lookupvar).with("ipaddress_eth0").returns('10.0.0.1')
35
+ scope.stubs(:lookupvar).with('muppet').returns('kermit')
36
+ scope.stubs(:lookupvar).with('muppet_lo').returns('mspiggy')
37
+ scope.stubs(:lookupvar).with('muppet_eth0').returns('kermit')
38
+ end
39
+ it 'should have loopback (lo)' do
40
+ subject.call(['lo']).should be_true
41
+ end
42
+ it 'should not have loopback (lo0)' do
43
+ subject.call(['lo0']).should be_false
44
+ end
45
+ it 'should have ipaddress with 127.0.0.1' do
46
+ subject.call(['ipaddress', '127.0.0.1']).should be_true
47
+ end
48
+ it 'should have ipaddress with 10.0.0.1' do
49
+ subject.call(['ipaddress', '10.0.0.1']).should be_true
50
+ end
51
+ it 'should not have ipaddress with 10.0.0.2' do
52
+ subject.call(['ipaddress', '10.0.0.2']).should be_false
53
+ end
54
+ it 'should have muppet named kermit' do
55
+ subject.call(['muppet', 'kermit']).should be_true
56
+ end
57
+ it 'should have muppet named mspiggy' do
58
+ subject.call(['muppet', 'mspiggy']).should be_true
59
+ end
60
+ it 'should not have muppet named bigbird' do
61
+ subject.call(['muppet', 'bigbird']).should be_false
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe Puppet::Parser::Functions.function(:has_ip_address) do
5
+
6
+ let(:scope) do
7
+ PuppetlabsSpec::PuppetInternals.scope
8
+ end
9
+
10
+ subject do
11
+ function_name = Puppet::Parser::Functions.function(:has_ip_address)
12
+ scope.method(function_name)
13
+ end
14
+
15
+ context "On Linux Systems" do
16
+ before :each do
17
+ scope.stubs(:lookupvar).with('interfaces').returns('eth0,lo')
18
+ scope.stubs(:lookupvar).with('ipaddress').returns('10.0.2.15')
19
+ scope.stubs(:lookupvar).with('ipaddress_eth0').returns('10.0.2.15')
20
+ scope.stubs(:lookupvar).with('ipaddress_lo').returns('127.0.0.1')
21
+ end
22
+
23
+ it 'should have primary address (10.0.2.15)' do
24
+ subject.call(['10.0.2.15']).should be_true
25
+ end
26
+
27
+ it 'should have lookupback address (127.0.0.1)' do
28
+ subject.call(['127.0.0.1']).should be_true
29
+ end
30
+
31
+ it 'should not have other address' do
32
+ subject.call(['192.1681.1.1']).should be_false
33
+ end
34
+
35
+ it 'should not have "mspiggy" on an interface' do
36
+ subject.call(['mspiggy']).should be_false
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,36 @@
1
+ #!/usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe Puppet::Parser::Functions.function(:has_ip_network) do
5
+
6
+ let(:scope) do
7
+ PuppetlabsSpec::PuppetInternals.scope
8
+ end
9
+
10
+ subject do
11
+ function_name = Puppet::Parser::Functions.function(:has_ip_network)
12
+ scope.method(function_name)
13
+ end
14
+
15
+ context "On Linux Systems" do
16
+ before :each do
17
+ scope.stubs(:lookupvar).with('interfaces').returns('eth0,lo')
18
+ scope.stubs(:lookupvar).with('network').returns(:undefined)
19
+ scope.stubs(:lookupvar).with('network_eth0').returns('10.0.2.0')
20
+ scope.stubs(:lookupvar).with('network_lo').returns('127.0.0.1')
21
+ end
22
+
23
+ it 'should have primary network (10.0.2.0)' do
24
+ subject.call(['10.0.2.0']).should be_true
25
+ end
26
+
27
+ it 'should have loopback network (127.0.0.0)' do
28
+ subject.call(['127.0.0.1']).should be_true
29
+ end
30
+
31
+ it 'should not have other network' do
32
+ subject.call(['192.168.1.0']).should be_false
33
+ end
34
+ end
35
+ end
36
+
@@ -0,0 +1,42 @@
1
+ #! /usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe Puppet::Parser::Functions.function(:has_key) do
5
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
6
+
7
+ describe 'when calling has_key from puppet' do
8
+ it "should not compile when no arguments are passed" do
9
+ pending("Fails on 2.6.x, see bug #15912") if Puppet.version =~ /^2\.6\./
10
+ Puppet[:code] = '$x = has_key()'
11
+ expect {
12
+ scope.compiler.compile
13
+ }.to raise_error(Puppet::ParseError, /wrong number of arguments/)
14
+ end
15
+
16
+ it "should not compile when 1 argument is passed" do
17
+ pending("Fails on 2.6.x, see bug #15912") if Puppet.version =~ /^2\.6\./
18
+ Puppet[:code] = "$x = has_key('foo')"
19
+ expect {
20
+ scope.compiler.compile
21
+ }.to raise_error(Puppet::ParseError, /wrong number of arguments/)
22
+ end
23
+
24
+ it "should require the first value to be a Hash" do
25
+ pending("Fails on 2.6.x, see bug #15912") if Puppet.version =~ /^2\.6\./
26
+ Puppet[:code] = "$x = has_key('foo', 'bar')"
27
+ expect {
28
+ scope.compiler.compile
29
+ }.to raise_error(Puppet::ParseError, /expects the first argument to be a hash/)
30
+ end
31
+ end
32
+
33
+ describe 'when calling the function has_key from a scope instance' do
34
+ it 'should detect existing keys' do
35
+ scope.function_has_key([{'one' => 1}, 'one']).should be_true
36
+ end
37
+
38
+ it 'should detect existing keys' do
39
+ scope.function_has_key([{'one' => 1}, 'two']).should be_false
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,19 @@
1
+ #! /usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe "the hash function" do
5
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
6
+
7
+ it "should exist" do
8
+ Puppet::Parser::Functions.function("hash").should == "function_hash"
9
+ end
10
+
11
+ it "should raise a ParseError if there is less than 1 arguments" do
12
+ lambda { scope.function_hash([]) }.should( raise_error(Puppet::ParseError))
13
+ end
14
+
15
+ it "should convert an array to a hash" do
16
+ result = scope.function_hash([['a',1,'b',2,'c',3]])
17
+ result.should(eq({'a'=>1,'b'=>2,'c'=>3}))
18
+ end
19
+ end
@@ -0,0 +1,29 @@
1
+ #! /usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe "the is_array function" do
5
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
6
+
7
+ it "should exist" do
8
+ Puppet::Parser::Functions.function("is_array").should == "function_is_array"
9
+ end
10
+
11
+ it "should raise a ParseError if there is less than 1 arguments" do
12
+ lambda { scope.function_is_array([]) }.should( raise_error(Puppet::ParseError))
13
+ end
14
+
15
+ it "should return true if passed an array" do
16
+ result = scope.function_is_array([[1,2,3]])
17
+ result.should(eq(true))
18
+ end
19
+
20
+ it "should return false if passed a hash" do
21
+ result = scope.function_is_array([{'a'=>1}])
22
+ result.should(eq(false))
23
+ end
24
+
25
+ it "should return false if passed a string" do
26
+ result = scope.function_is_array(["asdf"])
27
+ result.should(eq(false))
28
+ end
29
+ end
@@ -0,0 +1,64 @@
1
+ #! /usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe "the is_domain_name function" do
5
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
6
+
7
+ it "should exist" do
8
+ Puppet::Parser::Functions.function("is_domain_name").should == "function_is_domain_name"
9
+ end
10
+
11
+ it "should raise a ParseError if there is less than 1 arguments" do
12
+ lambda { scope.function_is_domain_name([]) }.should( raise_error(Puppet::ParseError))
13
+ end
14
+
15
+ it "should return true if a valid short domain name" do
16
+ result = scope.function_is_domain_name(["x.com"])
17
+ result.should(be_true)
18
+ end
19
+
20
+ it "should return true if the domain is ." do
21
+ result = scope.function_is_domain_name(["."])
22
+ result.should(be_true)
23
+ end
24
+
25
+ it "should return true if the domain is x.com." do
26
+ result = scope.function_is_domain_name(["x.com."])
27
+ result.should(be_true)
28
+ end
29
+
30
+ it "should return true if a valid domain name" do
31
+ result = scope.function_is_domain_name(["foo.bar.com"])
32
+ result.should(be_true)
33
+ end
34
+
35
+ it "should allow domain parts to start with numbers" do
36
+ result = scope.function_is_domain_name(["3foo.2bar.com"])
37
+ result.should(be_true)
38
+ end
39
+
40
+ it "should allow domain to end with a dot" do
41
+ result = scope.function_is_domain_name(["3foo.2bar.com."])
42
+ result.should(be_true)
43
+ end
44
+
45
+ it "should allow a single part domain" do
46
+ result = scope.function_is_domain_name(["orange"])
47
+ result.should(be_true)
48
+ end
49
+
50
+ it "should return false if domain parts start with hyphens" do
51
+ result = scope.function_is_domain_name(["-3foo.2bar.com"])
52
+ result.should(be_false)
53
+ end
54
+
55
+ it "should return true if domain contains hyphens" do
56
+ result = scope.function_is_domain_name(["3foo-bar.2bar-fuzz.com"])
57
+ result.should(be_true)
58
+ end
59
+
60
+ it "should return false if domain name contains spaces" do
61
+ result = scope.function_is_domain_name(["not valid"])
62
+ result.should(be_false)
63
+ end
64
+ end
@@ -0,0 +1,33 @@
1
+ #! /usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe "the is_float function" do
5
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
6
+
7
+ it "should exist" do
8
+ Puppet::Parser::Functions.function("is_float").should == "function_is_float"
9
+ end
10
+
11
+ it "should raise a ParseError if there is less than 1 arguments" do
12
+ lambda { scope.function_is_float([]) }.should( raise_error(Puppet::ParseError))
13
+ end
14
+
15
+ it "should return true if a float" do
16
+ result = scope.function_is_float(["0.12"])
17
+ result.should(eq(true))
18
+ end
19
+
20
+ it "should return false if a string" do
21
+ result = scope.function_is_float(["asdf"])
22
+ result.should(eq(false))
23
+ end
24
+
25
+ it "should return false if an integer" do
26
+ result = scope.function_is_float(["3"])
27
+ result.should(eq(false))
28
+ end
29
+ it "should return true if a float is created from an arithmetical operation" do
30
+ result = scope.function_is_float([3.2*2])
31
+ result.should(eq(true))
32
+ end
33
+ end
@@ -0,0 +1,31 @@
1
+ #!/usr/bin/env rspec
2
+ require 'spec_helper'
3
+
4
+ describe "the is_function_available function" do
5
+ before :all do
6
+ Puppet::Parser::Functions.autoloader.loadall
7
+ end
8
+
9
+ before :each do
10
+ @scope = Puppet::Parser::Scope.new
11
+ end
12
+
13
+ it "should exist" do
14
+ Puppet::Parser::Functions.function("is_function_available").should == "function_is_function_available"
15
+ end
16
+
17
+ it "should raise a ParseError if there is less than 1 arguments" do
18
+ lambda { @scope.function_is_function_available([]) }.should( raise_error(Puppet::ParseError))
19
+ end
20
+
21
+ it "should return false if a nonexistent function is passed" do
22
+ result = @scope.function_is_function_available(['jeff_mccunes_left_sock'])
23
+ result.should(eq(false))
24
+ end
25
+
26
+ it "should return true if an available function is passed" do
27
+ result = @scope.function_is_function_available(['require'])
28
+ result.should(eq(true))
29
+ end
30
+
31
+ end
@@ -0,0 +1,29 @@
1
+ #! /usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe "the is_hash function" do
5
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
6
+
7
+ it "should exist" do
8
+ Puppet::Parser::Functions.function("is_hash").should == "function_is_hash"
9
+ end
10
+
11
+ it "should raise a ParseError if there is less than 1 arguments" do
12
+ lambda { scope.function_is_hash([]) }.should( raise_error(Puppet::ParseError))
13
+ end
14
+
15
+ it "should return true if passed a hash" do
16
+ result = scope.function_is_hash([{"a"=>1,"b"=>2}])
17
+ result.should(eq(true))
18
+ end
19
+
20
+ it "should return false if passed an array" do
21
+ result = scope.function_is_hash([["a","b"]])
22
+ result.should(eq(false))
23
+ end
24
+
25
+ it "should return false if passed a string" do
26
+ result = scope.function_is_hash(["asdf"])
27
+ result.should(eq(false))
28
+ end
29
+ end
@@ -0,0 +1,34 @@
1
+ #! /usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe "the is_integer function" do
5
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
6
+
7
+ it "should exist" do
8
+ Puppet::Parser::Functions.function("is_integer").should == "function_is_integer"
9
+ end
10
+
11
+ it "should raise a ParseError if there is less than 1 arguments" do
12
+ lambda { scope.function_is_integer([]) }.should( raise_error(Puppet::ParseError))
13
+ end
14
+
15
+ it "should return true if an integer" do
16
+ result = scope.function_is_integer(["3"])
17
+ result.should(eq(true))
18
+ end
19
+
20
+ it "should return false if a float" do
21
+ result = scope.function_is_integer(["3.2"])
22
+ result.should(eq(false))
23
+ end
24
+
25
+ it "should return false if a string" do
26
+ result = scope.function_is_integer(["asdf"])
27
+ result.should(eq(false))
28
+ end
29
+
30
+ it "should return true if an integer is created from an arithmetical operation" do
31
+ result = scope.function_is_integer([3*2])
32
+ result.should(eq(true))
33
+ end
34
+ end
@@ -0,0 +1,39 @@
1
+ #! /usr/bin/env ruby -S rspec
2
+ require 'spec_helper'
3
+
4
+ describe "the is_ip_address function" do
5
+ let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
6
+
7
+ it "should exist" do
8
+ Puppet::Parser::Functions.function("is_ip_address").should == "function_is_ip_address"
9
+ end
10
+
11
+ it "should raise a ParseError if there is less than 1 arguments" do
12
+ lambda { scope.function_is_ip_address([]) }.should( raise_error(Puppet::ParseError))
13
+ end
14
+
15
+ it "should return true if an IPv4 address" do
16
+ result = scope.function_is_ip_address(["1.2.3.4"])
17
+ result.should(eq(true))
18
+ end
19
+
20
+ it "should return true if a full IPv6 address" do
21
+ result = scope.function_is_ip_address(["fe80:0000:cd12:d123:e2f8:47ff:fe09:dd74"])
22
+ result.should(eq(true))
23
+ end
24
+
25
+ it "should return true if a compressed IPv6 address" do
26
+ result = scope.function_is_ip_address(["fe00::1"])
27
+ result.should(eq(true))
28
+ end
29
+
30
+ it "should return false if not valid" do
31
+ result = scope.function_is_ip_address(["asdf"])
32
+ result.should(eq(false))
33
+ end
34
+
35
+ it "should return false if IP octets out of range" do
36
+ result = scope.function_is_ip_address(["1.1.1.300"])
37
+ result.should(eq(false))
38
+ end
39
+ end