summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Gemfile2
-rw-r--r--lib/puppet/functions.rb6
-rw-r--r--spec/unit/pops/binder/injector_spec.rb11
3 files changed, 12 insertions, 7 deletions
diff --git a/Gemfile b/Gemfile
index ece3ab193..4b85d0efd 100644
--- a/Gemfile
+++ b/Gemfile
@@ -27,7 +27,7 @@ gem "puppet", :path => File.dirname(__FILE__), :require => false
gem "facter", *location_for(ENV['FACTER_LOCATION'] || ['> 1.6', '< 3'])
gem "hiera", *location_for(ENV['HIERA_LOCATION'] || '~> 1.0')
gem "rake", "10.1.1", :require => false
-gem "rgen", "0.6.5", :require => false
+gem "rgen", "0.7.0", :require => false
group(:development, :test) do
gem "rspec", "~> 2.11.0", :require => false
diff --git a/lib/puppet/functions.rb b/lib/puppet/functions.rb
index de136e7e6..1996d91ff 100644
--- a/lib/puppet/functions.rb
+++ b/lib/puppet/functions.rb
@@ -288,10 +288,12 @@ module Puppet::Functions
def required_block_param(*type_and_name)
case type_and_name.size
when 0
- type = @all_callables
+ # the type must be an independent instance since it will be contained in another type
+ type = @all_callables.copy
name = 'block'
when 1
- type = @all_callables
+ # the type must be an independent instance since it will be contained in another type
+ type = @all_callables.copy
name = type_and_name[0]
when 2
type_string, name = type_and_name
diff --git a/spec/unit/pops/binder/injector_spec.rb b/spec/unit/pops/binder/injector_spec.rb
index 32eba3260..3905f92d3 100644
--- a/spec/unit/pops/binder/injector_spec.rb
+++ b/spec/unit/pops/binder/injector_spec.rb
@@ -101,7 +101,7 @@ describe 'Injector' do
let(:bindings) { factory.named_bindings('test') }
let(:scope) { null_scope()}
- let(:duck_type) { type_factory.ruby(InjectorSpecModule::TestDuck) }
+# let(:duck_type) { type_factory.ruby(InjectorSpecModule::TestDuck) }
let(:binder) { Puppet::Pops::Binder::Binder }
@@ -109,6 +109,9 @@ describe 'Injector' do
binder.new(layered_bindings)
end
+ def duck_type
+ type_factory.ruby(InjectorSpecModule::TestDuck)
+ end
let(:layered_bindings) { factory.layered_bindings(test_layer_with_bindings(bindings.model)) }
@@ -592,11 +595,11 @@ describe 'Injector' do
it "should fail attempts to append, perform uniq or flatten on type incompatible multibind hash" do
hash_of_integer = type_factory.hash_of(type_factory.integer())
ids = ["ducks1", "ducks2", "ducks3"]
- mb = bindings.multibind(ids[0]).type(hash_of_integer).name('broken_family0')
+ mb = bindings.multibind(ids[0]).type(hash_of_integer.copy).name('broken_family0')
mb.producer_options(:conflict_resolution => :append)
- mb = bindings.multibind(ids[1]).type(hash_of_integer).name('broken_family1')
+ mb = bindings.multibind(ids[1]).type(hash_of_integer.copy).name('broken_family1')
mb.producer_options(:flatten => :true)
- mb = bindings.multibind(ids[2]).type(hash_of_integer).name('broken_family2')
+ mb = bindings.multibind(ids[2]).type(hash_of_integer.copy).name('broken_family2')
mb.producer_options(:uniq => :true)
injector = injector(binder.new(factory.layered_bindings(test_layer_with_bindings(bindings.model))))