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