puppet-lint-resource_reference_syntax 1.0.14 → 1.1.0

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
- SHA1:
3
- metadata.gz: b4d49d1c29ba9ae2d623b28608f0830ed9ad519d
4
- data.tar.gz: 05917862e5e238a57adb9ea389f8c5a3e4a15261
2
+ SHA256:
3
+ metadata.gz: a46a1903b6d2e1c4f769806edb8969fd1aecfaa0be25a0fe8be7831a94fb634f
4
+ data.tar.gz: 7bd63f489f10957be998878845fb88be834390fe6f9947a040e3fffe78189ab5
5
5
  SHA512:
6
- metadata.gz: 2d534ade50b6749f69bd0dd3e479e6e267ddae29f825ac22428b8a2767d6d9d9392ac825acd179fa66cfc9f69c8efe1d569b6997f85251a1ce2344cf2a971f92
7
- data.tar.gz: c3b6eef005b06ba8c833555b3a8117fabe0dc68a0da9cecbb4f9c330116ff9a078535f83f8e2f51ad5466ac897d23af4ddcec159a1dfad7a46709705b3947661
6
+ metadata.gz: a5a10f947b16541ee913f1ad16a4ba2ffaa978c01228269c42b7a166b172b85911fd1f30752f41e87d67fea4da44637c5210974cae00def70ccdd6512d532d8f
7
+ data.tar.gz: 4b555f5fe5fb76d656dbad267d1756d53a19ae8dc07861a094f36c33542c687d2dcfa602ff38bc1d21a12ed44519dbfd16634c2d81d99ef0b986c72743e89f59
@@ -0,0 +1,39 @@
1
+ PuppetLint.new_check(:resource_reference_with_unquoted_title) do
2
+ def check
3
+ resource_indexes.each do |resource|
4
+ resource[:param_tokens].select { |param_token|
5
+ ['require', 'subscribe', 'notify', 'before', 'consume', 'export'].include? param_token.value
6
+ }.each do |param_token|
7
+ value_token = param_token.next_code_token
8
+ check = value_token.next_token
9
+ until resource[:param_tokens].include? check or not resource[:tokens].include? check or check.nil?
10
+ case value_token.next_token.type
11
+ when :CLASSREF
12
+ begin
13
+ if value_token.next_token.next_token.type == :LBRACK
14
+ check_token = value_token.next_token.next_token.next_token
15
+ if check_token.type == :NAME
16
+ notify :error, {
17
+ :message => 'unquoted title in resource reference',
18
+ :line => check_token.line,
19
+ :column => check_token.column,
20
+ :token => check_token,
21
+ }
22
+ end
23
+ end
24
+ value_token = value_token.next_token
25
+ check = value_token.next_token
26
+ end
27
+ else
28
+ value_token = value_token.next_token
29
+ check = value_token.next_token
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+ def fix(problem)
37
+ problem[:token].type = :SSTRING
38
+ end
39
+ end
@@ -18,12 +18,6 @@ PuppetLint.new_check(:resource_reference_without_title_capital) do
18
18
  :line => check_token.line,
19
19
  :column => check_token.column
20
20
  }
21
- elsif check_token.type == :NAME
22
- notify :error, {
23
- :message => 'resource reference with title with missing quotes',
24
- :line => check_token.line,
25
- :column => check_token.column
26
- }
27
21
  end
28
22
  end
29
23
  value_token = value_token.next_token
