diff options
| -rw-r--r-- | lib/puppet/faces/help.rb | 4 | ||||
| -rw-r--r-- | spec/lib/puppet/faces/huzzah.rb | 1 | ||||
| -rw-r--r-- | spec/spec_helper.rb | 7 | ||||
| -rw-r--r-- | spec/unit/faces/help_spec.rb | 21 |
4 files changed, 31 insertions, 2 deletions
diff --git a/lib/puppet/faces/help.rb b/lib/puppet/faces/help.rb index e986d19b3..229a0dc81 100644 --- a/lib/puppet/faces/help.rb +++ b/lib/puppet/faces/help.rb @@ -27,10 +27,10 @@ Puppet::Faces.define(:help, '0.0.1') do if args.length == 0 then message << "Use: puppet [options] <subcommand> <action>" message << "" - message << "Available commands, from Puppet Faces:" + message << "Available subcommands, from Puppet Faces:" Puppet::Faces.faces.sort.each do |name| face = Puppet::Faces[name, :current] - message << format(" %-15s %s", face.name, 'REVISIT: face.desc') + message << format(" %-15s %s", face.name, face.summary) end else face = Puppet::Faces[args[0].to_sym, version] diff --git a/spec/lib/puppet/faces/huzzah.rb b/spec/lib/puppet/faces/huzzah.rb index 735004475..e86730250 100644 --- a/spec/lib/puppet/faces/huzzah.rb +++ b/spec/lib/puppet/faces/huzzah.rb @@ -1,4 +1,5 @@ require 'puppet/faces' Puppet::Faces.define(:huzzah, '2.0.1') do + summary "life is a thing for celebration" action :bar do "is where beer comes from" end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index d28cb2504..1187c1caf 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -7,6 +7,7 @@ ARGV.clear require 'puppet' require 'mocha' gem 'rspec', '>=2.0.0' +require 'rspec/expectations' # So everyone else doesn't have to include this base constant. module PuppetSpec @@ -65,3 +66,9 @@ RSpec.configure do |config| GC.enable end end + +RSpec::Matchers.define :have_matching_element do |expected| + match do |actual| + actual.any? { |item| item =~ expected } + end +end diff --git a/spec/unit/faces/help_spec.rb b/spec/unit/faces/help_spec.rb index 5b611a0ad..ad553dc3a 100644 --- a/spec/unit/faces/help_spec.rb +++ b/spec/unit/faces/help_spec.rb @@ -41,4 +41,25 @@ describe Puppet::Faces[:help, '0.0.1'] do face = Puppet::Faces[:huzzah, :current] subject.help(:huzzah, face.version).should == subject.help(:huzzah, :current) end + + context "when listing subcommands" do + subject { Puppet::Faces[:help, :current].help } + + # Check a precondition for the next block; if this fails you have + # something odd in your set of faces, and we skip testing things that + # matter. --daniel 2011-04-10 + it "should have at least one face with a summary" do + Puppet::Faces.faces.should be_any do |name| + Puppet::Faces[name, :current].summary + end + end + + Puppet::Faces.faces.each do |name| + face = Puppet::Faces[name, :current] + summary = face.summary + + it { should have_matching_element %r{ #{name} } } + it { should have_matching_element %r{ #{name} +#{summary}} } if summary + end + end end |
