From 632a0a0042ebf2e7ef209ce30005833ccee6e77b Mon Sep 17 00:00:00 2001 From: Daniel Pittman Date: Thu, 28 Apr 2011 00:04:00 -0700 Subject: (#7269) Better error reporting for bad render formats. Previously we would try and send `nil` to a class to render an unsupported format, which was bad. Worse, we would only discover this *after* the fact, when we tried to render, so the entire action had run and the result was lost to the world. Instead, validate the parameter early and fail during option parsing. This has less nice error reporting than we can get handling it later[1], but it gets us a much better overall set of behaviour. [1] puppet/application.rb will print and exit, rather than raising, when the option handler fails; this will improve when we unify face and application options properly. Reviewed-By: Max Martin --- spec/unit/application/face_base_spec.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'spec/unit') diff --git a/spec/unit/application/face_base_spec.rb b/spec/unit/application/face_base_spec.rb index e84e6766f..0c75236f8 100755 --- a/spec/unit/application/face_base_spec.rb +++ b/spec/unit/application/face_base_spec.rb @@ -304,5 +304,18 @@ EOT json.should =~ /"two":\s*2\b/ PSON.parse(json).should == { "one" => 1, "two" => 2 } end + + it "should fail early if asked to render an invalid format" do + app.command_line.stubs(:args).returns %w{--render-as interpretive-dance help help} + # We shouldn't get here, thanks to the exception, and our expectation on + # it, but this helps us fail if that slips up and all. --daniel 2011-04-27 + Puppet::Face[:help, :current].expects(:help).never + + # ...and this is just annoying. Thanks, puppet/application.rb. + $stderr.expects(:puts). + with "Could not parse options: I don't know how to render 'interpretive-dance'" + + expect { app.run }.to exit_with 1 + end end end -- cgit