From 3060794742d90b0d8cef8f21bddce4a330b97153 Mon Sep 17 00:00:00 2001 From: Martin Smith Date: Thu, 6 Aug 2015 10:51:53 -0500 Subject: Add additional helpful section for frozen objects Augument runtime errors with additional information that explains why an object might be frozen, and how frozen resource properties are a good thing. Fixes #3734, for [accepted RFC 55](https://github.com/chef/chef-rfc/pull/135). --- .../compile_error_inspector_spec.rb | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'spec') diff --git a/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb b/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb index 5f95beb259..3c8d5dfa29 100644 --- a/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb +++ b/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb @@ -110,6 +110,32 @@ describe Chef::Formatters::ErrorInspectors::CompileErrorInspector do end end + context "when the error is a RuntimeError about frozen object" do + let(:exception) do + e = RuntimeError.new("can't modify frozen Array") + e.set_backtrace(trace) + e + end + + let(:path_to_failed_file) { "/tmp/kitchen/cache/cookbooks/foo/recipes/default.rb" } + + let(:trace) do + [ + "/tmp/kitchen/cache/cookbooks/foo/recipes/default.rb:2:in `block in from_file'", + "/tmp/kitchen/cache/cookbooks/foo/recipes/default.rb:1:in `from_file'" + ] + end + + describe "when explaining a runtime error in the compile phase" do + it "correctly detects RuntimeError for frozen objects" do + expect(inspector.exception_message_modifying_frozen?).to be(true) + end + + # could also test for description.section to be called, but would have + # to adjust every other test to begin using a test double for description + end + end + context "when the error does not contain any lines from cookbooks" do let(:trace) do -- cgit v1.2.1