puppet-lint-param-docs 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4cf77c26f657156fad03044435a16d3dbe003717
4
- data.tar.gz: fe657a095d1febeb3edc1312d634779c0c97c7ea
3
+ metadata.gz: ac9245ad58468d4c5d12ad908c1be44b419fbd6e
4
+ data.tar.gz: cebcc59f5a6d1600ba3ef2820f79d96309a8ff6f
5
5
  SHA512:
6
- metadata.gz: e4065e1c26034d49c04f471f3e4621cf615c397116d337a8d9108ce59b94e40ea6a4620bc1ed5e625cf3b0ba9066a3f18bbb023dfe7e6adc6a72b12f9ddfa4ef
7
- data.tar.gz: 7e63d27aacb10ffb8f7c5964b712545a6c2eefb44e4bf9d8143be0ac510dcadde74f016f26b8d5dd786ab00eff002ec5645256b5dd3db99e88c6d9dad220529b
6
+ metadata.gz: 0e3d0109f4e5223651116dbe771034ee026584b1a4d4c411bd2e16087f152326510f68bd1880e8e022f217bd54663d4ab107ed7446276bc833ce98e34b0df2e6
7
+ data.tar.gz: 4407de443fdff750b3b4049e5561d367f201e5a0d348baafdeeec10a416d42f6a68cf4d570893641d83865232edb8d76abb932794a77389ccef53b70c294c357
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # puppet-lint parameter documentation check
2
2
 
3
- Adds a new puppet-lint check to verify all class parameters have been
4
- documented.
3
+ Adds a new puppet-lint check to verify all class and defined type parameters
4
+ have been documented.
5
5
 
