Merge pull request #138 from whopper/PDOC-161/master/summary
(PDOC-161) Add `summary` tag for short descriptions
This commit is contained in:
		
						commit
						ba1a653331
					
				| 
						 | 
					@ -76,6 +76,9 @@ Style/RedundantSelf:
 | 
				
			||||||
Metrics/MethodLength:
 | 
					Metrics/MethodLength:
 | 
				
			||||||
  Enabled: false
 | 
					  Enabled: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Metrics/ModuleLength:
 | 
				
			||||||
 | 
					  Enabled: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# DISABLED - not useful
 | 
					# DISABLED - not useful
 | 
				
			||||||
Style/WhileUntilModifier:
 | 
					Style/WhileUntilModifier:
 | 
				
			||||||
  Enabled: false
 | 
					  Enabled: false
 | 
				
			||||||
| 
						 | 
					@ -318,7 +321,7 @@ Style/EmptyLiteral:
 | 
				
			||||||
Metrics/LineLength:
 | 
					Metrics/LineLength:
 | 
				
			||||||
  Enabled: false
 | 
					  Enabled: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Style/MethodCallParentheses:
 | 
					Style/MethodCallWithoutArgsParentheses:
 | 
				
			||||||
  Enabled: false
 | 
					  Enabled: false
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Style/MethodDefParentheses:
 | 
					Style/MethodDefParentheses:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										6
									
								
								Gemfile
								
								
								
								
							
							
						
						
									
										6
									
								
								Gemfile
								
								
								
								
							| 
						 | 
					@ -34,6 +34,6 @@ group :development do
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
gem 'json',      '<= 1.8'   if RUBY_VERSION < '2.0.0'
 | 
					gem 'json',      '<= 1.8'    if RUBY_VERSION < '2.0.0'
 | 
				
			||||||
gem 'json_pure', '<= 2.0.1' if RUBY_VERSION < '2.0.0'
 | 
					gem 'json_pure', '<= 2.0.1'  if RUBY_VERSION < '2.0.0'
 | 
				
			||||||
gem 'rubocop'               if RUBY_VERSION >= '2.0.0'
 | 
					gem 'rubocop',   '<= 0.47.0' if RUBY_VERSION >= '2.0.0'
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -190,6 +190,8 @@ To document Puppet classes and defined types, use a series of comments to create
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
# This is an example of how to document a Puppet class
 | 
					# This is an example of how to document a Puppet class
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
 | 
					# @summary A short summary of the purpose of the class.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
# @example Declaring the class
 | 
					# @example Declaring the class
 | 
				
			||||||
#   include example
 | 
					#   include example
 | 
				
			||||||
#
 | 
					#
 | 
				
			||||||
