Drop roles::debian_mirror::listen_addr for mirror-accumu
[mirror/dsa-puppet.git] / 3rdparty / modules / stdlib / spec / functions / values_spec.rb
old mode 100755 (executable)
new mode 100644 (file)
index 08d21b0..850d314
@@ -1,31 +1,24 @@
-#! /usr/bin/env ruby -S rspec
 require 'spec_helper'
 
-describe "the values function" do
-  let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
-
-  it "should exist" do
-    expect(Puppet::Parser::Functions.function("values")).to eq("function_values")
-  end
-
-  it "should raise a ParseError if there is less than 1 arguments" do
-    expect { scope.function_values([]) }.to( raise_error(Puppet::ParseError))
-  end
-
-  it "should return values from a hash" do
-    result = scope.function_values([{'a'=>'1','b'=>'2','c'=>'3'}])
-    # =~ is the RSpec::Matchers::MatchArray matcher.
-    # A.K.A. "array with same elements" (multiset) matching
-    expect(result).to match_array(%w{ 1 2 3 })
-  end
-
-  it "should return a multiset" do
-    result = scope.function_values([{'a'=>'1','b'=>'3','c'=>'3'}])
-    expect(result).to     match_array(%w{ 1 3 3 })
-    expect(result).not_to match_array(%w{ 1 3 })
+describe 'values', :if => Puppet::Util::Package.versioncmp(Puppet.version, '5.5.0') < 0 do
+  it { is_expected.not_to eq(nil) }
+  it { is_expected.to run.with_params.and_raise_error(Puppet::ParseError, %r{wrong number of arguments}i) }
+  it {
+    pending('Current implementation ignores parameters after the first.')
+    is_expected.to run.with_params({}, 'extra').and_raise_error(Puppet::ParseError, %r{wrong number of arguments}i)
+  }
+  it { is_expected.to run.with_params('').and_raise_error(Puppet::ParseError, %r{Requires hash to work with}) }
+  it { is_expected.to run.with_params(1).and_raise_error(Puppet::ParseError, %r{Requires hash to work with}) }
+  it { is_expected.to run.with_params([]).and_raise_error(Puppet::ParseError, %r{Requires hash to work with}) }
+  it { is_expected.to run.with_params({}).and_return([]) }
+  it { is_expected.to run.with_params('key' => 'value').and_return(['value']) }
+  it 'returns the array of values' do
+    result = subject.call([{ 'key1' => 'value1', 'key2' => 'value2', 'duplicate_value_key' => 'value2' }])
+    expect(result).to match_array(['value1', 'value2', 'value2'])
   end
 
-  it "should raise a ParseError unless a Hash is provided" do
-    expect { scope.function_values([['a','b','c']]) }.to( raise_error(Puppet::ParseError))
+  it 'runs with UTF8 and double byte characters' do
+    result = subject.call([{ 'かぎ' => '使用', 'ҝĕұ' => '√ẩŀứệ', 'ҝĕұďŭрļǐçằťè' => '√ẩŀứệ' }])
+    expect(result).to match_array(['使用', '√ẩŀứệ', '√ẩŀứệ'])
   end
 end