summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Meier <peter.meier@immerda.ch>2009-11-07 12:10:29 +0100
committerJames Turnbull <james@lovedthanlost.net>2009-11-07 22:16:14 +1100
commit810980659d86a30cc9dde6018a4749f659fe2d00 (patch)
tree5acfd02792ec3822a5b7ca3c51194f8cbce9787a
parentb2c1ca56ebc7ec78c71a1fbf6026411494214e67 (diff)
downloadfacter-810980659d86a30cc9dde6018a4749f659fe2d00.tar.gz
facter-810980659d86a30cc9dde6018a4749f659fe2d00.tar.xz
facter-810980659d86a30cc9dde6018a4749f659fe2d00.zip
introduce a warn mechanism for debugging
We can now warn messages that will be passed to Kernel.warn if debugging is enabled.
-rw-r--r--lib/facter.rb13
-rwxr-xr-xspec/unit/facter.rb73
2 files changed, 85 insertions, 1 deletions
diff --git a/lib/facter.rb b/lib/facter.rb
index 3c69a94..ac06f68 100644
--- a/lib/facter.rb
+++ b/lib/facter.rb
@@ -68,11 +68,15 @@ module Facter
if string.nil?
return
end
- if @@debug != 0
+ if self.debugging?
puts GREEN + string + RESET
end
end
+ def self.debugging?
+ @@debug != 0
+ end
+
# Return a fact object by name. If you use this, you still have to call
# 'value' on it to retrieve the actual value.
def self.[](name)
@@ -173,6 +177,13 @@ module Facter
end
end
+
+ def self.warn(msg)
+ if Facter.debugging? and msg and not msg.empty?
+ msg.each { |line| Kernel.warn line }
+ end
+ end
+
# Remove them all.
def self.reset
@collection = nil
diff --git a/spec/unit/facter.rb b/spec/unit/facter.rb
index f248aa7..9f7b4cf 100755
--- a/spec/unit/facter.rb
+++ b/spec/unit/facter.rb
@@ -131,6 +131,79 @@ describe Facter do
Facter.should respond_to(:search_path)
end
+ it "should have a method to query debugging mode" do
+ Facter.should respond_to(:debugging?)
+ end
+
+ it "should have a method to warn" do
+ Facter.should respond_to(:warn)
+ end
+
+ describe "when warning" do
+ it "should warn if debugging is enabled" do
+ Facter.debugging(true)
+ Kernel.stubs(:warn)
+ Kernel.expects(:warn).with('foo')
+ Facter.warn('foo')
+ end
+
+ it "should not warn if debugging is enabled but nil is passed" do
+ Facter.debugging(true)
+ Kernel.stubs(:warn)
+ Kernel.expects(:warn).never
+ Facter.warn(nil)
+ end
+
+ it "should not warn if debugging is enabled but an empyt string is passed" do
+ Facter.debugging(true)
+ Kernel.stubs(:warn)
+ Kernel.expects(:warn).never
+ Facter.warn('')
+ end
+
+ it "should not warn if debugging is disabled" do
+ Facter.debugging(false)
+ Kernel.stubs(:warn)
+ Kernel.expects(:warn).never
+ Facter.warn('foo')
+ end
+
+ it "should warn for any given element for an array if debugging is enabled" do
+ Facter.debugging(true)
+ Kernel.stubs(:warn)
+ Kernel.expects(:warn).with('foo')
+ Kernel.expects(:warn).with('bar')
+ Facter.warn( ['foo','bar'])
+ end
+ end
+
+ describe "when setting debugging mode" do
+ it "should have debugging enabled using 1" do
+ Facter.debugging(1)
+ Facter.should be_debugging
+ end
+ it "should have debugging enabled using true" do
+ Facter.debugging(true)
+ Facter.should be_debugging
+ end
+ it "should have debugging enabled using any string except off" do
+ Facter.debugging('aaaaa')
+ Facter.should be_debugging
+ end
+ it "should have debugging disabled using 0" do
+ Facter.debugging(0)
+ Facter.should_not be_debugging
+ end
+ it "should have debugging disabled using false" do
+ Facter.debugging(false)
+ Facter.should_not be_debugging
+ end
+ it "should have debugging disabled using the string 'off'" do
+ Facter.debugging('off')
+ Facter.should_not be_debugging
+ end
+ end
+
describe "when registering directories to search" do
after { Facter.instance_variable_set("@search_path", []) }