@@ -0,0 +1,207 @@
1
+ require 'spec_helper'
2
+
3
+ describe 'resource_reference_with_unquoted_title' do
4
+ let(:msg) { 'unquoted title in resource reference' }
5
+
6
+ context 'with fix disabled' do
7
+ context 'quoted resource ref on single line resource' do
8
+ let(:code) { "file { 'foo': require => File['bar'] }" }
9
+
10
+ it 'should not detect any problems' do
11
+ expect(problems).to have(0).problems
12
+ end
13
+ end
14
+
15
+ context 'unquoted resource ref on single line resource' do
16
+ let(:code) { "file { 'foo': require => File[bar] }" }
17
+
18
+ it 'should only detect a single problem' do
19
+ expect(problems).to have(1).problem
20
+ end
21
+
22
+ it 'should raise an error' do
23
+ expect(problems).to contain_error(msg).on_line(1).in_column(31)
24
+ end
25
+ end
26
+
27
+
28
+ context 'quoted resource ref on multi line resource' do
29
+ let(:code) do
30
+ <<-END
31
+ file { 'foo':
32
+ require => File['bar'],
33
+ }
34
+ END
35
+ end
36
+
37
+ it 'should not detect any problems' do
38
+ expect(problems).to have(0).problems
39
+ end
40
+ end
41
+
42
+ context 'unquoted resource ref on multi line resource' do
43
+ let(:code) do
44
+ <<-END
45
+ file { 'foo':
46
+ require => File[bar]
47
+ }
48
+ END
49
+ end
50
+
51
+ it 'should only detect a single problem' do
52
+ expect(problems).to have(1).problem
53
+ end
54
+
55
+ it 'should raise an error' do
56
+ expect(problems).to contain_error(msg).on_line(2).in_column(29)
57
+ end
58
+ end
59
+
60
+ context 'condensed resources with quoted refs' do
61
+ let(:code) do
62
+ <<-END
63
+ file {
64
+ 'foo':
65
+ require => File['bar'];
66
+ 'bar':
67
+ require => File['baz'];
68
+ }
69
+ END
70
+ end
71
+
72
+ it 'should not detect any problems' do
73
+ expect(problems).to have(0).problems
74
+ end
75
+ end
76
+
77
+ context 'condensed resources with an unquoted ref' do
78
+ let(:code) do
79
+ <<-END
80
+ file {
81
+ 'foo':
82
+ require => File[bar];
83
+ 'bar':
84
+ require => File['baz'];
85
+ }
86
+ END
87
+ end
88
+
89
+ it 'should only detect a single problem' do
90
+ expect(problems).to have(1).problem
91
+ end
92
+
93
+ it 'should raise an error' do
94
+ expect(problems).to contain_error(msg).on_line(3).in_column(31)
95
+ end
96
+ end
97
+
98
+ context 'resource refs with interpolated variables' do
99
+ let(:code) do
100
+ <<-END
101
+ $file = 'bar'
102
+
103
+ file { 'foo':
104
+ require => File[$file]
105
+ }
106
+ END
107
+ end
108
+
109
+ it 'should not detect any problems' do
110
+ expect(problems).to have(0).problems
111
+ end
112
+ end
113
+
114
+ end
115
+
116
+ context 'with fix enabled' do
117
+ before do
118
+ PuppetLint.configuration.fix = true
119
+ end
120
+
121
+ after do
122
+ PuppetLint.configuration.fix = false
123
+ end
124
+
125
+ context 'unquoted resource ref on single line resource' do
126
+ let(:code) { "file { 'foo': require => File[bar] }" }
127
+
128
+ it 'should only detect a single problem' do
129
+ expect(problems).to have(1).problem
130
+ end
131
+
132
+ it 'should fix the manifest' do
133
+ expect(problems).to contain_fixed(msg).on_line(1).in_column(31)
134
+ end
135
+
136
+ it 'should single quote the resource title' do
137
+ expect(manifest).to eq("file { 'foo': require => File['bar'] }")
138
+ end
139
+ end
140
+
141
+ context 'unquoted resource ref on multi line resource' do
142
+ let(:code) do
143
+ <<-END
144
+ file { 'foo':
145
+ require => File[bar]
146
+ }
147
+ END
148
+ end
149
+
150
+ let(:fixed) do
151
+ <<-END
152
+ file { 'foo':
153
+ require => File['bar']
154
+ }
155
+ END
156
+ end
157
+
158
+ it 'should only detect a single problem' do
159
+ expect(problems).to have(1).problem
160
+ end
161
+
162
+ it 'should fix the manifest' do
163
+ expect(problems).to contain_fixed(msg).on_line(2).in_column(29)
164
+ end
165
+
166
+ it 'should single quote the resource ref' do
167
+ expect(manifest).to eq(fixed)
168
+ end
169
+ end
170
+
171
+ context 'condensed resources with an unquoted ref' do
172
+ let(:code) do
173
+ <<-END
174
+ file {
175
+ 'foo':
176
+ require => File[bar];
177
+ 'bar':
178
+ require => File['baz'];
179
+ }
180
+ END
181
+ end
182
+
183
+ let(:fixed) do
184
+ <<-END
185
+ file {
186
+ 'foo':
187
+ require => File['bar'];
188
+ 'bar':
189
+ require => File['baz'];
190
+ }
191
+ END
192
+ end
193
+
194
+ it 'should only detect a single problem' do
195
+ expect(problems).to have(1).problem
196
+ end
197
+
198
+ it 'should fix the manifest' do
199
+ expect(problems).to contain_fixed(msg).on_line(3).in_column(31)
200
+ end
201
+
202
+ it 'should single quote the resource title' do
203
+ expect(manifest).to eq(fixed)
204
+ end
205
+ end
206
+ end
207
+ end
@@ -99,19 +99,6 @@ describe 'resource_reference_without_title_capital' do
99
99
  end
