puppetlabs-stdlib/spec/unit/puppet/parser/functions/keys_spec.rb
Jeff McCune b7a59a8095 (#11901) Fix sort order error in tests for 'keys' and 'values'
Between Ruby 1.8.7 p352 and p357 the way arrays were returned when using
keys and values in Ruby changed, and due to assumption about the
ordering our tests are now failing.

This patch fixes the issue by using the =~ operator matcher in rspec.
This matcher is implemented as RSpec::Matchers::MatchArray and performs
multiset equality matching of arrays.  Order doesn't matter, but
duplicate values do.

This patch also switches @scope instance variables to memoized let
methods for clarity in the code.

Original Author: Ken Barber
Reviewed-by: Nick Lewis

This commit closes GH-29
2012-01-11 17:39:15 -08:00

25 lines
719 B
Ruby

#!/usr/bin/env rspec
require 'spec_helper'
describe "the keys function" do
before :all do
Puppet::Parser::Functions.autoloader.loadall
end
let(:scope) { Puppet::Parser::Scope.new }
it "should exist" do
Puppet::Parser::Functions.function("keys").should == "function_keys"
end
it "should raise a ParseError if there is less than 1 arguments" do
lambda { scope.function_keys([]) }.should( raise_error(Puppet::ParseError))
end
it "should return an array of keys when given a hash" do
result = scope.function_keys([{'a'=>1, 'b'=>2}])
# =~ performs 'array with same elements' (set) matching
# For more info see RSpec::Matchers::MatchArray
result.should =~ ['a','b']
end
end