puppet-lint-module_reference-check 0.1.0 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 165ae50c695f4525d85426dea4ec555b9d4f44b7321f642d86783277319787fb
4
- data.tar.gz: 952b6da27bc82a66b29a23df6bae49ecd16e742750a94cb75f0ce0d4646af1f8
3
+ metadata.gz: 12922e4a40ec5041a4fdbd2859cbacb179d2ad3242a6c536a0396e14eeb21f53
4
+ data.tar.gz: 11cafcbe2535f7a2275825a53ff3c590e6ebd28c1ae9239775537a139eb6b061
5
5
  SHA512:
6
- metadata.gz: 96cdff2aed65b20e028d2093dc27668a7b32c8479ad3f552bc9bbdc59f655a6858d3ee2a36713367b949242978cd048854e0cb2c0a2b6cabd6d8c78caf476587
7
- data.tar.gz: 124c80e7b55984c5a06d2fc5ecf70e192625d8984003d2f9277fbce6d4130e08028c4ce6140d4ae1105d44e6d155e6d9eee7ec7ef704212a6424204841c3f3ad
6
+ metadata.gz: 558649a232611019dfec62b41f410086855a19d8014e01e42f742d8007b40253a652d913434624d026055fa287d6716cf10344da0ec26756384c2ec43c357ac2
7
+ data.tar.gz: 55e2eb095791d72415cd9b09ec4b8adcbe0722f8e6679349ed36bfbf1fe2164087a972ec2794565cba91484265f86a2fb74466451f4591c206a7208e062f98b3
data/README.md CHANGED
@@ -20,6 +20,9 @@ This checks whether used modules are properly referenced in the comments by thes
20
20
  - internal modules
21
21
  - modules referenced by features
22
22
 
23
+ **Note**: This check can only detect component module usage with the `class` and `include` keywords, but supports
24
+ reference comments to undetectable components modules as well.
25
+
23
26
  ## Usage
24
27
 
25
28
  To use the plugin, add the following line to the Gemfile:
@@ -130,7 +130,7 @@ PuppetLint.new_check(:module_reference) do
130
130
  return return_object if captures['name'].match?(%r(https?://))
131
131
 
132
132
  reference = @workflow.references.select { |ref| ref[:name] == captures['name'] }
133
- return warn("Can't find referenced module #{captures['name']}") if reference.empty?
133
+ return return_object if reference.empty?
134
134
 
135
135
  return_object[:type] = reference.first[:type]
136
136
  else
@@ -146,6 +146,9 @@ PuppetLint.new_check(:module_reference) do
146
146
  break
147
147
  end
148
148
  end
149
+ comments[index + 1]&.match(/^@note (?<name>.+)$/) do |matchdata|
150
+ return_object[:name] = matchdata['name']
151
+ end
149
152
  end
150
153
  return_object
151
154
  end
@@ -53,7 +53,7 @@ class Reference
53
53
  feature_includes = []
54
54
  tokens.reject { |token| %i[WHITESPACE NEWLINE INDENT].include? token.type }.each do |token|
55
55
  @current_token = token
56
- @workflow.got_include if token.value == 'include'
56
+ @workflow.got_include if token.type == :NAME && token.value == 'include' && token.next_code_token&.type == :NAME
57
57
  @workflow.got_class if token.value == 'class'
58
58
  @workflow.got_features_start if token.value == 'role::include_features'
59
59
  @workflow.got_feature if token.type == :LBRACK && @workflow.current == :awaiting_feature
@@ -34,6 +34,67 @@ describe 'module_reference' do
34
34
  end
35
35
  end
36
36
 
37
+ context 'valid code with reference to unused module' do
38
+ let(:code) do
39
+ <<~CODE
40
+ # @ref apache
41
+ # @note puppetlabs-apache
42
+ # @see https://forge.puppet.com/modules/puppetlabs/apache
43
+ #
44
+ # @see profile::test
45
+ #
46
+ # @see profile::testfeature - Feature "test"
47
+ class test () {
48
+ include profile::test
49
+ class {
50
+ 'apache':
51
+ }
52
+ include apache
53
+ }
54
+ CODE
55
+ end
56
+
57
+ it 'should detect detect any problems' do
58
+ expect(problems).to have(0).problems
59
+ end
60
+ end
61
+
62
+ context 'valid code with correctly sorted reference to undetectable component module' do
63
+ let(:code) do
64
+ <<~CODE
65
+ # @ref foo
66
+ # @note undetected-a
67
+ # @see https://forge.puppet.com/modules/undetected/a
68
+ # @ref bar
69
+ # @note undetected-b
70
+ # @see https://forge.puppet.com/modules/undetected/b
71
+ class test () {
72
+ }
73
+ CODE
74
+ end
75
+
76
+ it 'should detect detect any problems' do
77
+ expect(problems).to have(0).problems
78
+ end
79
+ end
80
+
81
+ context 'valid code with using include in a different context' do
82
+ let(:code) do
83
+ <<~CODE
84
+ class test () {
85
+ $a = {
86
+ include => 'something'
87
+ }
88
+ $a.reduce({})
89
+ }
90
+ CODE
91
+ end
92
+
93
+ it 'should detect detect any problems' do
94
+ expect(problems).to have(0).problems
95
+ end
96
+ end
97
+
37
98
  context 'code with missing internal link' do
38
99
  let(:code) do
39
100
  <<~CODE
@@ -165,35 +226,6 @@ describe 'module_reference' do
165
226
  end
166
227
  end
167
228
 
168
- context 'code with reference to unused module' do
169
- let(:code) do
170
- <<~CODE
171
- # @ref apache
172
- # @note puppetlabs-apache
173
- # @see https://forge.puppet.com/modules/puppetlabs/apache
174
- #
175
- # @see profile::test
176
- #
177
- # @see profile::testfeature - Feature "test"
178
- class test () {
179
- include profile::test
180
- class {
181
- 'apache':
182
- }
183
- include apache
184
- }
185
- CODE
186
- end
187
-
188
- it 'should detect exactly one problem' do
189
- expect(problems).to have(1).problems
190
- end
191
-
192
- it 'should create a warning' do
193
- expect(problems).to contain_warning('Can\'t find referenced module profile::testfeature').on_line(1).in_column(1)
194
- end
195
- end
196
-
197
229
  context 'code with unsorted component references' do
198
230
  let(:code) do
199
231
  <<~CODE
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet-lint-module_reference-check
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dennis Ploeger