summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJordan Running <jr@getchef.com>2016-03-17 16:10:57 -0500
committerJordan Running <jr@getchef.com>2016-03-18 12:27:08 -0500
commit74a3e638780a6f569fbfd1179cd3242dd21383cb (patch)
tree0f7fbe8b9595eacddff11309fe7baa50519fcf60
parentb5aad13f499dafb4a8bf98e91293f2812d1a039d (diff)
downloadchef-74a3e638780a6f569fbfd1179cd3242dd21383cb.tar.gz
Log platform in pretty error outputcd/log-platform
-rw-r--r--lib/chef/formatters/base.rb2
-rw-r--r--lib/chef/formatters/error_description.rb (renamed from lib/chef/formatters/error_descriptor.rb)2
-rw-r--r--spec/unit/formatters/error_description_spec.rb96
3 files changed, 99 insertions, 1 deletions
diff --git a/lib/chef/formatters/base.rb b/lib/chef/formatters/base.rb
index 90925ffdb4..3641e619e9 100644
--- a/lib/chef/formatters/base.rb
+++ b/lib/chef/formatters/base.rb
@@ -19,7 +19,7 @@
require "chef/event_dispatch/base"
require "chef/formatters/error_inspectors"
-require "chef/formatters/error_descriptor"
+require "chef/formatters/error_description"
require "chef/formatters/error_mapper"
require "chef/formatters/indentable_output_stream"
diff --git a/lib/chef/formatters/error_descriptor.rb b/lib/chef/formatters/error_description.rb
index 1a40f785cb..8d7f940181 100644
--- a/lib/chef/formatters/error_descriptor.rb
+++ b/lib/chef/formatters/error_description.rb
@@ -39,11 +39,13 @@ class Chef
out.puts @title, :red
out.puts "=" * 80
out.puts "\n"
+
sections.each do |section|
section.each do |heading, text|
display_section(heading, text, out)
end
end
+ display_section("Platform:", RUBY_PLATFORM, out)
end
def for_json()
diff --git a/spec/unit/formatters/error_description_spec.rb b/spec/unit/formatters/error_description_spec.rb
new file mode 100644
index 0000000000..8b088308fa
--- /dev/null
+++ b/spec/unit/formatters/error_description_spec.rb
@@ -0,0 +1,96 @@
+#
+# Author:: Jordan Running (<jr@chef.io>)
+#
+# Copyright:: Copyright 2015-2016, 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::ErrorDescription do
+ let(:title) { "test title" }
+
+ let(:out) { Chef::Formatters::IndentableOutputStream.new(StringIO.new, STDERR) }
+
+ let(:section_heading) { "test heading" }
+ let(:section_text) { "test text" }
+
+ subject { Chef::Formatters::ErrorDescription.new(title) }
+
+ describe "#sections" do
+ context "when no sections have been added" do
+ it "should return an empty array" do
+ expect(subject.sections).to eq []
+ end
+ end
+
+ context "when a section has been added" do
+ before do
+ subject.section(section_heading, section_text)
+ end
+
+ it "should return an array with the added section as a hash" do
+ expect(subject.sections).to eq [ { section_heading => section_text } ]
+ end
+ end
+ end
+
+ describe "#display" do
+ before do
+ stub_const("RUBY_PLATFORM", "ruby-foo-9000")
+ end
+
+ context "when no sections have been added" do
+ it "should output only the title and the Platform section" do
+ subject.display(out)
+ expect(out.out.string).to eq <<-END
+================================================================================
+test title
+================================================================================
+
+Platform:
+---------
+ruby-foo-9000
+
+ END
+ end
+ end
+
+ context "when a section has been added" do
+ before do
+ subject.section(section_heading, section_text)
+ end
+
+ it "should output the expected sections" do
+ subject.display(out)
+ expect(out.out.string).to eq <<-END
+================================================================================
+test title
+================================================================================
+
+test heading
+------------
+test text
+
+Platform:
+---------
+ruby-foo-9000
+
+ END
+ end
+
+ end
+ end
+end