| 
						 | 
					@ -206,6 +208,7 @@ class example_class(
 | 
				
			||||||
The Strings elements appearing in the above comment block are:
 | 
					The Strings elements appearing in the above comment block are:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
* Three comment lines, not prefixed with tags, give the class description.
 | 
					* Three comment lines, not prefixed with tags, give the class description.
 | 
				
			||||||
 | 
					* The `@summary` YARD tag, which can be used for a short description of the class (fewer than 140 characters recommended).
 | 
				
			||||||
* The `@example` YARD tag, immediately followed by an optional title.
 | 
					* The `@example` YARD tag, immediately followed by an optional title.
 | 
				
			||||||
* The `include` statement, which adds the usage example code.
 | 
					* The `include` statement, which adds the usage example code.
 | 
				
			||||||
* Two `@param` tags, with the name of the parameter first, followed by a string describing the parameter's purpose.
 | 
					* Two `@param` tags, with the name of the parameter first, followed by a string describing the parameter's purpose.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,6 +24,9 @@ module PuppetStrings::Yard
 | 
				
			||||||
    PuppetStrings::Yard::Tags::ParameterDirective.register!
 | 
					    PuppetStrings::Yard::Tags::ParameterDirective.register!
 | 
				
			||||||
    PuppetStrings::Yard::Tags::PropertyDirective.register!
 | 
					    PuppetStrings::Yard::Tags::PropertyDirective.register!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Register the summary tag
 | 
				
			||||||
 | 
					    PuppetStrings::Yard::Tags::SummaryTag.register!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Ignore documentation on Puppet DSL calls
 | 
					    # Ignore documentation on Puppet DSL calls
 | 
				
			||||||
    # This prevents the YARD DSL parser from emitting warnings for Puppet's Ruby DSL
 | 
					    # This prevents the YARD DSL parser from emitting warnings for Puppet's Ruby DSL
 | 
				
			||||||
    YARD::Handlers::Ruby::DSLHandlerMethods::IGNORE_METHODS['create_function'] = true
 | 
					    YARD::Handlers::Ruby::DSLHandlerMethods::IGNORE_METHODS['create_function'] = true
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,8 @@
 | 
				
			||||||
 | 
					module PuppetStrings::Yard::Handlers::Helpers
 | 
				
			||||||
 | 
					  # Logs a warning if a summary tag has more than 140 characters
 | 
				
			||||||
 | 
					  def self.validate_summary_tag(object)
 | 
				
			||||||
 | 
					    if object.has_tag?(:summary) && object.tag(:summary).text.length > 140
 | 
				
			||||||
 | 
					      log.warn "The length of the summary for #{object.type} '#{object.name}' exceeds the recommended limit of 140 characters."
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,4 @@
 | 
				
			||||||
 | 
					require 'puppet-strings/yard/handlers/helpers'
 | 
				
			||||||
require 'puppet-strings/yard/handlers/puppet/base'
 | 
					require 'puppet-strings/yard/handlers/puppet/base'
 | 
				
			||||||
require 'puppet-strings/yard/parsers'
 | 
					require 'puppet-strings/yard/parsers'
 | 
				
			||||||
require 'puppet-strings/yard/code_objects'
 | 
					require 'puppet-strings/yard/code_objects'
 | 
				
			||||||
| 
						 | 
					@ -19,5 +20,8 @@ class PuppetStrings::Yard::Handlers::Puppet::ClassHandler < PuppetStrings::Yard:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Mark the class as public if it doesn't already have an api tag
 | 
					    # Mark the class as public if it doesn't already have an api tag
 | 
				
			||||||
    object.add_tag YARD::Tags::Tag.new(:api, 'public') unless object.has_tag? :api
 | 
					    object.add_tag YARD::Tags::Tag.new(:api, 'public') unless object.has_tag? :api
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Warn if a summary longer than 140 characters was provided
 | 
				
			||||||
 | 
					    PuppetStrings::Yard::Handlers::Helpers.validate_summary_tag(object) if object.has_tag? :summary
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,4 @@
 | 
				
			||||||
 | 
					require 'puppet-strings/yard/handlers/helpers'
 | 
				
			||||||
require 'puppet-strings/yard/handlers/puppet/base'
 | 
					require 'puppet-strings/yard/handlers/puppet/base'
 | 
				
			||||||
require 'puppet-strings/yard/parsers'
 | 
					require 'puppet-strings/yard/parsers'
 | 
				
			||||||
require 'puppet-strings/yard/code_objects'
 | 
					require 'puppet-strings/yard/code_objects'
 | 
				
			||||||
| 
						 | 
					@ -19,5 +20,8 @@ class PuppetStrings::Yard::Handlers::Puppet::DefinedTypeHandler < PuppetStrings:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Mark the defined type as public if it doesn't already have an api tag
 | 
					    # Mark the defined type as public if it doesn't already have an api tag
 | 
				
			||||||
    object.add_tag YARD::Tags::Tag.new(:api, 'public') unless object.has_tag? :api
 | 
					    object.add_tag YARD::Tags::Tag.new(:api, 'public') unless object.has_tag? :api
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Warn if a summary longer than 140 characters was provided
 | 
				
			||||||
 | 
					    PuppetStrings::Yard::Handlers::Helpers.validate_summary_tag(object) if object.has_tag? :summary
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,4 @@
 | 
				
			||||||
 | 
					require 'puppet-strings/yard/handlers/helpers'
 | 
				
			||||||
require 'puppet-strings/yard/handlers/puppet/base'
 | 
					require 'puppet-strings/yard/handlers/puppet/base'
 | 
				
			||||||
require 'puppet-strings/yard/parsers'
 | 
					require 'puppet-strings/yard/parsers'
 | 
				
			||||||
require 'puppet-strings/yard/code_objects'
 | 
					require 'puppet-strings/yard/code_objects'
 | 
				
			||||||
| 
						 | 
					@ -27,6 +28,9 @@ class PuppetStrings::Yard::Handlers::Puppet::FunctionHandler < PuppetStrings::Ya
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Mark the class as public if it doesn't already have an api tag
 | 
					    # Mark the class as public if it doesn't already have an api tag
 | 
				
			||||||
    object.add_tag YARD::Tags::Tag.new(:api, 'public') unless object.has_tag? :api
 | 
					    object.add_tag YARD::Tags::Tag.new(:api, 'public') unless object.has_tag? :api
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Warn if a summary longer than 140 characters was provided
 | 
				
			||||||
 | 
					    PuppetStrings::Yard::Handlers::Helpers.validate_summary_tag(object) if object.has_tag? :summary
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private
 | 
					  private
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,4 @@
 | 
				
			||||||
 | 
					require 'puppet-strings/yard/handlers/helpers'
 | 
				
			||||||
require 'puppet-strings/yard/handlers/ruby/base'
 | 
					require 'puppet-strings/yard/handlers/ruby/base'
 | 
				
			||||||
require 'puppet-strings/yard/code_objects'
 | 
					require 'puppet-strings/yard/code_objects'
 | 
				
			||||||
require 'puppet-strings/yard/util'
 | 
					require 'puppet-strings/yard/util'
 | 
				
			||||||
| 
						 | 
					@ -61,6 +62,9 @@ class PuppetStrings::Yard::Handlers::Ruby::FunctionHandler < PuppetStrings::Yard
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Mark the function as public if it doesn't already have an api tag
 | 
					    # Mark the function as public if it doesn't already have an api tag
 | 
				
			||||||
    object.add_tag YARD::Tags::Tag.new(:api, 'public') unless object.has_tag? :api
 | 
					    object.add_tag YARD::Tags::Tag.new(:api, 'public') unless object.has_tag? :api
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Warn if a summary longer than 140 characters was provided
 | 
				
			||||||
 | 
					    PuppetStrings::Yard::Handlers::Helpers.validate_summary_tag(object) if object.has_tag? :summary
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private
 | 
					  private
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,4 @@
 | 
				
			||||||
 | 
					require 'puppet-strings/yard/handlers/helpers'
 | 
				
			||||||
require 'puppet-strings/yard/handlers/ruby/base'
 | 
					require 'puppet-strings/yard/handlers/ruby/base'
 | 
				
			||||||
require 'puppet-strings/yard/code_objects'
 | 
					require 'puppet-strings/yard/code_objects'
 | 
				
			||||||
require 'puppet-strings/yard/util'
 | 
					require 'puppet-strings/yard/util'
 | 
				
			||||||
| 
						 | 
					@ -34,6 +35,9 @@ class PuppetStrings::Yard::Handlers::Ruby::ProviderHandler < PuppetStrings::Yard
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Mark the provider as public if it doesn't already have an api tag
 | 
					    # Mark the provider as public if it doesn't already have an api tag
 | 
				
			||||||
    object.add_tag YARD::Tags::Tag.new(:api, 'public') unless object.has_tag? :api
 | 
					    object.add_tag YARD::Tags::Tag.new(:api, 'public') unless object.has_tag? :api
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Warn if a summary longer than 140 characters was provided
 | 
				
			||||||
 | 
					    PuppetStrings::Yard::Handlers::Helpers.validate_summary_tag(object) if object.has_tag? :summary
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private
 | 
					  private
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,3 +1,4 @@
 | 
				
			||||||
 | 
					require 'puppet-strings/yard/handlers/helpers'
 | 
				
			||||||
require 'puppet-strings/yard/handlers/ruby/base'
 | 
					require 'puppet-strings/yard/handlers/ruby/base'
 | 
				
			||||||
require 'puppet-strings/yard/code_objects'
 | 
					require 'puppet-strings/yard/code_objects'
 | 
				
			||||||
require 'puppet-strings/yard/util'
 | 
					require 'puppet-strings/yard/util'
 | 
				
			||||||
| 
						 | 
					@ -30,6 +31,9 @@ class PuppetStrings::Yard::Handlers::Ruby::TypeHandler < PuppetStrings::Yard::Ha
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Mark the type as public if it doesn't already have an api tag
 | 
					    # Mark the type as public if it doesn't already have an api tag
 | 
				
			||||||
    object.add_tag YARD::Tags::Tag.new(:api, 'public') unless object.has_tag? :api
 | 
					    object.add_tag YARD::Tags::Tag.new(:api, 'public') unless object.has_tag? :api
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Warn if a summary longer than 140 characters was provided
 | 
				
			||||||
 | 
					    PuppetStrings::Yard::Handlers::Helpers.validate_summary_tag(object) if object.has_tag? :summary
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private
 | 
					  private
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3,4 +3,5 @@ module PuppetStrings::Yard::Tags
 | 
				
			||||||
  require 'puppet-strings/yard/tags/parameter_directive'
 | 
					  require 'puppet-strings/yard/tags/parameter_directive'
 | 
				
			||||||
  require 'puppet-strings/yard/tags/property_directive'
 | 
					  require 'puppet-strings/yard/tags/property_directive'
 | 
				
			||||||
  require 'puppet-strings/yard/tags/overload_tag'
 | 
					  require 'puppet-strings/yard/tags/overload_tag'
 | 
				
			||||||
 | 
					  require 'puppet-strings/yard/tags/summary_tag'
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,9 @@
 | 
				
			||||||
 | 
					# Implements a summary tag for general purpose short descriptions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class PuppetStrings::Yard::Tags::SummaryTag < YARD::Tags::Tag
 | 
				
			||||||
 | 
					  # Registers the tag with YARD.
 | 
				
			||||||
 | 
					  # @return [void]
 | 
				
			||||||
 | 
					  def self.register!
 | 
				
			||||||
 | 
					    YARD::Tags::Library.define_tag("puppet.summary", :summary)
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
# Initializes the template.
 | 
					# Initializes the template.
 | 
				
			||||||
# @return [void]
 | 
					# @return [void]
 | 
				
			||||||
def init
 | 
					def init
 | 
				
			||||||
  sections :header, :box_info, :overview, T('tags'), :source
 | 
					  sections :header, :box_info, :summary, :overview, T('tags'), :source
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Renders the box_info section.
 | 
					# Renders the box_info section.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,4 @@
 | 
				
			||||||
 | 
					<% if object.docstring.has_tag?(:summary) %>
 | 
				
			||||||
 | 
					  <h2>Summary</h2>
 | 
				
			||||||
 | 
					  <%= object.docstring.tag(:summary).text %>
 | 
				
			||||||
 | 
					<% end %>
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
# Initializes the template.
 | 
					# Initializes the template.
 | 
				
			||||||
# @return [void]
 | 
					# @return [void]
 | 
				
			||||||
def init
 | 
					def init
 | 
				
			||||||
  sections :header, :box_info, :overview, T('tags'), :source
 | 
					  sections :header, :box_info, :summary, :overview, T('tags'), :source
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,4 @@
 | 
				
			||||||
 | 
					<% if object.docstring.has_tag?(:summary) %>
 | 
				
			||||||
 | 
					  <h2>Summary</h2>
 | 
				
			||||||
 | 
					  <%= object.docstring.tag(:summary).text %>
 | 
				
			||||||
 | 
					<% end %>
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
# Initializes the template.
 | 
					# Initializes the template.
 | 
				
			||||||
# @return [void]
 | 
					# @return [void]
 | 
				
			||||||
def init
 | 
					def init
 | 
				
			||||||
  sections :header, :box_info, :overview, [T('tags'), :source]
 | 
					  sections :header, :box_info, :summary, :overview, [T('tags'), :source]
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,4 @@
 | 
				
			||||||
 | 
					<% if object.docstring.has_tag?(:summary) %>
 | 
				
			||||||
 | 
					  <h2>Summary</h2>
 | 
				
			||||||
 | 
					  <%= object.docstring.tag(:summary).text %>
 | 
				
			||||||
 | 
					<% end %>
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
# Initializes the template.
 | 
					# Initializes the template.
 | 
				
			||||||
# @return [void]
 | 
					# @return [void]
 | 
				
			||||||
def init
 | 
					def init
 | 
				
			||||||
  sections :header, :box_info, :overview, T('tags'), :features, :confines, :defaults, :commands
 | 
					  sections :header, :box_info, :summary, :overview, T('tags'), :features, :confines, :defaults, :commands
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Renders the confines section.
 | 
					# Renders the confines section.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,4 @@
 | 
				
			||||||
 | 
					<% if object.docstring.has_tag?(:summary) %>
 | 
				
			||||||
 | 
					  <h2>Summary</h2>
 | 
				
			||||||
 | 
					  <%= object.docstring.tag(:summary).text %>
 | 
				
			||||||
 | 
					<% end %>
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,7 @@
 | 
				
			||||||
# Initializes the template.
 | 
					# Initializes the template.
 | 
				
			||||||
# @return [void]
 | 
					# @return [void]
 | 
				
			||||||
def init
 | 
					def init
 | 
				
			||||||
  sections :header, :box_info, :overview, T('tags'), :properties, :parameters, :features
 | 
					  sections :header, :box_info, :summary, :overview, T('tags'), :properties, :parameters, :features
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Renders the box_info section.
 | 
					# Renders the box_info section.
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,4 @@
 | 
				
			||||||
 | 
					<% if object.docstring.has_tag?(:summary) %>
 | 
				
			||||||
 | 
					  <h2>Summary</h2>
 | 
				
			||||||
 | 
					  <%= object.docstring.tag(:summary).text %>
 | 
				
			||||||
 | 
					<% end %>
 | 
				
			||||||
| 
						 | 
					@ -175,4 +175,43 @@ SOURCE
 | 
				
			||||||
      expect(tags[1].types).to eq(['Boolean'])
 | 
					      expect(tags[1].types).to eq(['Boolean'])
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  describe 'parsing a class with a summary' do
 | 
				
			||||||
 | 
					    context 'when the summary has fewer than 140 characters' do
 | 
				
			||||||
 | 
					      let(:source) { <<-SOURCE
 | 
				
			||||||
 | 
					  # A simple foo class.
 | 
				
			||||||
 | 
					  # @summary A short summary.
 | 
				
			||||||
 | 
					  class foo() {
 | 
				
			||||||
 | 
					    file { '/tmp/foo':
 | 
				
			||||||
 | 
					      ensure => present
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  SOURCE
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      it 'should parse the summary' do
 | 
				
			||||||
 | 
					        expect{ subject }.to output('').to_stdout_from_any_process
 | 
				
			||||||
 | 
					        expect(subject.size).to eq(1)
 | 
				
			||||||
 | 
					        summary = subject.first.tags(:summary)
 | 
				
			||||||
 | 
					        expect(summary.first.text).to eq('A short summary.')
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    context 'when the summary has more than 140 characters' do
 | 
				
			||||||
 | 
					      let(:source) { <<-SOURCE
 | 
				
			||||||
 | 
					  # A simple foo class.
 | 
				
			||||||
 | 
					  # @summary A short summary that is WAY TOO LONG. AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH this is not what a summary is for! It should be fewer than 140 characters!!
 | 
				
			||||||
 | 
					  class foo() {
 | 
				
			||||||
 | 
					    file { '/tmp/foo':
 | 
				
			||||||
 | 
					      ensure => present
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					  SOURCE
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      it 'should log a warning' do
 | 
				
			||||||
 | 
					        expect{ subject }.to output(/\[warn\]: The length of the summary for puppet_class 'foo' exceeds the recommended limit of 140 characters./).to_stdout_from_any_process
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -175,4 +175,50 @@ SOURCE
 | 
				
			||||||
      expect(tags[1].types).to eq(['Boolean'])
 | 
					      expect(tags[1].types).to eq(['Boolean'])
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  describe 'parsing a defined type with a summary' do
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    context 'when the summary has fewer than 140 characters' do
 | 
				
			||||||
 | 
					      let(:source) { <<-SOURCE
 | 
				
			||||||
 | 
					# A simple foo defined type.
 | 
				
			||||||
 | 
					# @summary A short summary.
 | 
				
			||||||
 | 
					# @param param1 First param.
 | 
				
			||||||
 | 
					# @param [Boolean] param2 Second param.
 | 
				
			||||||
 | 
					# @param param3 Third param.
 | 
				
			||||||
 | 
					define foo(Integer $param1, $param2, String $param3 = hi) {
 | 
				
			||||||
 | 
					  file { '/tmp/foo':
 | 
				
			||||||
 | 
					    ensure => present
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					SOURCE
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      it 'should parse the summary' do
 | 
				
			||||||
 | 
					        expect{ subject }.to output('').to_stdout_from_any_process
 | 
				
			||||||
 | 
					        expect(subject.size).to eq(1)
 | 
				
			||||||
 | 
					        summary = subject.first.tags(:summary)
 | 
				
			||||||
 | 
					        expect(summary.first.text).to eq('A short summary.')
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    context 'when the summary has more than 140 characters' do
 | 
				
			||||||
 | 
					      let(:source) { <<-SOURCE
 | 
				
			||||||
 | 
					# A simple foo defined type.
 | 
				
			||||||
 | 
					# @summary A short summary that is WAY TOO LONG. AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH this is not what a summary is for! It should be fewer than 140 characters!!
 | 
				
			||||||
 | 
					# @param param1 First param.
 | 
				
			||||||
 | 
					# @param [Boolean] param2 Second param.
 | 
				
			||||||
 | 
					# @param param3 Third param.
 | 
				
			||||||
 | 
					define foo(Integer $param1, $param2, String $param3 = hi) {
 | 
				
			||||||
 | 
					  file { '/tmp/foo':
 | 
				
			||||||
 | 
					    ensure => present
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					SOURCE
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      it 'should log a warning' do
 | 
				
			||||||
 | 
					        expect{ subject }.to output(/\[warn\]: The length of the summary for puppet_defined_type 'foo' exceeds the recommended limit of 140 characters./).to_stdout_from_any_process
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -260,4 +260,41 @@ SOURCE
 | 
				
			||||||
      expect(tags[0].types).to eq(['Any'])
 | 
					      expect(tags[0].types).to eq(['Any'])
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  describe 'parsing a function with a summary' do
 | 
				
			||||||
 | 
					    context 'when the summary has fewer than 140 characters' do
 | 
				
			||||||
 | 
					      let(:source) { <<-SOURCE
 | 
				
			||||||
 | 
					# A simple foo function.
 | 
				
			||||||
 | 
					# @summary A short summary.
 | 
				
			||||||
 | 
					# @return [String] foo
 | 
				
			||||||
 | 
					function foo() {
 | 
				
			||||||
 | 
					  notice 'hello world'
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					SOURCE
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      it 'should parse the summary' do
 | 
				
			||||||
 | 
					        expect{ subject }.to output('').to_stdout_from_any_process
 | 
				
			||||||
 | 
					        expect(subject.size).to eq(1)
 | 
				
			||||||
 | 
					        summary = subject.first.tags(:summary)
 | 
				
			||||||
 | 
					        expect(summary.first.text).to eq('A short summary.')
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    context 'when the summary has more than 140 characters' do
 | 
				
			||||||
 | 
					      let(:source) { <<-SOURCE
 | 
				
			||||||
 | 
					# A simple foo function.
 | 
				
			||||||
 | 
					# @summary A short summary that is WAY TOO LONG. AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH this is not what a summary is for! It should be fewer than 140 characters!!
 | 
				
			||||||
 | 
					function foo() {
 | 
				
			||||||
 | 
					  notice 'hello world'
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					SOURCE
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      it 'should log a warning' do
 | 
				
			||||||
 | 
					        expect{ subject }.to output(/\[warn\]: The length of the summary for puppet_function 'foo' exceeds the recommended limit of 140 characters./).to_stdout_from_any_process
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -654,4 +654,43 @@ end
 | 
				
			||||||
      expect{ subject }.to output(/\[warn\]: The docstring for Puppet 4.x function 'foo' contains @return tags near \(stdin\):3: return value documentation should be made on the dispatch call\./).to_stdout_from_any_process
 | 
					      expect{ subject }.to output(/\[warn\]: The docstring for Puppet 4.x function 'foo' contains @return tags near \(stdin\):3: return value documentation should be made on the dispatch call\./).to_stdout_from_any_process
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  describe 'parsing a function with a summary' do
 | 
				
			||||||
 | 
					    context 'when the summary has fewer than 140 characters' do
 | 
				
			||||||
 | 
					      let(:source) { <<-SOURCE
 | 
				
			||||||
 | 
					# An example 4.x function.
 | 
				
			||||||
 | 
					# @summary A short summary.
 | 
				
			||||||
 | 
					Puppet::Functions.create_function(:foo) do
 | 
				
			||||||
 | 
					  # @return [Undef]
 | 
				
			||||||
 | 
					  dispatch :foo do
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					SOURCE
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      it 'should parse the summary' do
 | 
				
			||||||
 | 
					        expect{ subject }.to output('').to_stdout_from_any_process
 | 
				
			||||||
 | 
					        expect(subject.size).to eq(1)
 | 
				
			||||||
 | 
					        summary = subject.first.tags(:summary)
 | 
				
			||||||
 | 
					        expect(summary.first.text).to eq('A short summary.')
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    context 'when the summary has more than 140 characters' do
 | 
				
			||||||
 | 
					      let(:source) { <<-SOURCE
 | 
				
			||||||
 | 
					# An example 4.x function.
 | 
				
			||||||
 | 
					# @summary A short summary that is WAY TOO LONG. AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH this is not what a summary is for! It should be fewer than 140 characters!!
 | 
				
			||||||
 | 
					Puppet::Functions.create_function(:foo) do
 | 
				
			||||||
 | 
					  # @return [Undef]
 | 
				
			||||||
 | 
					  dispatch :foo do
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					SOURCE
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      it 'should log a warning' do
 | 
				
			||||||
 | 
					        expect{ subject }.to output(/\[warn\]: The length of the summary for puppet_function 'foo' exceeds the recommended limit of 140 characters./).to_stdout_from_any_process
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -105,4 +105,35 @@ SOURCE
 | 
				
			||||||
      expect(object.commands).to eq({'foo' => '/usr/bin/foo'})
 | 
					      expect(object.commands).to eq({'foo' => '/usr/bin/foo'})
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  describe 'parsing a provider with a summary' do
 | 
				
			||||||
 | 
					    context 'when the summary has fewer than 140 characters' do
 | 
				
			||||||
 | 
					      let(:source) { <<-SOURCE
 | 
				
			||||||
 | 
					Puppet::Type.type(:custom).provide :linux do
 | 
				
			||||||
 | 
					  @doc = '@summary A short summary.'
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					SOURCE
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      it 'should parse the summary' do
 | 
				
			||||||
 | 
					        expect{ subject }.to output('').to_stdout_from_any_process
 | 
				
			||||||
 | 
					        expect(subject.size).to eq(1)
 | 
				
			||||||
 | 
					        summary = subject.first.tags(:summary)
 | 
				
			||||||
 | 
					        expect(summary.first.text).to eq('A short summary.')
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    context 'when the summary has more than 140 characters' do
 | 
				
			||||||
 | 
					      let(:source) { <<-SOURCE
 | 
				
			||||||
 | 
					Puppet::Type.type(:custom).provide :linux do
 | 
				
			||||||
 | 
					  @doc = '@summary A short summary that is WAY TOO LONG. AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH this is not what a summary is for! It should be fewer than 140 characters!!'
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					SOURCE
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      it 'should log a warning' do
 | 
				
			||||||
 | 
					        expect{ subject }.to output(/\[warn\]: The length of the summary for puppet_provider 'linux' exceeds the recommended limit of 140 characters./).to_stdout_from_any_process
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -235,4 +235,35 @@ SOURCE
 | 
				
			||||||
      expect(object.parameters[0].isnamevar).to eq(true)
 | 
					      expect(object.parameters[0].isnamevar).to eq(true)
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  describe 'parsing a type with a summary' do
 | 
				
			||||||
 | 
					    context 'when the summary has fewer than 140 characters' do
 | 
				
			||||||
 | 
					      let(:source) { <<-SOURCE
 | 
				
			||||||
 | 
					Puppet::Type.newtype(:database) do
 | 
				
			||||||
 | 
					  @doc = '@summary A short summary.'
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					SOURCE
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      it 'should parse the summary' do
 | 
				
			||||||
 | 
					        expect{ subject }.to output('').to_stdout_from_any_process
 | 
				
			||||||
 | 
					        expect(subject.size).to eq(1)
 | 
				
			||||||
 | 
					        summary = subject.first.tags(:summary)
 | 
				
			||||||
 | 
					        expect(summary.first.text).to eq('A short summary.')
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    context 'when the summary has more than 140 characters' do
 | 
				
			||||||
 | 
					      let(:source) { <<-SOURCE
 | 
				
			||||||
 | 
					Puppet::Type.newtype(:database) do
 | 
				
			||||||
 | 
					  @doc = '@summary A short summary that is WAY TOO LONG. AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH this is not what a summary is for! It should be fewer than 140 characters!!'
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					SOURCE
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      it 'should log a warning' do
 | 
				
			||||||
 | 
					        expect{ subject }.to output(/\[warn\]: The length of the summary for puppet_type 'database' exceeds the recommended limit of 140 characters./).to_stdout_from_any_process
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue