diff options
| author | Paul Berry <paul@puppetlabs.com> | 2010-11-18 13:21:35 -0800 |
|---|---|---|
| committer | Paul Berry <paul@puppetlabs.com> | 2010-11-18 14:55:05 -0800 |
| commit | cf18353472ce9c4e51157d21882a7f129853fd10 (patch) | |
| tree | c31ee9be07ffa97c1ec1ada8d4a090afc51506cd | |
| parent | ee56cfd01fce154da38d5f251f66c495b2013b5d (diff) | |
| download | puppet-cf18353472ce9c4e51157d21882a7f129853fd10.tar.gz puppet-cf18353472ce9c4e51157d21882a7f129853fd10.tar.xz puppet-cf18353472ce9c4e51157d21882a7f129853fd10.zip | |
Maint: Switched spec tests to use a class rather than Array as the log destination.
Using an Array as a log destination is unreliable because Puppet's log
mechanism stores log destinations in a hash whose key is the
destination itself. Since arrays can change their hash when they are
modified, this was causing the log destination hash to become
corrupted, producing sporadic spec test failures.
| -rw-r--r-- | lib/puppet/util/log/destinations.rb | 14 | ||||
| -rw-r--r-- | spec/spec_helper.rb | 2 | ||||
| -rwxr-xr-x | spec/unit/util/log_spec.rb | 2 | ||||
| -rwxr-xr-x | test/lib/puppettest.rb | 4 |
4 files changed, 17 insertions, 5 deletions
diff --git a/lib/puppet/util/log/destinations.rb b/lib/puppet/util/log/destinations.rb index 22b3dedb2..2e2f9a5b7 100644 --- a/lib/puppet/util/log/destinations.rb +++ b/lib/puppet/util/log/destinations.rb @@ -203,8 +203,20 @@ Puppet::Util::Log.newdesttype :report do end # Log to an array, just for testing. +module Puppet::Test + class LogCollector + def initialize(logs) + @logs = logs + end + + def <<(value) + @logs << value + end + end +end + Puppet::Util::Log.newdesttype :array do - match "Array" + match "Puppet::Test::LogCollector" def initialize(messages) @messages = messages diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index ed4e2c2fb..0c4b076f4 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -72,7 +72,7 @@ Spec::Runner.configure do |config| Puppet.settings[:bindaddress] = "127.0.0.1" @logs = [] - Puppet::Util::Log.newdestination(@logs) + Puppet::Util::Log.newdestination(Puppet::Test::LogCollector.new(@logs)) end end diff --git a/spec/unit/util/log_spec.rb b/spec/unit/util/log_spec.rb index 4cec7105d..ea5d59859 100755 --- a/spec/unit/util/log_spec.rb +++ b/spec/unit/util/log_spec.rb @@ -7,7 +7,7 @@ require 'puppet/util/log' describe Puppet::Util::Log do it "should write a given message to the specified destination" do arraydest = [] - Puppet::Util::Log.newdestination(arraydest) + Puppet::Util::Log.newdestination(Puppet::Test::LogCollector.new(arraydest)) Puppet::Util::Log.new(:level => :notice, :message => "foo") message = arraydest.last.message message.should == "foo" diff --git a/test/lib/puppettest.rb b/test/lib/puppettest.rb index 0b3a89a72..a60092cf7 100755 --- a/test/lib/puppettest.rb +++ b/test/lib/puppettest.rb @@ -185,7 +185,7 @@ module PuppetTest #if rake? or ! Puppet[:debug] #if defined?($puppet_debug) or ! rake? Puppet[:color] = false if textmate? - Puppet::Util::Log.newdestination(@logs) + Puppet::Util::Log.newdestination(Puppet::Test::LogCollector.new(@logs)) if defined? $console Puppet.info @method_name Puppet::Util::Log.newdestination(:console) @@ -305,7 +305,7 @@ module PuppetTest def logstore @logs = [] - Puppet::Util::Log.newdestination(@logs) + Puppet::Util::Log.newdestination(Puppet::Test::LogCollector.new(@logs)) end end |