100
100
  end
101
101
 
102
- context 'resource reference with title without quotes' do
103
- let(:msg) { 'resource reference with title with missing quotes' }
104
- let(:code) { "file { 'foo': ensure => file, notify => Title[one],}" }
105
-
106
- it 'should only detect a single problem' do
107
- expect(problems).to have(1).problem
108
- end
109
-
110
- it 'should create an error' do
111
- expect(problems).to contain_error(msg).on_line(1)
112
- end
113
- end
114
-
115
102
  context 'stay within the parameter context' do
116
103
  let(:code) { "file { 'foo': ensure => file, notify => Title['One'],} $var = [ Exec[runsomething] ]" }
117
104
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet-lint-resource_reference_syntax
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.14
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Alfke
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-04 00:00:00.000000000 Z
11
+ date: 2020-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: puppet-lint
@@ -76,32 +76,32 @@ dependencies:
76
76
  name: rake
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - "~>"
79
+ - - ">="
80
80
  - !ruby/object:Gem::Version
81
81
  version: '0'
82
82
  type: :development
83
83
  prerelease: false
84
84
  version_requirements: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - "~>"
86
+ - - ">="
87
87
  - !ruby/object:Gem::Version
88
88
  version: '0'
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: simplecov
91
91
  requirement: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - "~>"
93
+ - - ">="
94
94
  - !ruby/object:Gem::Version
95
95
  version: '0'
96
96
  type: :development
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
- - - "~>"
100
+ - - ">="
101
101
  - !ruby/object:Gem::Version
102
102
  version: '0'
103
- description: |2
104
- Extends puppet-lint to ensure that the reference syntax follows Puppet 4 style
103
+ description: " Extends puppet-lint to ensure that the reference syntax follows
104
+ Puppet 4 style\n"
105
105
  email: ma@example42.com
106
106
  executables: []
107
107
  extensions: []
@@ -111,9 +111,11 @@ files:
111
111
  - LICENSE
112
112
  - README.md
113
113
  - lib/puppet-lint/plugins/resource_reference_chain_without_whitespace.rb
114
+ - lib/puppet-lint/plugins/resource_reference_with_unquoted_title.rb
114
115
  - lib/puppet-lint/plugins/resource_reference_without_title_capital.rb
115
116
  - lib/puppet-lint/plugins/resource_reference_without_whitespace.rb
116
117
  - spec/puppet-lint/plugins/resource_reference_chain_without_whitespace_spec.rb
118
+ - spec/puppet-lint/plugins/resource_reference_with_unquoted_title_spec.rb
117
119
  - spec/puppet-lint/plugins/resource_reference_without_title_capital_spec.rb
118
120
  - spec/puppet-lint/plugins/resource_reference_without_whitespace_spec.rb
119
121
  - spec/spec_helper.rb
@@ -137,12 +139,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
137
139
  version: '0'
138
140
  requirements: []
139
141
  rubyforge_project:
140
- rubygems_version: 2.4.8
142
+ rubygems_version: 2.7.7
141
143
  signing_key:
142
144
  specification_version: 4
143
145
  summary: puppet-lint reference_syntax check
144
146
  test_files:
145
- - spec/puppet-lint/plugins/resource_reference_chain_without_whitespace_spec.rb
146
- - spec/puppet-lint/plugins/resource_reference_without_title_capital_spec.rb
147
- - spec/puppet-lint/plugins/resource_reference_without_whitespace_spec.rb
148
147
  - spec/spec_helper.rb
148
+ - spec/puppet-lint/plugins/resource_reference_without_whitespace_spec.rb
149
+ - spec/puppet-lint/plugins/resource_reference_without_title_capital_spec.rb
150
+ - spec/puppet-lint/plugins/resource_reference_chain_without_whitespace_spec.rb
151
+ - spec/puppet-lint/plugins/resource_reference_with_unquoted_title_spec.rb