6
6
  Particularly useful with [kafo](https://github.com/theforeman/kafo), as its
7
7
  default behaviour is to throw an error when a parameter is undocumented.
@@ -23,9 +23,10 @@ This plugin provides a new check to `puppet-lint`.
23
23
 
24
24
  **--fix support: No**
25
25
 
26
- This check will raise a warning for any class parameters that don't have an
27
- RDoc description.
26
+ This check will raise a warning for any class or defined type parameters that
27
+ don't have an RDoc description.
28
28
 
29
29
  ```
30
30
  WARNING: missing documentation for class parameter foo::bar
31
+ WARNING: missing documentation for defined type parameter foo::baz
31
32
  ```
@@ -1,11 +1,11 @@
1
1
  PuppetLint.new_check(:parameter_documentation) do
2
2
  def check
3
- class_indexes.each do |klass|
4
- next if klass[:param_tokens].nil?
3
+ class_indexes.concat(defined_type_indexes).each do |idx|
4
+ next if idx[:param_tokens].nil?
5
5
 
6
6
  doc_params = []
7
- tokens[0..klass[:start]].reverse_each do |dtok|
8
- next if [:CLASS, :NEWLINE, :WHITESPACE, :INDENT].include?(dtok.type)
7
+ tokens[0..idx[:start]].reverse_each do |dtok|
8
+ next if [:CLASS, :DEFINE, :NEWLINE, :WHITESPACE, :INDENT].include?(dtok.type)
9
9
  if [:COMMENT, :MLCOMMENT, :SLASH_COMMENT].include?(dtok.type)
10
10
  if dtok.value =~ /\A\s*\[\*([a-zA-Z0-9_]+)\*\]/ or
11
11
  dtok.value =~ /\A\s*\$([a-zA-Z0-9_]+)::/
@@ -17,7 +17,7 @@ PuppetLint.new_check(:parameter_documentation) do
17
17
  end
18
18
 
19
19
  params = []
20
- e = klass[:param_tokens].each
20
+ e = idx[:param_tokens].each
21
21
  begin
22
22
  while (ptok = e.next)
23
23
  if ptok.type == :VARIABLE
@@ -33,8 +33,9 @@ PuppetLint.new_check(:parameter_documentation) do
33
33
 
34
34
  params.each do |p|
35
35
  next if doc_params.include? p.value
36
+ idx_type = idx[:type] == :CLASS ? "class" : "defined type"
36
37
  notify :warning, {
37
- :message => "missing documentation for class parameter #{klass[:name_token].value}::#{p.value}",
38
+ :message => "missing documentation for #{idx_type} parameter #{idx[:name_token].value}::#{p.value}",
38
39
  :line => p.line,
39
40
  :column => p.column,
40
41
  }
@@ -1,7 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe 'parameter_documentation' do
4
- let(:msg) { 'missing documentation for class parameter example::%s' }
4
+ let(:class_msg) { 'missing documentation for class parameter example::%s' }
5
+ let(:define_msg) { 'missing documentation for defined type parameter example::%s' }
5
6
 
6
7
  context 'class missing any documentation' do
7
8
  let(:code) { 'class example($foo) { }' }
@@ -11,7 +12,19 @@ describe 'parameter_documentation' do
11
12
  end
12
13
 
13
14
  it 'should create a warning' do
14
- expect(problems).to contain_warning(msg % :foo).on_line(1).in_column(15)
15
+ expect(problems).to contain_warning(class_msg % :foo).on_line(1).in_column(15)
16
+ end
17
+ end
18
+
19
+ context 'define missing any documentation' do
20
+ let(:code) { 'define example($foo) { }' }
21
+
22
+ it 'should detect a single problem' do
23
+ expect(problems).to have(1).problem
24
+ end
25
+
26
+ it 'should create a warning' do
27
+ expect(problems).to contain_warning(define_msg% :foo).on_line(1).in_column(16)
15
28
  end
16
29
  end
17
30
 
@@ -23,7 +36,19 @@ describe 'parameter_documentation' do
23
36
  end
24
37
 
25
38
  it 'should create a warning' do
26
- expect(problems).to contain_warning(msg % :foo).on_line(1).in_column(15)
39
+ expect(problems).to contain_warning(class_msg % :foo).on_line(1).in_column(15)
40
+ end
41
+ end
42
+
43
+ context 'define with param defaults' do
44
+ let(:code) { 'define example($foo = $example::params::foo) { }' }
45
+
46
+ it 'should detect a single problem' do
47
+ expect(problems).to have(1).problem
48
+ end
49
+
50
+ it 'should create a warning' do
51
+ expect(problems).to contain_warning(define_msg % :foo).on_line(1).in_column(16)
27
52
  end
28
53
  end
29
54
 
@@ -44,6 +69,23 @@ class foreman (
44
69
  end
45
70
  end
46
71
 
72
+ context 'define with many param defaults' do
73
+ let(:code) do
74
+ <<-EOS
75
+ define foreman (
76
+ $foreman_url = $foreman::params::foreman_url,
77
+ $unattended = $foreman::params::unattended,
78
+ $authentication = $foreman::params::authentication,
79
+ $passenger = $foreman::params::passenger,
80
+ ) {}
81
+ EOS
82
+ end
83
+
84
+ it 'should detect four problems' do
85
+ expect(problems).to have(4).problems
86
+ end
87
+ end
88
+
47
89
  context 'class missing documentation ($bar::) for a parameter' do
48
90
  let(:code) do
49
91
  <<-EOS.gsub(/^\s+/, '')
@@ -62,7 +104,29 @@ class foreman (
62
104
  end
63
105
 
64
106
  it 'should create a warning' do
65
- expect(problems).to contain_warning(msg % :foo).on_line(7).in_column(15)
107
+ expect(problems).to contain_warning(class_msg % :foo).on_line(7).in_column(15)
108
+ end
109
+ end
110
+
111
+ context 'define missing documentation ($bar::) for a parameter' do
112
+ let(:code) do
113
+ <<-EOS.gsub(/^\s+/, '')
114
+ # Example define
115
+ #
116
+ # === Parameters:
117
+ #
118
+ # $bar:: example
119
+ #
120
+ define example($foo, $bar) { }
121
+ EOS
122
+ end
123
+
124
+ it 'should detect a single problem' do
125
+ expect(problems).to have(1).problem
126
+ end
127
+
128
+ it 'should create a warning' do
129
+ expect(problems).to contain_warning(define_msg % :foo).on_line(7).in_column(16)
66
130
  end
67
131
  end
68
132
 
@@ -84,7 +148,29 @@ class foreman (
84
148
  end
85
149
 
86
150
  it 'should create a warning' do
87
- expect(problems).to contain_warning(msg % :foo).on_line(7).in_column(15)
151
+ expect(problems).to contain_warning(class_msg % :foo).on_line(7).in_column(15)
152
+ end
153
+ end
154
+
155
+ context 'define missing documentation ([*bar*]) for a parameter' do
156
+ let(:code) do
157
+ <<-EOS.gsub(/^\s+/, '')
158
+ # Example define
159
+ #
160
+ # === Parameters:
161
+ #
162
+ # [*bar*] example
163
+ #
164
+ define example($foo, $bar) { }
165
+ EOS
166
+ end
167
+
168
+ it 'should detect a single problem' do
169
+ expect(problems).to have(1).problem
170
+ end
171
+
172
+ it 'should create a warning' do
173
+ expect(problems).to contain_warning(define_msg % :foo).on_line(7).in_column(16)
88
174
  end
89
175
  end
90
176
 
@@ -106,8 +192,31 @@ class foreman (
106
192
  end
107
193
 
108
194
  it 'should create two warnings' do
109
- expect(problems).to contain_warning(msg % :foo).on_line(7).in_column(15)
110
- expect(problems).to contain_warning(msg % :baz).on_line(7).in_column(27)
195
+ expect(problems).to contain_warning(class_msg % :foo).on_line(7).in_column(15)
196
+ expect(problems).to contain_warning(class_msg % :baz).on_line(7).in_column(27)
197
+ end
198
+ end
199
+
200
+ context 'define missing documentation ($bar::) for a second parameter' do
201
+ let(:code) do
202
+ <<-EOS.gsub(/^\s+/, '')
203
+ # Example define
204
+ #
205
+ # === Parameters:
206
+ #
207
+ # $bar:: example
208
+ #
209
+ define example($foo, $bar, $baz) { }
210
+ EOS
211
+ end
212
+
213
+ it 'should detect two problem' do
214
+ expect(problems).to have(2).problems
215
+ end
216
+
217
+ it 'should create two warnings' do
218
+ expect(problems).to contain_warning(define_msg % :foo).on_line(7).in_column(16)
219
+ expect(problems).to contain_warning(define_msg % :baz).on_line(7).in_column(28)
111
220
  end
112
221
  end
113
222
 
@@ -129,8 +238,31 @@ class foreman (
129
238
  end
130
239
 
131
240
  it 'should create two warnings' do
132
- expect(problems).to contain_warning(msg % :foo).on_line(7).in_column(15)
133
- expect(problems).to contain_warning(msg % :baz).on_line(7).in_column(27)
241
+ expect(problems).to contain_warning(class_msg % :foo).on_line(7).in_column(15)
242
+ expect(problems).to contain_warning(class_msg % :baz).on_line(7).in_column(27)
243
+ end
244
+ end
245
+
246
+ context 'define missing documentation ([*bar*]) for a second parameter' do
247
+ let(:code) do
248
+ <<-EOS.gsub(/^\s+/, '')
249
+ # Example define
250
+ #
251
+ # === Parameters:
252
+ #
253
+ # [*bar*] example
254
+ #
255
+ define example($foo, $bar, $baz) { }
256
+ EOS
257
+ end
258
+
259
+ it 'should detect two problem' do
260
+ expect(problems).to have(2).problems
261
+ end
262
+
263
+ it 'should create two warnings' do
264
+ expect(problems).to contain_warning(define_msg % :foo).on_line(7).in_column(16)
265
+ expect(problems).to contain_warning(define_msg % :baz).on_line(7).in_column(28)
134
266
  end
135
267
  end
136
268
 
@@ -152,6 +284,24 @@ class foreman (
152
284
  end
153
285
  end
154
286
 
287
+ context 'define with all parameters documented ($foo::)' do
288
+ let(:code) do
289
+ <<-EOS
290
+ # Example define
291
+ #
292
+ # === Parameters:
293
+ #
294
+ # $foo:: example
295
+ #
296
+ define example($foo) { }
297
+ EOS
298
+ end
299
+
300
+ it 'should not detect any problems' do
301
+ expect(problems).to have(0).problems
302
+ end
303
+ end
304
+
155
305
  context 'class with all parameters documented ([*foo*])' do
156
306
  let(:code) do
157
307
  <<-EOS
@@ -170,6 +320,24 @@ class foreman (
170
320
  end
171
321
  end
172
322
 
323
+ context 'define with all parameters documented ([*foo*])' do
324
+ let(:code) do
325
+ <<-EOS
326
+ # Example define
327
+ #
328
+ # === Parameters:
329
+ #
330
+ # [*foo*] example
331
+ #
332
+ define example($foo) { }
333
+ EOS
334
+ end
335
+
336
+ it 'should not detect any problems' do
337
+ expect(problems).to have(0).problems
338
+ end
339
+ end
340
+
173
341
  context 'class without parameters' do
174
342
  let(:code) { 'class example { }' }
175
343
 
@@ -178,6 +346,14 @@ class foreman (
178
346
  end
179
347
  end
180
348
 
349
+ context 'define without parameters' do
350
+ let(:code) { 'define example { }' }
351
+
352
+ it 'should not detect any problems' do
353
+ expect(problems).to have(0).problems
354
+ end
355
+ end
356
+
181
357
  context 'class without parameters and a function call' do
182
358
  let(:code) { 'class example { a($foo::bar) }' }
183
359
 
@@ -185,4 +361,12 @@ class foreman (
185
361
  expect(problems).to have(0).problems
186
362
  end
187
363
  end
364
+
365
+ context 'define without parameters and a function call' do
366
+ let(:code) { 'define example { a($foo::bar) }' }
367
+
368
+ it 'should not detect any problems' do
369
+ expect(problems).to have(0).problems
370
+ end
371
+ end
188
372
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet-lint-param-docs
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dominic Cleal
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-13 00:00:00.000000000 Z
11
+ date: 2015-06-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: puppet-lint
@@ -81,8 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  description: |2
84
- A new check for puppet-lint that validates all class parameters are
85
- documented.
84
+ A new check for puppet-lint that validates all parameters are documented.
86
85
  email: dcleal@redhat.com
87
86
  executables: []
88
87
  extensions: []
@@ -113,7 +112,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
113
112
  version: '0'
114
113
  requirements: []
115
114
  rubyforge_project:
116
- rubygems_version: 2.2.2
115
+ rubygems_version: 2.4.4
117
116
  signing_key:
118
117
  specification_version: 4
119
118
  summary: puppet-lint check to validate all parameters are documented