summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/chef/formatters/base.rb7
-rw-r--r--lib/chef/provider/package/dpkg.rb1
-rw-r--r--spec/unit/formatters/base_spec.rb48
3 files changed, 56 insertions, 0 deletions
diff --git a/lib/chef/formatters/base.rb b/lib/chef/formatters/base.rb
index 636ba9c83f..c901068aa0 100644
--- a/lib/chef/formatters/base.rb
+++ b/lib/chef/formatters/base.rb
@@ -93,6 +93,13 @@ class Chef
def indent_by(amount)
@output.indent += amount
+ if @output.indent < 0
+ # This is left commented out for now. We need to uncomment it and fix at least one bug in
+ # the formatter, and then leave this line uncommented in the future.
+ #Chef::Log.warn "Internal Formatter Error -- Attempt to indent by negative number of spaces"
+ @output.indent = 0
+ end
+ @output.indent
end
# Input: a Formatters::ErrorDescription object.
diff --git a/lib/chef/provider/package/dpkg.rb b/lib/chef/provider/package/dpkg.rb
index a1f1c797b1..4df43fb802 100644
--- a/lib/chef/provider/package/dpkg.rb
+++ b/lib/chef/provider/package/dpkg.rb
@@ -31,6 +31,7 @@ class Chef
DPKG_VERSION = /^Version: (.+)$/
include Chef::Mixin::GetSourceFromPackage
+ include Chef::Mixin::ShellOut
def define_resource_requirements
super
diff --git a/spec/unit/formatters/base_spec.rb b/spec/unit/formatters/base_spec.rb
new file mode 100644
index 0000000000..6a843ea775
--- /dev/null
+++ b/spec/unit/formatters/base_spec.rb
@@ -0,0 +1,48 @@
+#
+# Author:: Lamont Granquist (<lamont@getchef.com>)
+#
+# Copyright:: Copyright (c) 2012 Chef Software, Inc.
+# License:: Apache License, Version 2.0
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+require 'spec_helper'
+
+describe Chef::Formatters::Base do
+ let(:out) { double("out") }
+ let(:err) { double("err") }
+ let(:formatter) { Chef::Formatters::Base.new(out, err) }
+
+ it "starts with an indentation of zero" do
+ expect(formatter.output.indent).to eql(0)
+ end
+
+ it "increments it to two correctly" do
+ formatter.indent_by(2)
+ expect(formatter.output.indent).to eql(2)
+ end
+
+ it "increments it and then decrements it corectly" do
+ formatter.indent_by(2)
+ formatter.indent_by(-2)
+ expect(formatter.output.indent).to eql(0)
+ end
+
+ it "does not allow negative indentation" do
+ formatter.indent_by(-2)
+ expect(formatter.output.indent).to eql(0)
+ end
+end
+
+