summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/puppet/application/face_base.rb12
-rw-r--r--lib/puppet/interface/action.rb1
-rwxr-xr-xspec/unit/application/face_base_spec.rb13
-rwxr-xr-xspec/unit/interface/action_builder_spec.rb4
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