puppetlabs-stdlib/spec/functions/concat_spec.rb
Alex Tomlins 44596e73da (MODULES-3246) Fix concat with Hash arguments.
85d5ead Updated the concat function so that it wouldn't modify the
original array. A side-effect of this change is that it now always calls
`Array()` on the second argument. If thit is a Hash, this results in
`to_a` being called on the hash, which converts it to an array or
tuples. This is undesired.

Update the behaviour so that it doesn't (indirectly) call `to_a` on
anything, instead test for the type of the argument, wrapping it in an
array if it's not already an array.
2016-04-08 13:42:13 +01:00

25 lines
1.3 KiB
Ruby
Executable file

require 'spec_helper'
describe 'concat' do
it { is_expected.not_to eq(nil) }
it { is_expected.to run.with_params().and_raise_error(Puppet::ParseError) }
it { is_expected.to run.with_params([1]).and_raise_error(Puppet::ParseError) }
it { is_expected.to run.with_params(1, [2]).and_raise_error(Puppet::ParseError) }
it { is_expected.to run.with_params([1], [2], [3]).and_return([1, 2, 3]) }
it { is_expected.to run.with_params(['1','2','3'],['4','5','6']).and_return(['1','2','3','4','5','6']) }
it { is_expected.to run.with_params(['1','2','3'],'4').and_return(['1','2','3','4']) }
it { is_expected.to run.with_params(['1','2','3'],[['4','5'],'6']).and_return(['1','2','3',['4','5'],'6']) }
it { is_expected.to run.with_params(['1','2'],['3','4'],['5','6']).and_return(['1','2','3','4','5','6']) }
it { is_expected.to run.with_params(['1','2'],'3','4',['5','6']).and_return(['1','2','3','4','5','6']) }
it { is_expected.to run.with_params([{"a" => "b"}], {"c" => "d", "e" => "f"}).and_return([{"a" => "b"}, {"c" => "d", "e" => "f"}]) }
it "should leave the original array intact" do
argument1 = ['1','2','3']
original1 = argument1.dup
argument2 = ['4','5','6']
original2 = argument2.dup
result = subject.call([argument1,argument2])
expect(argument1).to eq(original1)
expect(argument2).to eq(original2)
end
end