diff options
| -rw-r--r-- | lib/puppet/application/face_base.rb | 12 | ||||
| -rw-r--r-- | lib/puppet/interface/action.rb | 1 | ||||
| -rwxr-xr-x | spec/unit/application/face_base_spec.rb | 13 | ||||
| -rwxr-xr-x | spec/unit/interface/action_builder_spec.rb | 4 |
4 files changed, 19 insertions, 11 deletions
diff --git a/lib/puppet/application/face_base.rb b/lib/puppet/application/face_base.rb index 456f0c610..6b13e16d4 100644 --- a/lib/puppet/application/face_base.rb +++ b/lib/puppet/application/face_base.rb @@ -37,21 +37,23 @@ class Puppet::Application::FaceBase < Puppet::Application # Override this if you need custom rendering. def render(result) - if render_as then - render_method = Puppet::Network::FormatHandler.format(render_as).render_method + format = render_as || action.render_as || :for_humans + if format == :for_humans then + render_for_humans(result) + else + render_method = Puppet::Network::FormatHandler.format(format).render_method if render_method == "to_pson" - jj result + PSON::pretty_generate(result, :allow_nan => true, :max_nesting => false) else result.send(render_method) end - else - render_for_humans(result) end end def render_for_humans(result) # String to String return result if result.is_a? String + return result if result.is_a? Numeric # Simple hash to table if result.is_a? Hash and result.keys.all? { |x| x.is_a? String or x.is_a? Numeric } diff --git a/lib/puppet/interface/action.rb b/lib/puppet/interface/action.rb index 8bacc216d..d9ba4eb60 100644 --- a/lib/puppet/interface/action.rb +++ b/lib/puppet/interface/action.rb @@ -11,7 +11,6 @@ class Puppet::Interface::Action @options = {} @when_rendering = {} - @render_as = :for_humans end # This is not nice, but it is the easiest way to make us behave like the diff --git a/spec/unit/application/face_base_spec.rb b/spec/unit/application/face_base_spec.rb index 6a4647246..6dfde4367 100755 --- a/spec/unit/application/face_base_spec.rb +++ b/spec/unit/application/face_base_spec.rb @@ -211,11 +211,18 @@ describe Puppet::Application::FaceBase do end describe "#render" do - it "should just return a String" do - app.render("hello").should == "hello" + before :each do + app.face = Puppet::Face[:basetest, '0.0.1'] + app.action = app.face.get_action(:foo) + end + + ["hello", 1, 1.0].each do |input| + it "should just return a #{input.class.name}" do + app.render(input).should == input + end end - [1, 1.000, [1, 2], ["one"], [{ 1 => 1 }]].each do |input| + [[1, 2], ["one"], [{ 1 => 1 }]].each do |input| it "should render #{input.class} using the 'pp' library" do app.render(input).should == input.pretty_inspect end diff --git a/spec/unit/interface/action_builder_spec.rb b/spec/unit/interface/action_builder_spec.rb index c122d3eb1..bf7afa74e 100755 --- a/spec/unit/interface/action_builder_spec.rb +++ b/spec/unit/interface/action_builder_spec.rb @@ -151,9 +151,9 @@ describe Puppet::Interface::ActionBuilder do end context "#render_as" do - it "should default to :for_humans" do + it "should default to nil (eg: based on context)" do action = Puppet::Interface::ActionBuilder.build(face, :foo) do end - action.render_as.should == :for_humans + action.render_as.should be_nil end it "should fail if not rendering format is given" do |
