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.
- data/CHANGELOG +253 -0
- data/CONTRIBUTING.md +65 -0
- data/Gemfile +33 -0
- data/LICENSE +19 -0
- data/Modulefile +11 -0
- data/README.markdown +1173 -0
- data/README_DEVELOPER.markdown +35 -0
- data/RELEASE_PROCESS.markdown +24 -0
- data/Rakefile +2 -0
- data/lib/facter/pe_version.rb +53 -0
- data/lib/facter/puppet_vardir.rb +26 -0
- data/lib/facter/root_home.rb +19 -0
- data/lib/facter/util/puppet_settings.rb +21 -0
- data/lib/puppet/parser/functions/abs.rb +36 -0
- data/lib/puppet/parser/functions/any2array.rb +33 -0
- data/lib/puppet/parser/functions/bool2num.rb +49 -0
- data/lib/puppet/parser/functions/capitalize.rb +34 -0
- data/lib/puppet/parser/functions/chomp.rb +35 -0
- data/lib/puppet/parser/functions/chop.rb +37 -0
- data/lib/puppet/parser/functions/concat.rb +37 -0
- data/lib/puppet/parser/functions/count.rb +22 -0
- data/lib/puppet/parser/functions/defined_with_params.rb +35 -0
- data/lib/puppet/parser/functions/delete.rb +46 -0
- data/lib/puppet/parser/functions/delete_at.rb +49 -0
- data/lib/puppet/parser/functions/downcase.rb +33 -0
- data/lib/puppet/parser/functions/empty.rb +28 -0
- data/lib/puppet/parser/functions/ensure_packages.rb +24 -0
- data/lib/puppet/parser/functions/ensure_resource.rb +35 -0
- data/lib/puppet/parser/functions/flatten.rb +33 -0
- data/lib/puppet/parser/functions/floor.rb +20 -0
- data/lib/puppet/parser/functions/fqdn_rotate.rb +46 -0
- data/lib/puppet/parser/functions/get_module_path.rb +17 -0
- data/lib/puppet/parser/functions/getparam.rb +35 -0
- data/lib/puppet/parser/functions/getvar.rb +26 -0
- data/lib/puppet/parser/functions/grep.rb +33 -0
- data/lib/puppet/parser/functions/has_interface_with.rb +52 -0
- data/lib/puppet/parser/functions/has_ip_address.rb +25 -0
- data/lib/puppet/parser/functions/has_ip_network.rb +25 -0
- data/lib/puppet/parser/functions/has_key.rb +28 -0
- data/lib/puppet/parser/functions/hash.rb +41 -0
- data/lib/puppet/parser/functions/is_array.rb +22 -0
- data/lib/puppet/parser/functions/is_domain_name.rb +47 -0
- data/lib/puppet/parser/functions/is_float.rb +27 -0
- data/lib/puppet/parser/functions/is_function_available.rb +23 -0
- data/lib/puppet/parser/functions/is_hash.rb +22 -0
- data/lib/puppet/parser/functions/is_integer.rb +27 -0
- data/lib/puppet/parser/functions/is_ip_address.rb +32 -0
- data/lib/puppet/parser/functions/is_mac_address.rb +27 -0
- data/lib/puppet/parser/functions/is_numeric.rb +27 -0
- data/lib/puppet/parser/functions/is_string.rb +26 -0
- data/lib/puppet/parser/functions/join.rb +41 -0
- data/lib/puppet/parser/functions/join_keys_to_values.rb +47 -0
- data/lib/puppet/parser/functions/keys.rb +26 -0
- data/lib/puppet/parser/functions/loadyaml.rb +20 -0
- data/lib/puppet/parser/functions/lstrip.rb +33 -0
- data/lib/puppet/parser/functions/max.rb +21 -0
- data/lib/puppet/parser/functions/member.rb +44 -0
- data/lib/puppet/parser/functions/merge.rb +33 -0
- data/lib/puppet/parser/functions/min.rb +21 -0
- data/lib/puppet/parser/functions/num2bool.rb +43 -0
- data/lib/puppet/parser/functions/parsejson.rb +24 -0
- data/lib/puppet/parser/functions/parseyaml.rb +24 -0
- data/lib/puppet/parser/functions/pick.rb +29 -0
- data/lib/puppet/parser/functions/prefix.rb +45 -0
- data/lib/puppet/parser/functions/range.rb +80 -0
- data/lib/puppet/parser/functions/reject.rb +31 -0
- data/lib/puppet/parser/functions/reverse.rb +28 -0
- data/lib/puppet/parser/functions/rstrip.rb +32 -0
- data/lib/puppet/parser/functions/shuffle.rb +46 -0
- data/lib/puppet/parser/functions/size.rb +48 -0
- data/lib/puppet/parser/functions/sort.rb +27 -0
- data/lib/puppet/parser/functions/squeeze.rb +36 -0
- data/lib/puppet/parser/functions/str2bool.rb +46 -0
- data/lib/puppet/parser/functions/str2saltedsha512.rb +32 -0
- data/lib/puppet/parser/functions/strftime.rb +107 -0
- data/lib/puppet/parser/functions/strip.rb +39 -0
- data/lib/puppet/parser/functions/suffix.rb +45 -0
- data/lib/puppet/parser/functions/swapcase.rb +39 -0
- data/lib/puppet/parser/functions/time.rb +49 -0
- data/lib/puppet/parser/functions/to_bytes.rb +28 -0
- data/lib/puppet/parser/functions/type.rb +50 -0
- data/lib/puppet/parser/functions/unique.rb +51 -0
- data/lib/puppet/parser/functions/upcase.rb +41 -0
- data/lib/puppet/parser/functions/uriescape.rb +36 -0
- data/lib/puppet/parser/functions/validate_absolute_path.rb +56 -0
- data/lib/puppet/parser/functions/validate_array.rb +33 -0
- data/lib/puppet/parser/functions/validate_augeas.rb +81 -0
- data/lib/puppet/parser/functions/validate_bool.rb +34 -0
- data/lib/puppet/parser/functions/validate_cmd.rb +47 -0
- data/lib/puppet/parser/functions/validate_hash.rb +33 -0
- data/lib/puppet/parser/functions/validate_re.rb +40 -0
- data/lib/puppet/parser/functions/validate_slength.rb +52 -0
- data/lib/puppet/parser/functions/validate_string.rb +33 -0
- data/lib/puppet/parser/functions/values.rb +39 -0
- data/lib/puppet/parser/functions/values_at.rb +98 -0
- data/lib/puppet/parser/functions/zip.rb +65 -0
- data/lib/puppet/provider/file_line/ruby.rb +59 -0
- data/lib/puppet/type/anchor.rb +41 -0
- data/lib/puppet/type/file_line.rb +70 -0
- data/manifests/init.pp +20 -0
- data/manifests/stages.pp +43 -0
- data/spec/functions/defined_with_params_spec.rb +37 -0
- data/spec/functions/ensure_packages_spec.rb +42 -0
- data/spec/functions/ensure_resource_spec.rb +40 -0
- data/spec/functions/getparam_spec.rb +34 -0
- data/spec/monkey_patches/alias_should_to_must.rb +8 -0
- data/spec/monkey_patches/publicize_methods.rb +10 -0
- data/spec/spec.opts +6 -0
- data/spec/spec_helper.rb +28 -0
- data/spec/unit/facter/pe_version_spec.rb +76 -0
- data/spec/unit/facter/root_home_spec.rb +40 -0
- data/spec/unit/facter/util/puppet_settings_spec.rb +35 -0
- data/spec/unit/puppet/parser/functions/abs_spec.rb +25 -0
- data/spec/unit/puppet/parser/functions/any2array_spec.rb +55 -0
- data/spec/unit/puppet/parser/functions/bool2num_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/capitalize_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/chomp_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/chop_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/concat_spec.rb +15 -0
- data/spec/unit/puppet/parser/functions/count_spec.rb +31 -0
- data/spec/unit/puppet/parser/functions/delete_at_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/delete_spec.rb +38 -0
- data/spec/unit/puppet/parser/functions/downcase_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/empty_spec.rb +23 -0
- data/spec/unit/puppet/parser/functions/flatten_spec.rb +27 -0
- data/spec/unit/puppet/parser/functions/floor_spec.rb +39 -0
- data/spec/unit/puppet/parser/functions/fqdn_rotate_spec.rb +33 -0
- data/spec/unit/puppet/parser/functions/get_module_path_spec.rb +46 -0
- data/spec/unit/puppet/parser/functions/getvar_spec.rb +37 -0
- data/spec/unit/puppet/parser/functions/grep_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/has_interface_with_spec.rb +64 -0
- data/spec/unit/puppet/parser/functions/has_ip_address_spec.rb +39 -0
- data/spec/unit/puppet/parser/functions/has_ip_network_spec.rb +36 -0
- data/spec/unit/puppet/parser/functions/has_key_spec.rb +42 -0
- data/spec/unit/puppet/parser/functions/hash_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/is_array_spec.rb +29 -0
- data/spec/unit/puppet/parser/functions/is_domain_name_spec.rb +64 -0
- data/spec/unit/puppet/parser/functions/is_float_spec.rb +33 -0
- data/spec/unit/puppet/parser/functions/is_function_available.rb +31 -0
- data/spec/unit/puppet/parser/functions/is_hash_spec.rb +29 -0
- data/spec/unit/puppet/parser/functions/is_integer_spec.rb +34 -0
- data/spec/unit/puppet/parser/functions/is_ip_address_spec.rb +39 -0
- data/spec/unit/puppet/parser/functions/is_mac_address_spec.rb +29 -0
- data/spec/unit/puppet/parser/functions/is_numeric_spec.rb +39 -0
- data/spec/unit/puppet/parser/functions/is_string_spec.rb +34 -0
- data/spec/unit/puppet/parser/functions/join_keys_to_values_spec.rb +40 -0
- data/spec/unit/puppet/parser/functions/join_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/keys_spec.rb +21 -0
- data/spec/unit/puppet/parser/functions/lstrip_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/max_spec.rb +27 -0
- data/spec/unit/puppet/parser/functions/member_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/merge_spec.rb +47 -0
- data/spec/unit/puppet/parser/functions/min_spec.rb +27 -0
- data/spec/unit/puppet/parser/functions/num2bool_spec.rb +67 -0
- data/spec/unit/puppet/parser/functions/parsejson_spec.rb +22 -0
- data/spec/unit/puppet/parser/functions/parseyaml_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/pick_spec.rb +34 -0
- data/spec/unit/puppet/parser/functions/prefix_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/range_spec.rb +34 -0
- data/spec/unit/puppet/parser/functions/reject_spec.rb +20 -0
- data/spec/unit/puppet/parser/functions/reverse_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/rstrip_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/shuffle_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/size_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/sort_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/squeeze_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/str2bool_spec.rb +31 -0
- data/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb +45 -0
- data/spec/unit/puppet/parser/functions/strftime_spec.rb +29 -0
- data/spec/unit/puppet/parser/functions/strip_spec.rb +18 -0
- data/spec/unit/puppet/parser/functions/suffix_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/swapcase_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/time_spec.rb +29 -0
- data/spec/unit/puppet/parser/functions/to_bytes_spec.rb +58 -0
- data/spec/unit/puppet/parser/functions/type_spec.rb +43 -0
- data/spec/unit/puppet/parser/functions/unique_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/upcase_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/uriescape_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/validate_absolute_path_spec.rb +83 -0
- data/spec/unit/puppet/parser/functions/validate_array_spec.rb +38 -0
- data/spec/unit/puppet/parser/functions/validate_augeas_spec.rb +102 -0
- data/spec/unit/puppet/parser/functions/validate_bool_spec.rb +51 -0
- data/spec/unit/puppet/parser/functions/validate_cmd_spec.rb +81 -0
- data/spec/unit/puppet/parser/functions/validate_hash_spec.rb +43 -0
- data/spec/unit/puppet/parser/functions/validate_re_spec.rb +76 -0
- data/spec/unit/puppet/parser/functions/validate_slength_spec.rb +48 -0
- data/spec/unit/puppet/parser/functions/validate_string_spec.rb +60 -0
- data/spec/unit/puppet/parser/functions/values_at_spec.rb +38 -0
- data/spec/unit/puppet/parser/functions/values_spec.rb +31 -0
- data/spec/unit/puppet/parser/functions/zip_spec.rb +15 -0
- data/spec/unit/puppet/provider/file_line/ruby_spec.rb +127 -0
- data/spec/unit/puppet/type/anchor_spec.rb +11 -0
- data/spec/unit/puppet/type/file_line_spec.rb +69 -0
- data/spec/watchr.rb +86 -0
- data/tests/file_line.pp +9 -0
- data/tests/has_interface_with.pp +10 -0
- data/tests/has_ip_address.pp +3 -0
- data/tests/has_ip_network.pp +4 -0
- data/tests/init.pp +1 -0
- metadata +252 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#! /usr/bin/env ruby -S rspec
|
|
2
|
+
require 'spec_helper'
|
|
3
|
+
|
|
4
|
+
describe "the bool2num function" do
|
|
5
|
+
let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
|
|
6
|
+
|
|
7
|
+
it "should exist" do
|
|
8
|
+
Puppet::Parser::Functions.function("bool2num").should == "function_bool2num"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should raise a ParseError if there is less than 1 arguments" do
|
|
12
|
+
lambda { scope.function_bool2num([]) }.should( raise_error(Puppet::ParseError))
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should convert true to 1" do
|
|
16
|
+
result = scope.function_bool2num([true])
|
|
17
|
+
result.should(eq(1))
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should convert false to 0" do
|
|
21
|
+
result = scope.function_bool2num([false])
|
|
22
|
+
result.should(eq(0))
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#! /usr/bin/env ruby -S rspec
|
|
2
|
+
require 'spec_helper'
|
|
3
|
+
|
|
4
|
+
describe "the capitalize function" do
|
|
5
|
+
let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
|
|
6
|
+
|
|
7
|
+
it "should exist" do
|
|
8
|
+
Puppet::Parser::Functions.function("capitalize").should == "function_capitalize"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should raise a ParseError if there is less than 1 arguments" do
|
|
12
|
+
lambda { scope.function_capitalize([]) }.should( raise_error(Puppet::ParseError))
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should capitalize the beginning of a string" do
|
|
16
|
+
result = scope.function_capitalize(["abc"])
|
|
17
|
+
result.should(eq("Abc"))
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#! /usr/bin/env ruby -S rspec
|
|
2
|
+
require 'spec_helper'
|
|
3
|
+
|
|
4
|
+
describe "the chomp function" do
|
|
5
|
+
let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
|
|
6
|
+
|
|
7
|
+
it "should exist" do
|
|
8
|
+
Puppet::Parser::Functions.function("chomp").should == "function_chomp"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should raise a ParseError if there is less than 1 arguments" do
|
|
12
|
+
lambda { scope.function_chomp([]) }.should( raise_error(Puppet::ParseError))
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should chomp the end of a string" do
|
|
16
|
+
result = scope.function_chomp(["abc\n"])
|
|
17
|
+
result.should(eq("abc"))
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#! /usr/bin/env ruby -S rspec
|
|
2
|
+
require 'spec_helper'
|
|
3
|
+
|
|
4
|
+
describe "the chop function" do
|
|
5
|
+
let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
|
|
6
|
+
|
|
7
|
+
it "should exist" do
|
|
8
|
+
Puppet::Parser::Functions.function("chop").should == "function_chop"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should raise a ParseError if there is less than 1 arguments" do
|
|
12
|
+
lambda { scope.function_chop([]) }.should( raise_error(Puppet::ParseError))
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should chop the end of a string" do
|
|
16
|
+
result = scope.function_chop(["asdf\n"])
|
|
17
|
+
result.should(eq("asdf"))
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#! /usr/bin/env ruby -S rspec
|
|
2
|
+
require 'spec_helper'
|
|
3
|
+
|
|
4
|
+
describe "the concat function" do
|
|
5
|
+
let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
|
|
6
|
+
|
|
7
|
+
it "should raise a ParseError if there is less than 1 arguments" do
|
|
8
|
+
lambda { scope.function_concat([]) }.should( raise_error(Puppet::ParseError))
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should be able to concat an array" do
|
|
12
|
+
result = scope.function_concat([['1','2','3'],['4','5','6']])
|
|
13
|
+
result.should(eq(['1','2','3','4','5','6']))
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
#! /usr/bin/env ruby -S rspec
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe "the count function" do
|
|
6
|
+
let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
|
|
7
|
+
|
|
8
|
+
it "should exist" do
|
|
9
|
+
Puppet::Parser::Functions.function("count").should == "function_count"
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should raise a ArgumentError if there is more than 2 arguments" do
|
|
13
|
+
lambda { scope.function_count(['foo', 'bar', 'baz']) }.should( raise_error(ArgumentError))
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should be able to count arrays" do
|
|
17
|
+
scope.function_count([["1","2","3"]]).should(eq(3))
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should be able to count matching elements in arrays" do
|
|
21
|
+
scope.function_count([["1", "2", "2"], "2"]).should(eq(2))
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "should not count nil or empty strings" do
|
|
25
|
+
scope.function_count([["foo","bar",nil,""]]).should(eq(2))
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it 'does not count an undefined hash key or an out of bound array index (which are both :undef)' do
|
|
29
|
+
expect(scope.function_count([["foo",:undef,:undef]])).to eq(1)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#! /usr/bin/env ruby -S rspec
|
|
2
|
+
require 'spec_helper'
|
|
3
|
+
|
|
4
|
+
describe "the delete_at function" do
|
|
5
|
+
let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
|
|
6
|
+
|
|
7
|
+
it "should exist" do
|
|
8
|
+
Puppet::Parser::Functions.function("delete_at").should == "function_delete_at"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should raise a ParseError if there is less than 1 arguments" do
|
|
12
|
+
lambda { scope.function_delete_at([]) }.should( raise_error(Puppet::ParseError))
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should delete an item at specified location from an array" do
|
|
16
|
+
result = scope.function_delete_at([['a','b','c'],1])
|
|
17
|
+
result.should(eq(['a','c']))
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#! /usr/bin/env ruby -S rspec
|
|
2
|
+
require 'spec_helper'
|
|
3
|
+
|
|
4
|
+
describe "the delete function" do
|
|
5
|
+
let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
|
|
6
|
+
|
|
7
|
+
it "should exist" do
|
|
8
|
+
Puppet::Parser::Functions.function("delete").should == "function_delete"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should raise a ParseError if there are fewer than 2 arguments" do
|
|
12
|
+
lambda { scope.function_delete([]) }.should( raise_error(Puppet::ParseError))
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should raise a ParseError if there are greater than 2 arguments" do
|
|
16
|
+
lambda { scope.function_delete([[], 'foo', 'bar']) }.should( raise_error(Puppet::ParseError))
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "should raise a TypeError if a number is passed as the first argument" do
|
|
20
|
+
lambda { scope.function_delete([1, 'bar']) }.should( raise_error(TypeError))
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "should delete all instances of an element from an array" do
|
|
24
|
+
result = scope.function_delete([['a','b','c','b'],'b'])
|
|
25
|
+
result.should(eq(['a','c']))
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "should delete all instances of a substring from a string" do
|
|
29
|
+
result = scope.function_delete(['foobarbabarz','bar'])
|
|
30
|
+
result.should(eq('foobaz'))
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "should delete a key from a hash" do
|
|
34
|
+
result = scope.function_delete([{ 'a' => 1, 'b' => 2, 'c' => 3 },'b'])
|
|
35
|
+
result.should(eq({ 'a' => 1, 'c' => 3 }))
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#! /usr/bin/env ruby -S rspec
|
|
2
|
+
require 'spec_helper'
|
|
3
|
+
|
|
4
|
+
describe "the downcase function" do
|
|
5
|
+
let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
|
|
6
|
+
|
|
7
|
+
it "should exist" do
|
|
8
|
+
Puppet::Parser::Functions.function("downcase").should == "function_downcase"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should raise a ParseError if there is less than 1 arguments" do
|
|
12
|
+
lambda { scope.function_downcase([]) }.should( raise_error(Puppet::ParseError))
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should downcase a string" do
|
|
16
|
+
result = scope.function_downcase(["ASFD"])
|
|
17
|
+
result.should(eq("asfd"))
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should do nothing to a string that is already downcase" do
|
|
21
|
+
result = scope.function_downcase(["asdf asdf"])
|
|
22
|
+
result.should(eq("asdf asdf"))
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#! /usr/bin/env ruby -S rspec
|
|
2
|
+
require 'spec_helper'
|
|
3
|
+
|
|
4
|
+
describe "the empty function" do
|
|
5
|
+
let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
|
|
6
|
+
it "should exist" do
|
|
7
|
+
Puppet::Parser::Functions.function("empty").should == "function_empty"
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should raise a ParseError if there is less than 1 arguments" do
|
|
11
|
+
lambda { scope.function_empty([]) }.should( raise_error(Puppet::ParseError))
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should return a true for an empty string" do
|
|
15
|
+
result = scope.function_empty([''])
|
|
16
|
+
result.should(eq(true))
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "should return a false for a non-empty string" do
|
|
20
|
+
result = scope.function_empty(['asdf'])
|
|
21
|
+
result.should(eq(false))
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#! /usr/bin/env ruby -S rspec
|
|
2
|
+
require 'spec_helper'
|
|
3
|
+
|
|
4
|
+
describe "the flatten function" do
|
|
5
|
+
let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
|
|
6
|
+
it "should exist" do
|
|
7
|
+
Puppet::Parser::Functions.function("flatten").should == "function_flatten"
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
it "should raise a ParseError if there is less than 1 arguments" do
|
|
11
|
+
lambda { scope.function_flatten([]) }.should( raise_error(Puppet::ParseError))
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "should raise a ParseError if there is more than 1 argument" do
|
|
15
|
+
lambda { scope.function_flatten([[], []]) }.should( raise_error(Puppet::ParseError))
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "should flatten a complex data structure" do
|
|
19
|
+
result = scope.function_flatten([["a","b",["c",["d","e"],"f","g"]]])
|
|
20
|
+
result.should(eq(["a","b","c","d","e","f","g"]))
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "should do nothing to a structure that is already flat" do
|
|
24
|
+
result = scope.function_flatten([["a","b","c","d"]])
|
|
25
|
+
result.should(eq(["a","b","c","d"]))
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
#! /usr/bin/env ruby -S rspec
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe "the floor function" do
|
|
6
|
+
let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
|
|
7
|
+
|
|
8
|
+
it "should exist" do
|
|
9
|
+
Puppet::Parser::Functions.function("floor").should == "function_floor"
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "should raise a ParseError if there is less than 1 argument" do
|
|
13
|
+
lambda { scope.function_floor([]) }.should( raise_error(Puppet::ParseError, /Wrong number of arguments/))
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "should should raise a ParseError if input isn't numeric (eg. String)" do
|
|
17
|
+
lambda { scope.function_floor(["foo"]) }.should( raise_error(Puppet::ParseError, /Wrong argument type/))
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "should should raise a ParseError if input isn't numeric (eg. Boolean)" do
|
|
21
|
+
lambda { scope.function_floor([true]) }.should( raise_error(Puppet::ParseError, /Wrong argument type/))
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "should return an integer when a numeric type is passed" do
|
|
25
|
+
result = scope.function_floor([12.4])
|
|
26
|
+
result.is_a?(Integer).should(eq(true))
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "should return the input when an integer is passed" do
|
|
30
|
+
result = scope.function_floor([7])
|
|
31
|
+
result.should(eq(7))
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "should return the largest integer less than or equal to the input" do
|
|
35
|
+
result = scope.function_floor([3.8])
|
|
36
|
+
result.should(eq(3))
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#! /usr/bin/env ruby -S rspec
|
|
2
|
+
require 'spec_helper'
|
|
3
|
+
|
|
4
|
+
describe "the fqdn_rotate function" do
|
|
5
|
+
let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
|
|
6
|
+
|
|
7
|
+
it "should exist" do
|
|
8
|
+
Puppet::Parser::Functions.function("fqdn_rotate").should == "function_fqdn_rotate"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should raise a ParseError if there is less than 1 arguments" do
|
|
12
|
+
lambda { scope.function_fqdn_rotate([]) }.should( raise_error(Puppet::ParseError))
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should rotate a string and the result should be the same size" do
|
|
16
|
+
scope.expects(:lookupvar).with("::fqdn").returns("127.0.0.1")
|
|
17
|
+
result = scope.function_fqdn_rotate(["asdf"])
|
|
18
|
+
result.size.should(eq(4))
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should rotate a string to give the same results for one host" do
|
|
22
|
+
scope.expects(:lookupvar).with("::fqdn").returns("127.0.0.1").twice
|
|
23
|
+
scope.function_fqdn_rotate(["abcdefg"]).should eql(scope.function_fqdn_rotate(["abcdefg"]))
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
it "should rotate a string to give different values on different hosts" do
|
|
27
|
+
scope.expects(:lookupvar).with("::fqdn").returns("127.0.0.1")
|
|
28
|
+
val1 = scope.function_fqdn_rotate(["abcdefghijklmnopqrstuvwxyz01234567890987654321"])
|
|
29
|
+
scope.expects(:lookupvar).with("::fqdn").returns("127.0.0.2")
|
|
30
|
+
val2 = scope.function_fqdn_rotate(["abcdefghijklmnopqrstuvwxyz01234567890987654321"])
|
|
31
|
+
val1.should_not eql(val2)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
#! /usr/bin/env ruby -S rspec
|
|
2
|
+
require 'spec_helper'
|
|
3
|
+
|
|
4
|
+
describe Puppet::Parser::Functions.function(:get_module_path) do
|
|
5
|
+
Internals = PuppetlabsSpec::PuppetInternals
|
|
6
|
+
class StubModule
|
|
7
|
+
attr_reader :path
|
|
8
|
+
def initialize(path)
|
|
9
|
+
@path = path
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def scope(environment = "production")
|
|
14
|
+
Internals.scope(:compiler => Internals.compiler(:node => Internals.node(:environment => environment)))
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it 'should only allow one argument' do
|
|
18
|
+
expect { scope.function_get_module_path([]) }.to raise_error(Puppet::ParseError, /Wrong number of arguments, expects one/)
|
|
19
|
+
expect { scope.function_get_module_path(['1','2','3']) }.to raise_error(Puppet::ParseError, /Wrong number of arguments, expects one/)
|
|
20
|
+
end
|
|
21
|
+
it 'should raise an exception when the module cannot be found' do
|
|
22
|
+
expect { scope.function_get_module_path(['foo']) }.to raise_error(Puppet::ParseError, /Could not find module/)
|
|
23
|
+
end
|
|
24
|
+
describe 'when locating a module' do
|
|
25
|
+
let(:modulepath) { "/tmp/does_not_exist" }
|
|
26
|
+
let(:path_of_module_foo) { StubModule.new("/tmp/does_not_exist/foo") }
|
|
27
|
+
|
|
28
|
+
before(:each) { Puppet[:modulepath] = modulepath }
|
|
29
|
+
|
|
30
|
+
it 'should be able to find module paths from the modulepath setting' do
|
|
31
|
+
Puppet::Module.expects(:find).with('foo', 'production').returns(path_of_module_foo)
|
|
32
|
+
scope.function_get_module_path(['foo']).should == path_of_module_foo.path
|
|
33
|
+
end
|
|
34
|
+
it 'should be able to find module paths when the modulepath is a list' do
|
|
35
|
+
Puppet[:modulepath] = modulepath + ":/tmp"
|
|
36
|
+
Puppet::Module.expects(:find).with('foo', 'production').returns(path_of_module_foo)
|
|
37
|
+
scope.function_get_module_path(['foo']).should == path_of_module_foo.path
|
|
38
|
+
end
|
|
39
|
+
it 'should respect the environment' do
|
|
40
|
+
pending("Disabled on Puppet 2.6.x") if Puppet.version =~ /^2\.6\b/
|
|
41
|
+
Puppet.settings[:environment] = 'danstestenv'
|
|
42
|
+
Puppet::Module.expects(:find).with('foo', 'danstestenv').returns(path_of_module_foo)
|
|
43
|
+
scope('danstestenv').function_get_module_path(['foo']).should == path_of_module_foo.path
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
#! /usr/bin/env ruby -S rspec
|
|
2
|
+
require 'spec_helper'
|
|
3
|
+
|
|
4
|
+
describe Puppet::Parser::Functions.function(:getvar) do
|
|
5
|
+
let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
|
|
6
|
+
describe 'when calling getvar from puppet' do
|
|
7
|
+
|
|
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] = '$foo = getvar()'
|
|
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 too many arguments are passed" do
|
|
17
|
+
pending("Fails on 2.6.x, see bug #15912") if Puppet.version =~ /^2\.6\./
|
|
18
|
+
Puppet[:code] = '$foo = getvar("foo::bar", "baz")'
|
|
19
|
+
expect {
|
|
20
|
+
scope.compiler.compile
|
|
21
|
+
}.to raise_error(Puppet::ParseError, /wrong number of arguments/)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "should lookup variables in other namespaces" do
|
|
25
|
+
pending("Fails on 2.6.x, see bug #15912") if Puppet.version =~ /^2\.6\./
|
|
26
|
+
Puppet[:code] = <<-'ENDofPUPPETcode'
|
|
27
|
+
class site::data { $foo = 'baz' }
|
|
28
|
+
include site::data
|
|
29
|
+
$foo = getvar("site::data::foo")
|
|
30
|
+
if $foo != 'baz' {
|
|
31
|
+
fail('getvar did not return what we expect')
|
|
32
|
+
}
|
|
33
|
+
ENDofPUPPETcode
|
|
34
|
+
scope.compiler.compile
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#! /usr/bin/env ruby -S rspec
|
|
2
|
+
require 'spec_helper'
|
|
3
|
+
|
|
4
|
+
describe "the grep function" do
|
|
5
|
+
let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
|
|
6
|
+
|
|
7
|
+
it "should exist" do
|
|
8
|
+
Puppet::Parser::Functions.function("grep").should == "function_grep"
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it "should raise a ParseError if there is less than 1 arguments" do
|
|
12
|
+
lambda { scope.function_grep([]) }.should( raise_error(Puppet::ParseError))
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
it "should grep contents from an array" do
|
|
16
|
+
result = scope.function_grep([["aaabbb","bbbccc","dddeee"], "bbb"])
|
|
17
|
+
result.should(eq(["aaabbb","bbbccc"]))
|
|
18
|
+
end
|
|
19
|
+
end
|