puppet-lint 2.1.0 → 2.1.1
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 +4 -4
- data/.travis.yml +6 -4
- data/CHANGELOG.md +41 -20
- data/lib/puppet-lint/lexer.rb +10 -0
- data/lib/puppet-lint/plugins/check_classes.rb +17 -7
- data/lib/puppet-lint/plugins/check_whitespace.rb +40 -6
- data/lib/puppet-lint/version.rb +1 -1
- data/spec/puppet-lint/lexer_spec.rb +6 -0
- data/spec/puppet-lint/plugins/check_classes/variable_scope_spec.rb +12 -0
- data/spec/puppet-lint/plugins/check_whitespace/arrow_alignment_spec.rb +105 -0
- metadata +8 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 09c3216991dd5d40c797bb951adeef212f612456
|
|
4
|
+
data.tar.gz: ac37d47099b67bf5693ce27b8312fcff4648419e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f66775062fc637446250708ff5fb9fb5106a38bc758a6276bf325a7db6b97c4a50f528b964cc0bda44e1c550c8cc2b38ac0d83489dc1f97e9508c2a43c350337
|
|
7
|
+
data.tar.gz: 41b45bc46f3be42f046319ffdc588cdc70df842da61cdd098e032b44ba752d805128a88d95296b66b91d35313608230dff491de010e5e10f195ec9bb184e4498
|
data/.travis.yml
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
language: ruby
|
|
3
3
|
sudo: false
|
|
4
|
-
|
|
5
|
-
before_install: gem update --system 2.1.11
|
|
4
|
+
before_install: gem update --system && gem install bundler
|
|
6
5
|
branches:
|
|
7
6
|
only:
|
|
8
7
|
- master
|
|
@@ -12,8 +11,11 @@ rvm:
|
|
|
12
11
|
- 1.9.3
|
|
13
12
|
- 2.0.0
|
|
14
13
|
- 2.1.9
|
|
15
|
-
- 2.2.4
|
|
16
14
|
- 2.3.1
|
|
15
|
+
- 2.4.0
|
|
16
|
+
matrix:
|
|
17
|
+
allow_failures:
|
|
18
|
+
- rvm: 1.8.7
|
|
17
19
|
notifications:
|
|
18
20
|
email:
|
|
19
|
-
- tim@
|
|
21
|
+
- tim@bombasticmonkey.com
|
data/CHANGELOG.md
CHANGED
|
@@ -1,40 +1,58 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## [2.1.1](https://github.com/rodjek/puppet-lint/tree/2.1.1) (2017-02-13)
|
|
4
|
+
[Full Changelog](https://github.com/rodjek/puppet-lint/compare/2.1.0...2.1.1)
|
|
5
|
+
|
|
6
|
+
**Closed issues:**
|
|
7
|
+
|
|
8
|
+
- False positive detection in double quoted string containing no variables [\#618](https://github.com/rodjek/puppet-lint/issues/618)
|
|
9
|
+
- Warning and error classification [\#614](https://github.com/rodjek/puppet-lint/issues/614)
|
|
10
|
+
- Top-scope with multiple assignment using split [\#550](https://github.com/rodjek/puppet-lint/issues/550)
|
|
11
|
+
- Strange error about indent with comments [\#475](https://github.com/rodjek/puppet-lint/issues/475)
|
|
12
|
+
- Hash of hashes with long keys causes irrational warnings and crashes --fix [\#424](https://github.com/rodjek/puppet-lint/issues/424)
|
|
13
|
+
- Wrong arrow alignment when key has interpolated variable [\#416](https://github.com/rodjek/puppet-lint/issues/416)
|
|
14
|
+
- indentation of =\> is not properly aligned in hash within array [\#333](https://github.com/rodjek/puppet-lint/issues/333)
|
|
15
|
+
|
|
16
|
+
**Merged pull requests:**
|
|
17
|
+
|
|
18
|
+
- Correctly handle strings-with-variables as hash keys in arrow\_alignment check [\#621](https://github.com/rodjek/puppet-lint/pull/621) ([rodjek](https://github.com/rodjek))
|
|
19
|
+
- Support array of variables on left side of an assign operation [\#617](https://github.com/rodjek/puppet-lint/pull/617) ([rodjek](https://github.com/rodjek))
|
|
20
|
+
- Test against Ruby 2.4.0 [\#616](https://github.com/rodjek/puppet-lint/pull/616) ([rodjek](https://github.com/rodjek))
|
|
21
|
+
- Calculate arrow column from first parameter position, not the start of the line [\#615](https://github.com/rodjek/puppet-lint/pull/615) ([rodjek](https://github.com/rodjek))
|
|
22
|
+
- Do not test against Ruby 2.2 [\#613](https://github.com/rodjek/puppet-lint/pull/613) ([ghoneycutt](https://github.com/ghoneycutt))
|
|
23
|
+
|
|
3
24
|
## [2.1.0](https://github.com/rodjek/puppet-lint/tree/2.1.0) (2016-12-30)
|
|
4
25
|
[Full Changelog](https://github.com/rodjek/puppet-lint/compare/2.0.2...2.1.0)
|
|
5
26
|
|
|
6
27
|
**Closed issues:**
|
|
7
28
|
|
|
8
|
-
- No documentation on how to use plugins [\#602](https://github.com/rodjek/puppet-lint/issues/602)
|
|
9
29
|
- Excessive number of warnings from code\_on\_top\_scope [\#579](https://github.com/rodjek/puppet-lint/issues/579)
|
|
10
30
|
- Syntax error for references starting with Regexp [\#566](https://github.com/rodjek/puppet-lint/issues/566)
|
|
11
31
|
- --fix flag discoverability is low [\#556](https://github.com/rodjek/puppet-lint/issues/556)
|
|
12
32
|
- Module names must only contain lowercase letters [\#554](https://github.com/rodjek/puppet-lint/issues/554)
|
|
13
|
-
- incorrect error on inline template [\#545](https://github.com/rodjek/puppet-lint/issues/545)
|
|
14
|
-
- parameter\_order check does not work default hash is added in parameter [\#544](https://github.com/rodjek/puppet-lint/issues/544)
|
|
15
33
|
- Remove formatting with `linenumber` [\#539](https://github.com/rodjek/puppet-lint/issues/539)
|
|
16
|
-
- Incorrect warning of required parameter when using array that includes variable. [\#537](https://github.com/rodjek/puppet-lint/issues/537)
|
|
17
34
|
- names\_containing\_dash is broken and unignorable [\#534](https://github.com/rodjek/puppet-lint/issues/534)
|
|
18
35
|
- Puppet-lint 2.0 fails on unquoted string starting with underscore. [\#531](https://github.com/rodjek/puppet-lint/issues/531)
|
|
36
|
+
- puppet-lint reports incorrect line numbers [\#403](https://github.com/rodjek/puppet-lint/issues/403)
|
|
37
|
+
- Release version 2.1.0 [\#610](https://github.com/rodjek/puppet-lint/issues/610)
|
|
38
|
+
- No documentation on how to use plugins [\#602](https://github.com/rodjek/puppet-lint/issues/602)
|
|
39
|
+
- incorrect error on inline template [\#545](https://github.com/rodjek/puppet-lint/issues/545)
|
|
40
|
+
- parameter\_order check does not work default hash is added in parameter [\#544](https://github.com/rodjek/puppet-lint/issues/544)
|
|
41
|
+
- Incorrect warning of required parameter when using array that includes variable. [\#537](https://github.com/rodjek/puppet-lint/issues/537)
|
|
19
42
|
- syntax error on valid file when: if /regex/ in array [\#517](https://github.com/rodjek/puppet-lint/issues/517)
|
|
20
43
|
- crashes if there is a \# line:endignore with no begining. [\#509](https://github.com/rodjek/puppet-lint/issues/509)
|
|
21
44
|
- Wrong behaviour of variable\_contains\_dash [\#504](https://github.com/rodjek/puppet-lint/issues/504)
|
|
22
|
-
-
|
|
45
|
+
- Start a CHANGELOG, make updates part of the build workflow [\#479](https://github.com/rodjek/puppet-lint/issues/479)
|
|
46
|
+
- Nested future scope blocks lose local variables from parent scopes. [\#456](https://github.com/rodjek/puppet-lint/issues/456)
|
|
47
|
+
- block-local variables \(|$x|\) don't properly get recognized when used as arrays or hashes [\#450](https://github.com/rodjek/puppet-lint/issues/450)
|
|
23
48
|
- lint ignore comments feature not documented [\#369](https://github.com/rodjek/puppet-lint/issues/369)
|
|
24
49
|
|
|
25
50
|
**Merged pull requests:**
|
|
26
51
|
|
|
27
|
-
-
|
|
52
|
+
- 2.1.0 Release [\#612](https://github.com/rodjek/puppet-lint/pull/612) ([rnelson0](https://github.com/rnelson0))
|
|
28
53
|
- Puppet-lint version bump to 2.1.0.pre [\#608](https://github.com/rodjek/puppet-lint/pull/608) ([rnelson0](https://github.com/rnelson0))
|
|
29
|
-
- \(\#369\) Document existence of control comments [\#600](https://github.com/rodjek/puppet-lint/pull/600) ([rnelson0](https://github.com/rnelson0))
|
|
30
54
|
- Ignore \*.pp files at the top level [\#597](https://github.com/rodjek/puppet-lint/pull/597) ([rnelson0](https://github.com/rnelson0))
|
|
31
55
|
- Show logs in rspec tests [\#596](https://github.com/rodjek/puppet-lint/pull/596) ([ghoneycutt](https://github.com/ghoneycutt))
|
|
32
|
-
- \(\#517\) Update the allowed tokens prior to a regex [\#594](https://github.com/rodjek/puppet-lint/pull/594) ([rnelson0](https://github.com/rnelson0))
|
|
33
|
-
- \(\#531\) Treat barewords beginning with an underscore as :NAME tokens [\#593](https://github.com/rodjek/puppet-lint/pull/593) ([rnelson0](https://github.com/rnelson0))
|
|
34
|
-
- \(\#544, \#537\) Skip hash contents when checking optional parameters [\#592](https://github.com/rodjek/puppet-lint/pull/592) ([rnelson0](https://github.com/rnelson0))
|
|
35
|
-
- \(\#545\) Exempt inline\_epp and inline\_template from single quoted strin… [\#591](https://github.com/rodjek/puppet-lint/pull/591) ([rnelson0](https://github.com/rnelson0))
|
|
36
|
-
- Disable code\_on\_top\_scope by default until the noise can be reduced \(… [\#590](https://github.com/rodjek/puppet-lint/pull/590) ([rnelson0](https://github.com/rnelson0))
|
|
37
|
-
- Changelog generator task [\#589](https://github.com/rodjek/puppet-lint/pull/589) ([rnelson0](https://github.com/rnelson0))
|
|
38
56
|
- Count lines in comments and double quoted strings [\#577](https://github.com/rodjek/puppet-lint/pull/577) ([paran1](https://github.com/paran1))
|
|
39
57
|
- Handle mismatched control comments gracefully [\#573](https://github.com/rodjek/puppet-lint/pull/573) ([rodjek](https://github.com/rodjek))
|
|
40
58
|
- Reimplementation of --fix support for unenclosed variables delimited by dashes [\#572](https://github.com/rodjek/puppet-lint/pull/572) ([rodjek](https://github.com/rodjek))
|
|
@@ -50,18 +68,23 @@
|
|
|
50
68
|
- Updates PR for \#223 [\#552](https://github.com/rodjek/puppet-lint/pull/552) ([binford2k](https://github.com/binford2k))
|
|
51
69
|
- add legacy\_facts [\#543](https://github.com/rodjek/puppet-lint/pull/543) ([mmckinst](https://github.com/mmckinst))
|
|
52
70
|
- Remove formatting with `linenumber` [\#540](https://github.com/rodjek/puppet-lint/pull/540) ([rski](https://github.com/rski))
|
|
53
|
-
- Adding support for logging to STDOUT as JSON [\#487](https://github.com/rodjek/puppet-lint/pull/487) ([binford2k](https://github.com/binford2k))
|
|
54
71
|
- Potential README changes [\#420](https://github.com/rodjek/puppet-lint/pull/420) ([rothsa](https://github.com/rothsa))
|
|
55
72
|
- Add fix to "ensure found on line but it's not the first attribute" [\#375](https://github.com/rodjek/puppet-lint/pull/375) ([sathieu](https://github.com/sathieu))
|
|
73
|
+
- Documentation on plugin usage. [\#611](https://github.com/rodjek/puppet-lint/pull/611) ([rnelson0](https://github.com/rnelson0))
|
|
74
|
+
- \(\#369\) Document existence of control comments [\#600](https://github.com/rodjek/puppet-lint/pull/600) ([rnelson0](https://github.com/rnelson0))
|
|
75
|
+
- \(\#517\) Update the allowed tokens prior to a regex [\#594](https://github.com/rodjek/puppet-lint/pull/594) ([rnelson0](https://github.com/rnelson0))
|
|
76
|
+
- \(\#531\) Treat barewords beginning with an underscore as :NAME tokens [\#593](https://github.com/rodjek/puppet-lint/pull/593) ([rnelson0](https://github.com/rnelson0))
|
|
77
|
+
- \(\#544, \#537\) Skip hash contents when checking optional parameters [\#592](https://github.com/rodjek/puppet-lint/pull/592) ([rnelson0](https://github.com/rnelson0))
|
|
78
|
+
- \(\#545\) Exempt inline\_epp and inline\_template from single quoted strin… [\#591](https://github.com/rodjek/puppet-lint/pull/591) ([rnelson0](https://github.com/rnelson0))
|
|
79
|
+
- Disable code\_on\_top\_scope by default until the noise can be reduced \(… [\#590](https://github.com/rodjek/puppet-lint/pull/590) ([rnelson0](https://github.com/rnelson0))
|
|
80
|
+
- Changelog generator task [\#589](https://github.com/rodjek/puppet-lint/pull/589) ([rnelson0](https://github.com/rnelson0))
|
|
81
|
+
- Adding support for logging to STDOUT as JSON [\#487](https://github.com/rodjek/puppet-lint/pull/487) ([binford2k](https://github.com/binford2k))
|
|
56
82
|
|
|
57
83
|
## [2.0.2](https://github.com/rodjek/puppet-lint/tree/2.0.2) (2016-08-19)
|
|
58
84
|
[Full Changelog](https://github.com/rodjek/puppet-lint/compare/2.0.1...2.0.2)
|
|
59
85
|
|
|
60
86
|
**Closed issues:**
|
|
61
87
|
|
|
62
|
-
- Start a CHANGELOG, make updates part of the build workflow [\#479](https://github.com/rodjek/puppet-lint/issues/479)
|
|
63
|
-
- Nested future scope blocks lose local variables from parent scopes. [\#456](https://github.com/rodjek/puppet-lint/issues/456)
|
|
64
|
-
- block-local variables \(|$x|\) don't properly get recognized when used as arrays or hashes [\#450](https://github.com/rodjek/puppet-lint/issues/450)
|
|
65
88
|
- Option to choose version of the puppet style guide [\#190](https://github.com/rodjek/puppet-lint/issues/190)
|
|
66
89
|
|
|
67
90
|
**Merged pull requests:**
|
|
@@ -72,8 +95,6 @@
|
|
|
72
95
|
## [2.0.1](https://github.com/rodjek/puppet-lint/tree/2.0.1) (2016-08-18)
|
|
73
96
|
[Full Changelog](https://github.com/rodjek/puppet-lint/compare/2.0.0...2.0.1)
|
|
74
97
|
|
|
75
|
-
**Starting with v2.0.1, puppet-lint is deprecating support for Ruby 1.8.7.** Support will be removed in the next major release.
|
|
76
|
-
|
|
77
98
|
**Closed issues:**
|
|
78
99
|
|
|
79
100
|
- Changelog on Github pages is out of date [\#520](https://github.com/rodjek/puppet-lint/issues/520)
|
|
@@ -727,4 +748,4 @@ If the additional gems you use for checks are pinned to 1.x, you should pin pupp
|
|
|
727
748
|
## [0.0.1](https://github.com/rodjek/puppet-lint/tree/0.0.1) (2011-08-15)
|
|
728
749
|
|
|
729
750
|
|
|
730
|
-
\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
|
|
751
|
+
\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
|
data/lib/puppet-lint/lexer.rb
CHANGED
|
@@ -309,6 +309,16 @@ class PuppetLint
|
|
|
309
309
|
end
|
|
310
310
|
|
|
311
311
|
@column += length
|
|
312
|
+
|
|
313
|
+
# If creating a :VARIABLE token inside a double quoted string, add 3 to
|
|
314
|
+
# the column state in order to account for the ${} characters when
|
|
315
|
+
# rendering out to manifest.
|
|
316
|
+
if token.type == :VARIABLE
|
|
317
|
+
if !token.prev_code_token.nil? && [:DQPRE, :DQMID].include?(token.prev_code_token.type)
|
|
318
|
+
@column += 3
|
|
319
|
+
end
|
|
320
|
+
end
|
|
321
|
+
|
|
312
322
|
if type == :NEWLINE
|
|
313
323
|
@line_no += 1
|
|
314
324
|
@column = 1
|
|
@@ -298,17 +298,27 @@ PuppetLint.new_check(:variable_scope) do
|
|
|
298
298
|
temp_scope_vars = []
|
|
299
299
|
|
|
300
300
|
object_tokens.each do |token|
|
|
301
|
-
|
|
301
|
+
case token.type
|
|
302
|
+
when :EQUALS
|
|
303
|
+
if token.prev_code_token.type == :VARIABLE
|
|
304
|
+
variables_in_scope << token.prev_code_token.value
|
|
305
|
+
elsif token.prev_code_token.type == :RBRACK
|
|
306
|
+
temp_token = token.prev_code_token
|
|
307
|
+
|
|
308
|
+
until temp_token.type == :LBRACK do
|
|
309
|
+
if temp_token.type == :VARIABLE
|
|
310
|
+
variables_in_scope << temp_token.value
|
|
311
|
+
end
|
|
312
|
+
temp_token = temp_token.prev_code_token
|
|
313
|
+
end
|
|
314
|
+
end
|
|
315
|
+
when :VARIABLE
|
|
302
316
|
if in_pipe
|
|
303
317
|
temp_scope_vars << token.value
|
|
304
318
|
else
|
|
305
|
-
|
|
306
|
-
variables_in_scope << token.value
|
|
307
|
-
else
|
|
308
|
-
referenced_variables << token
|
|
309
|
-
end
|
|
319
|
+
referenced_variables << token
|
|
310
320
|
end
|
|
311
|
-
|
|
321
|
+
when :PIPE
|
|
312
322
|
in_pipe = !in_pipe
|
|
313
323
|
|
|
314
324
|
if in_pipe
|
|
@@ -128,6 +128,7 @@ PuppetLint.new_check(:arrow_alignment) do
|
|
|
128
128
|
indent_depth = [0]
|
|
129
129
|
indent_depth_idx = 0
|
|
130
130
|
level_tokens = []
|
|
131
|
+
param_column = [nil]
|
|
131
132
|
resource_tokens = res_idx[:tokens]
|
|
132
133
|
resource_tokens.reject! do |token|
|
|
133
134
|
COMMENT_TYPES.include? token.type
|
|
@@ -143,9 +144,29 @@ PuppetLint.new_check(:arrow_alignment) do
|
|
|
143
144
|
resource_tokens.each_with_index do |token, idx|
|
|
144
145
|
if token.type == :FARROW
|
|
145
146
|
(level_tokens[indent_depth_idx] ||= []) << token
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
147
|
+
param_token = token.prev_code_token
|
|
148
|
+
|
|
149
|
+
if param_token.type == :DQPOST
|
|
150
|
+
param_length = 0
|
|
151
|
+
iter_token = param_token
|
|
152
|
+
while iter_token.type != :DQPRE do
|
|
153
|
+
param_length += iter_token.to_manifest.length
|
|
154
|
+
iter_token = iter_token.prev_token
|
|
155
|
+
end
|
|
156
|
+
param_length += iter_token.to_manifest.length
|
|
157
|
+
else
|
|
158
|
+
param_length = param_token.to_manifest.length
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
if param_column[indent_depth_idx].nil?
|
|
162
|
+
if param_token.type == :DQPOST
|
|
163
|
+
param_column[indent_depth_idx] = iter_token.column
|
|
164
|
+
else
|
|
165
|
+
param_column[indent_depth_idx] = param_token.column
|
|
166
|
+
end
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
indent_length = param_column[indent_depth_idx] + param_length + 1
|
|
149
170
|
|
|
150
171
|
if indent_depth[indent_depth_idx] < indent_length
|
|
151
172
|
indent_depth[indent_depth_idx] = indent_length
|
|
@@ -155,6 +176,7 @@ PuppetLint.new_check(:arrow_alignment) do
|
|
|
155
176
|
indent_depth_idx += 1
|
|
156
177
|
indent_depth << 0
|
|
157
178
|
level_tokens[indent_depth_idx] ||= []
|
|
179
|
+
param_column << nil
|
|
158
180
|
elsif token.type == :RBRACE || token.type == :SEMIC
|
|
159
181
|
level_tokens[indent_depth_idx].each do |arrow_tok|
|
|
160
182
|
unless arrow_tok.column == indent_depth[indent_depth_idx] || level_tokens[indent_depth_idx].size == 1
|
|
@@ -166,7 +188,7 @@ PuppetLint.new_check(:arrow_alignment) do
|
|
|
166
188
|
:token => arrow_tok,
|
|
167
189
|
:indent_depth => indent_depth[indent_depth_idx],
|
|
168
190
|
:newline => !(arrows_on_line.index(arrow_tok) == 0),
|
|
169
|
-
:newline_indent =>
|
|
191
|
+
:newline_indent => param_column[indent_depth_idx] - 1,
|
|
170
192
|
}
|
|
171
193
|
end
|
|
172
194
|
end
|
|
@@ -179,7 +201,19 @@ PuppetLint.new_check(:arrow_alignment) do
|
|
|
179
201
|
end
|
|
180
202
|
|
|
181
203
|
def fix(problem)
|
|
182
|
-
|
|
204
|
+
param_token = problem[:token].prev_code_token
|
|
205
|
+
if param_token.type == :DQPOST
|
|
206
|
+
param_length = 0
|
|
207
|
+
iter_token = param_token
|
|
208
|
+
while iter_token.type != :DQPRE do
|
|
209
|
+
param_length += iter_token.to_manifest.length
|
|
210
|
+
iter_token = iter_token.prev_token
|
|
211
|
+
end
|
|
212
|
+
param_length += iter_token.to_manifest.length
|
|
213
|
+
else
|
|
214
|
+
param_length = param_token.to_manifest.length
|
|
215
|
+
end
|
|
216
|
+
new_ws_len = (problem[:indent_depth] - (problem[:newline_indent] + param_length + 1))
|
|
183
217
|
new_ws = ' ' * new_ws_len
|
|
184
218
|
if problem[:newline]
|
|
185
219
|
index = tokens.index(problem[:token].prev_code_token.prev_token)
|
|
@@ -189,7 +223,7 @@ PuppetLint.new_check(:arrow_alignment) do
|
|
|
189
223
|
|
|
190
224
|
# indent the parameter to the correct depth
|
|
191
225
|
problem[:token].prev_code_token.prev_token.type = :INDENT
|
|
192
|
-
problem[:token].prev_code_token.prev_token.value = problem[:newline_indent]
|
|
226
|
+
problem[:token].prev_code_token.prev_token.value = ' ' * problem[:newline_indent]
|
|
193
227
|
end
|
|
194
228
|
|
|
195
229
|
if problem[:token].prev_token.type == :WHITESPACE
|
data/lib/puppet-lint/version.rb
CHANGED
|
@@ -516,6 +516,12 @@ describe PuppetLint::Lexer do
|
|
|
516
516
|
expect(tokens[2].line).to eq(1)
|
|
517
517
|
expect(tokens[2].column).to eq(6)
|
|
518
518
|
end
|
|
519
|
+
|
|
520
|
+
it 'should calculate the column number correctly after an enclosed variable' do
|
|
521
|
+
token = @lexer.tokenise(' "${foo}" =>').last
|
|
522
|
+
expect(token.type).to eq(:FARROW)
|
|
523
|
+
expect(token.column).to eq(12)
|
|
524
|
+
end
|
|
519
525
|
end
|
|
520
526
|
|
|
521
527
|
[
|
|
@@ -196,4 +196,16 @@ describe 'variable_scope' do
|
|
|
196
196
|
expect(problems).to have(0).problems
|
|
197
197
|
end
|
|
198
198
|
end
|
|
199
|
+
|
|
200
|
+
context 'multiple left hand variable assign' do
|
|
201
|
+
let(:code) { "
|
|
202
|
+
class test {
|
|
203
|
+
[$foo, $bar] = something()
|
|
204
|
+
}
|
|
205
|
+
" }
|
|
206
|
+
|
|
207
|
+
it 'should not detect any problems' do
|
|
208
|
+
expect(problems).to have(0).problems
|
|
209
|
+
end
|
|
210
|
+
end
|
|
199
211
|
end
|
|
@@ -332,6 +332,76 @@ describe 'arrow_alignment' do
|
|
|
332
332
|
end
|
|
333
333
|
end
|
|
334
334
|
|
|
335
|
+
context 'multiline hash with opening brace on same line as first pair' do
|
|
336
|
+
let(:code) { "
|
|
337
|
+
foo { 'foo':
|
|
338
|
+
bar => [
|
|
339
|
+
{ aa => bb,
|
|
340
|
+
c => d},
|
|
341
|
+
],
|
|
342
|
+
}
|
|
343
|
+
" }
|
|
344
|
+
|
|
345
|
+
it 'should not detect any problems' do
|
|
346
|
+
expect(problems).to have(0).problems
|
|
347
|
+
end
|
|
348
|
+
end
|
|
349
|
+
|
|
350
|
+
context 'unaligned multiline hash with opening brace on the same line as the first pair' do
|
|
351
|
+
let(:code) { "
|
|
352
|
+
foo { 'foo':
|
|
353
|
+
bar => [
|
|
354
|
+
{ aa => bb,
|
|
355
|
+
c => d},
|
|
356
|
+
],
|
|
357
|
+
}
|
|
358
|
+
" }
|
|
359
|
+
|
|
360
|
+
it 'should detect one problem' do
|
|
361
|
+
expect(problems).to have(1).problem
|
|
362
|
+
end
|
|
363
|
+
|
|
364
|
+
it 'should create one warning' do
|
|
365
|
+
expect(problems).to contain_warning(sprintf(msg,18,17)).on_line(5).in_column(17)
|
|
366
|
+
end
|
|
367
|
+
end
|
|
368
|
+
|
|
369
|
+
context 'hash with strings containing variables as keys properly aligned' do
|
|
370
|
+
let(:code) { '
|
|
371
|
+
foo { foo:
|
|
372
|
+
param => {
|
|
373
|
+
a => 1
|
|
374
|
+
"${aoeu}" => 2,
|
|
375
|
+
b => 3,
|
|
376
|
+
},
|
|
377
|
+
}
|
|
378
|
+
' }
|
|
379
|
+
|
|
380
|
+
it 'should not detect any problems' do
|
|
381
|
+
expect(problems).to have(0).problems
|
|
382
|
+
end
|
|
383
|
+
end
|
|
384
|
+
|
|
385
|
+
context 'hash with strings containing variables as keys incorrectly aligned' do
|
|
386
|
+
let(:code) { '
|
|
387
|
+
foo { foo:
|
|
388
|
+
param => {
|
|
389
|
+
a => 1
|
|
390
|
+
"${aoeu}" => 2,
|
|
391
|
+
b => 3,
|
|
392
|
+
},
|
|
393
|
+
}
|
|
394
|
+
' }
|
|
395
|
+
|
|
396
|
+
it 'should detect 2 problems' do
|
|
397
|
+
expect(problems).to have(2).problems
|
|
398
|
+
end
|
|
399
|
+
|
|
400
|
+
it 'should create 2 warnings' do
|
|
401
|
+
expect(problems).to contain_warning(sprintf(msg,23,15)).on_line(4).in_column(15)
|
|
402
|
+
expect(problems).to contain_warning(sprintf(msg,23,19)).on_line(6).in_column(19)
|
|
403
|
+
end
|
|
404
|
+
end
|
|
335
405
|
end
|
|
336
406
|
|
|
337
407
|
context 'with fix enabled' do
|
|
@@ -570,5 +640,40 @@ describe 'arrow_alignment' do
|
|
|
570
640
|
expect(manifest).to eq(fixed)
|
|
571
641
|
end
|
|
572
642
|
end
|
|
643
|
+
|
|
644
|
+
context 'hash with strings containing variables as keys incorrectly aligned' do
|
|
645
|
+
let(:code) { '
|
|
646
|
+
foo { foo:
|
|
647
|
+
param => {
|
|
648
|
+
a => 1
|
|
649
|
+
"${aoeu}" => 2,
|
|
650
|
+
b => 3,
|
|
651
|
+
},
|
|
652
|
+
}
|
|
653
|
+
' }
|
|
654
|
+
let(:fixed) { '
|
|
655
|
+
foo { foo:
|
|
656
|
+
param => {
|
|
657
|
+
a => 1
|
|
658
|
+
"${aoeu}" => 2,
|
|
659
|
+
b => 3,
|
|
660
|
+
},
|
|
661
|
+
}
|
|
662
|
+
' }
|
|
663
|
+
|
|
664
|
+
|
|
665
|
+
it 'should detect 2 problems' do
|
|
666
|
+
expect(problems).to have(2).problems
|
|
667
|
+
end
|
|
668
|
+
|
|
669
|
+
it 'should fix 2 problems' do
|
|
670
|
+
expect(problems).to contain_fixed(sprintf(msg,23,15)).on_line(4).in_column(15)
|
|
671
|
+
expect(problems).to contain_fixed(sprintf(msg,23,19)).on_line(6).in_column(19)
|
|
672
|
+
end
|
|
673
|
+
|
|
674
|
+
it 'should align the hash rockets' do
|
|
675
|
+
expect(manifest).to eq(fixed)
|
|
676
|
+
end
|
|
677
|
+
end
|
|
573
678
|
end
|
|
574
679
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: puppet-lint
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.1.
|
|
4
|
+
version: 2.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Tim Sharpe
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2017-02-15 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: |-
|
|
14
14
|
Checks your Puppet manifests against the Puppetlabs
|
|
@@ -19,9 +19,9 @@ executables:
|
|
|
19
19
|
extensions: []
|
|
20
20
|
extra_rdoc_files: []
|
|
21
21
|
files:
|
|
22
|
-
- .gitignore
|
|
23
|
-
- .rspec
|
|
24
|
-
- .travis.yml
|
|
22
|
+
- ".gitignore"
|
|
23
|
+
- ".rspec"
|
|
24
|
+
- ".travis.yml"
|
|
25
25
|
- CHANGELOG.md
|
|
26
26
|
- Gemfile
|
|
27
27
|
- LICENSE
|
|
@@ -115,17 +115,17 @@ require_paths:
|
|
|
115
115
|
- lib
|
|
116
116
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
117
117
|
requirements:
|
|
118
|
-
- -
|
|
118
|
+
- - ">="
|
|
119
119
|
- !ruby/object:Gem::Version
|
|
120
120
|
version: '0'
|
|
121
121
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
122
122
|
requirements:
|
|
123
|
-
- -
|
|
123
|
+
- - ">="
|
|
124
124
|
- !ruby/object:Gem::Version
|
|
125
125
|
version: '0'
|
|
126
126
|
requirements: []
|
|
127
127
|
rubyforge_project:
|
|
128
|
-
rubygems_version: 2.
|
|
128
|
+
rubygems_version: 2.6.10
|
|
129
129
|
signing_key:
|
|
130
130
|
specification_version: 4
|
|
131
131
|
summary: Ensure your Puppet manifests conform with the Puppetlabs style guide
|