From a2f980d44d6703561769c5e0ef25a7f531417643 Mon Sep 17 00:00:00 2001 From: Nate Potter Date: Thu, 7 Jul 2016 21:10:22 -0700 Subject: (MODULES-3568) Move dig to dig44 and deprecate dig A new version of dig was introduced in Puppet 4.5.0 that isn't compatible with the stdlib version of dig. To maintain backwards compatibility and ensure that tests for stdlib aren't broken, this patch renames dig to dig44 and adds a deprecation warning to the stdlib dig function. --- spec/functions/dig44_spec.rb | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 spec/functions/dig44_spec.rb (limited to 'spec/functions/dig44_spec.rb') diff --git a/spec/functions/dig44_spec.rb b/spec/functions/dig44_spec.rb new file mode 100644 index 0000000..fd451ff --- /dev/null +++ b/spec/functions/dig44_spec.rb @@ -0,0 +1,44 @@ +require 'spec_helper' + +describe 'dig44' do + it "should exist" do + expect(Puppet::Parser::Functions.function("dig44")).to eq("function_dig44") + end + + it "should raise a ParseError if there are less than 2 arguments" do + expect { scope.function_dig44([]) }.to raise_error(Puppet::ParseError) + end + + it "should raise a ParseError if the first argument isn't a hash or array" do + expect { scope.function_dig44(['bad', []]) }.to raise_error(Puppet::ParseError) + end + + it "should raise a ParseError if the second argument isn't an array" do + expect { scope.function_dig44([{}, 'bad']) }.to raise_error(Puppet::ParseError) + end + + it "should return an empty hash when given empty parameters" do + result = scope.function_dig44([{}, []]) + expect(result).to(eq({})) + end + + it "should return value when given simple hash" do + result = scope.function_dig44([{"a" => "b"}, ["a"]]) + expect(result).to(eq("b")) + end + + it "should find hash values two levels deep" do + result = scope.function_dig44([{"a" => {"b" => "c"}}, ["a", "b"]]) + expect(result).to(eq("c")) + end + + it "should return default value if nothing was found" do + result = scope.function_dig44([{}, ["a", "b"], "d"]) + expect(result).to(eq("d")) + end + + it "should work on booleans as well as strings" do + result = scope.function_dig44([{"a" => false}, ["a"]]) + expect(result).to(eq(false)) + end +end -- cgit v1.2.3