puppet-lint-manifest_whitespace-check 0.2.9 → 1.0.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/README.md +26 -0
- data/lib/puppet-lint/plugins/check_manifest_whitespace_closing_brace.rb +5 -2
- data/lib/puppet-lint/plugins/check_manifest_whitespace_newline_end_of_file.rb +21 -21
- data/lib/puppet-lint/plugins/check_manifest_whitespace_opening_brace.rb +5 -2
- data/spec/puppet-lint/plugins/manifest_whitespace_missing_newline_end_of_file_spec.rb +15 -0
- data/spec/puppet-lint/plugins/manifest_whitespace_opening_brace_spec.rb +90 -4
- data/spec/spec_helper.rb +1 -2
- metadata +12 -99
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 215ee20a337d9fd2655e3ffaff1416e3e3cdf4051310c355d7d87922640d1e41
|
4
|
+
data.tar.gz: 8f57c74447f4e3ec1e6d8e730b17b960e668eba3dc1242f826b81a90eb6a3381
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 230cd0afb84fe91efeeb98cc150de18a4083158b5b8d038a1f6773c842b053fe9dc95f6ac3a106f505112a23f9be91b1669755bc5744f186841588d426655a5e
|
7
|
+
data.tar.gz: 354d4c00d7b2884fe70dca02a56115e7ec2c4cd7dab6c4f4969520855a4a9e008c727fa322e7fb2559a5bb1a30cf69f28acda6f48a659de0087f2473af41dffa
|
data/README.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# puppet-lint manifest whitespace check
|
2
2
|
|
3
|
+
[](https://github.com/voxpupuli/puppet-lint-manifest_whitespace-check/blob/master/LICENSE)
|
4
|
+
[](https://github.com/voxpupuli/puppet-lint-manifest_whitespace-check/actions/workflows/test.yml)
|
5
|
+
[](https://github.com/voxpupuli/puppet-lint-manifest_whitespace-check/actions/workflows/release.yml)
|
6
|
+
[](https://rubygems.org/gems/puppet-lint-manifest_whitespace-check)
|
7
|
+
[](https://rubygems.org/gems/puppet-lint-manifest_whitespace-check)
|
8
|
+
[](#copyright)
|
9
|
+
|
3
10
|
Adds a new puppet-lint check to verify a number of whitespace issues (newlines etc.)
|
4
11
|
|
5
12
|
These checks are very opinionated.
|
@@ -173,3 +180,22 @@ class myclass
|
|
173
180
|
# the body
|
174
181
|
}
|
175
182
|
```
|
183
|
+
|
184
|
+
## License
|
185
|
+
|
186
|
+
This project is licensed unter MIT
|
187
|
+
|
188
|
+
## Transfer Notice
|
189
|
+
|
190
|
+
This plugin was originally maintained by [Jo Vandeginste](https://github.com/jovandeginste).
|
191
|
+
The maintainer preferred that [Vox Pupuli](https://voxpupuli.org/) take ownership of the module for future improvement and maintenance.
|
192
|
+
|
193
|
+
## Release information
|
194
|
+
|
195
|
+
To make a new release, please do:
|
196
|
+
* update the version in the gemspec file
|
197
|
+
* Install gems with `bundle install --with release --path .vendor`
|
198
|
+
* generate the changelog with `bundle exec rake changelog`
|
199
|
+
* Check if the new version matches the closed issues/PRs in the changelog
|
200
|
+
* Create a PR with it
|
201
|
+
* After it got merged, push a tag. GitHub actions will do the actual release to rubygems and GitHub Packages
|
@@ -9,7 +9,9 @@ PuppetLint.new_check(:manifest_whitespace_closing_brace_before) do
|
|
9
9
|
next unless prev_token && prev_code_token
|
10
10
|
next if %i[LBRACE].include?(prev_token.type)
|
11
11
|
|
12
|
-
|
12
|
+
if !%i[LBRACE].include?(prev_code_token.type) && (is_single_space(prev_token) && tokens.index(prev_code_token) == tokens.index(brace_token) - 2)
|
13
|
+
next
|
14
|
+
end
|
13
15
|
|
14
16
|
next if prev_token.type == :INDENT && (tokens.index(prev_code_token) == tokens.index(brace_token) - 3)
|
15
17
|
|
@@ -39,7 +41,8 @@ PuppetLint.new_check(:manifest_whitespace_closing_brace_before) do
|
|
39
41
|
next_token = next_token.next_token
|
40
42
|
end
|
41
43
|
|
42
|
-
add_token(tokens.index(next_token), new_single_space) if next_token.type == :RBRACE && !%i[LBRACE NEWLINE
|
44
|
+
add_token(tokens.index(next_token), new_single_space) if next_token.type == :RBRACE && !%i[LBRACE NEWLINE
|
45
|
+
INDENT].include?(next_token.prev_token.type)
|
43
46
|
end
|
44
47
|
end
|
45
48
|
|
@@ -4,15 +4,15 @@ PuppetLint.new_check(:manifest_whitespace_missing_newline_end_of_file) do
|
|
4
4
|
def check
|
5
5
|
last_token = tokens.last
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
7
|
+
return unless last_token && last_token.type != :NEWLINE
|
8
|
+
|
9
|
+
notify(
|
10
|
+
:error,
|
11
|
+
message: 'there should be a single newline at the end of a manifest',
|
12
|
+
line: last_token.line,
|
13
|
+
column: last_token.column,
|
14
|
+
token: last_token,
|
15
|
+
)
|
16
16
|
end
|
17
17
|
|
18
18
|
def fix(problem)
|
@@ -25,18 +25,18 @@ PuppetLint.new_check(:manifest_whitespace_double_newline_end_of_file) do
|
|
25
25
|
def check
|
26
26
|
last_token = tokens.last
|
27
27
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
28
|
+
return unless last_token && last_token.type == :NEWLINE
|
29
|
+
|
30
|
+
while last_token.prev_token && last_token.prev_token.type == :NEWLINE
|
31
|
+
notify(
|
32
|
+
:error,
|
33
|
+
message: 'there should be a single newline at the end of a manifest',
|
34
|
+
line: last_token.line,
|
35
|
+
column: last_token.column,
|
36
|
+
token: last_token,
|
37
|
+
)
|
38
|
+
|
39
|
+
last_token = last_token.prev_token
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
@@ -11,9 +11,12 @@ PuppetLint.new_check(:manifest_whitespace_opening_brace_before) do
|
|
11
11
|
next if %i[COMMA].include?(prev_code_token.type) && %i[INDENT NEWLINE].include?(prev_token.type)
|
12
12
|
next if %i[COMMENT COLON].include?(prev_code_token.type)
|
13
13
|
|
14
|
-
if %i[LPAREN LBRACK
|
14
|
+
if %i[LPAREN LBRACK].include?(prev_code_token.type)
|
15
15
|
next if tokens.index(prev_code_token) == tokens.index(brace_token) - 1
|
16
16
|
next if tokens[tokens.index(prev_code_token)..tokens.index(brace_token)].collect(&:type).include?(:NEWLINE)
|
17
|
+
elsif %i[LBRACE].include?(prev_code_token.type)
|
18
|
+
next if tokens[tokens.index(prev_code_token)..tokens.index(brace_token)].collect(&:type).include?(:NEWLINE)
|
19
|
+
next if tokens.index(prev_code_token) == tokens.index(brace_token) - 2 && is_single_space(prev_token)
|
17
20
|
else
|
18
21
|
next unless tokens.index(prev_code_token) != tokens.index(brace_token) - 2 ||
|
19
22
|
!is_single_space(prev_token)
|
@@ -41,7 +44,7 @@ PuppetLint.new_check(:manifest_whitespace_opening_brace_before) do
|
|
41
44
|
prev_token = prev_token.prev_token
|
42
45
|
end
|
43
46
|
|
44
|
-
add_token(tokens.index(token), new_single_space) unless %i[LPAREN LBRACK
|
47
|
+
add_token(tokens.index(token), new_single_space) unless %i[LPAREN LBRACK].include?(prev_code_token.type)
|
45
48
|
end
|
46
49
|
end
|
47
50
|
|
@@ -47,5 +47,20 @@ describe 'manifest_whitespace_missing_newline_end_of_file' do
|
|
47
47
|
expect(manifest).to eq("class example { }\n")
|
48
48
|
end
|
49
49
|
end
|
50
|
+
|
51
|
+
context 'inside heredoc' do
|
52
|
+
let(:code) do
|
53
|
+
<<~CODE
|
54
|
+
$value = @("END_OF_HD")
|
55
|
+
SomeData
|
56
|
+
| - END_OF_HD
|
57
|
+
$other_value = 5
|
58
|
+
CODE
|
59
|
+
end
|
60
|
+
|
61
|
+
it 'detects no problems' do
|
62
|
+
expect(problems).to be_empty
|
63
|
+
end
|
64
|
+
end
|
50
65
|
end
|
51
66
|
end
|
@@ -31,14 +31,100 @@ describe 'manifest_whitespace_opening_brace_before' do
|
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
+
context 'with an iterator' do
|
35
|
+
let(:code) do
|
36
|
+
<<~CODE
|
37
|
+
$slave_ifnames = $bonds.reduce({}) |$l, $i| {
|
38
|
+
$l + split($i['attached_devices'], /,/).reduce({}) |$sl, $d| { $sl + { $d => $i['identifier'] } }
|
39
|
+
}
|
40
|
+
CODE
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'detects no problems' do
|
44
|
+
expect(problems).to be_empty
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
context 'with a Hash-returning block' do
|
49
|
+
let(:code) do
|
50
|
+
<<~CODE
|
51
|
+
$result = $value.lest || { {} }
|
52
|
+
CODE
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'detects no problems' do
|
56
|
+
expect(problems).to be_empty
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
context 'with a Hash-nested Hash' do
|
61
|
+
let(:code) do
|
62
|
+
<<~CODE
|
63
|
+
$result = { foo => {} }
|
64
|
+
CODE
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'detects no problems' do
|
68
|
+
expect(problems).to be_empty
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context 'with a Hash-nested Hash with a Hash key' do
|
73
|
+
let(:code) do
|
74
|
+
<<~CODE
|
75
|
+
$result = { { 'a' => 1 } => {} }
|
76
|
+
CODE
|
77
|
+
end
|
78
|
+
|
79
|
+
it 'detects no problems' do
|
80
|
+
expect(problems).to be_empty
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
context 'with a Hash-nested Hash with an empty Hash key' do
|
85
|
+
let(:code) do
|
86
|
+
<<~CODE
|
87
|
+
$result = { {} => {} }
|
88
|
+
CODE
|
89
|
+
end
|
90
|
+
|
91
|
+
it 'detects no problems' do
|
92
|
+
expect(problems).to be_empty
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
context 'with a Hash-returning block and no space' do
|
97
|
+
let(:code) do
|
98
|
+
<<~CODE
|
99
|
+
$result = $value.lest || {{} }
|
100
|
+
CODE
|
101
|
+
end
|
102
|
+
|
103
|
+
it 'detects one problems' do
|
104
|
+
expect(problems).to have(1).problem
|
105
|
+
end
|
106
|
+
|
107
|
+
context 'with fix enabled' do
|
108
|
+
before do
|
109
|
+
PuppetLint.configuration.fix = true
|
110
|
+
end
|
111
|
+
|
112
|
+
after do
|
113
|
+
PuppetLint.configuration.fix = false
|
114
|
+
end
|
115
|
+
|
116
|
+
it { expect(manifest).to eq("$result = $value.lest || { {} }\n") }
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
34
120
|
context 'inside, inline with function' do
|
35
121
|
let(:code) do
|
36
122
|
<<~CODE
|
37
123
|
$sssd_config = {
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
124
|
+
'sssd' => merge($config, {
|
125
|
+
'domains' => $domains,
|
126
|
+
'services' => 'nss,pam',
|
127
|
+
}),
|
42
128
|
}
|
43
129
|
CODE
|
44
130
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puppet-lint-manifest_whitespace-check
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jo Vandeginste
|
8
|
-
|
8
|
+
- Vox Pupuli
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: puppet-lint
|
@@ -16,107 +16,23 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '4'
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
22
|
+
version: '5'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '1.0'
|
30
|
-
- - "<"
|
31
28
|
- !ruby/object:Gem::Version
|
32
29
|
version: '4'
|
33
|
-
-
|
34
|
-
name: coveralls
|
35
|
-
requirement: !ruby/object:Gem::Requirement
|
36
|
-
requirements:
|
37
|
-
- - ">="
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: '0'
|
40
|
-
type: :development
|
41
|
-
prerelease: false
|
42
|
-
version_requirements: !ruby/object:Gem::Requirement
|
43
|
-
requirements:
|
44
|
-
- - ">="
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: '0'
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: mime-types
|
49
|
-
requirement: !ruby/object:Gem::Requirement
|
50
|
-
requirements:
|
51
|
-
- - ">="
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '0'
|
54
|
-
type: :development
|
55
|
-
prerelease: false
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
requirements:
|
58
|
-
- - ">="
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
version: '0'
|
61
|
-
- !ruby/object:Gem::Dependency
|
62
|
-
name: rake
|
63
|
-
requirement: !ruby/object:Gem::Requirement
|
64
|
-
requirements:
|
65
|
-
- - ">="
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: '0'
|
68
|
-
type: :development
|
69
|
-
prerelease: false
|
70
|
-
version_requirements: !ruby/object:Gem::Requirement
|
71
|
-
requirements:
|
72
|
-
- - ">="
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
version: '0'
|
75
|
-
- !ruby/object:Gem::Dependency
|
76
|
-
name: rspec
|
77
|
-
requirement: !ruby/object:Gem::Requirement
|
78
|
-
requirements:
|
79
|
-
- - "~>"
|
80
|
-
- !ruby/object:Gem::Version
|
81
|
-
version: '3.0'
|
82
|
-
type: :development
|
83
|
-
prerelease: false
|
84
|
-
version_requirements: !ruby/object:Gem::Requirement
|
85
|
-
requirements:
|
86
|
-
- - "~>"
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
version: '3.0'
|
89
|
-
- !ruby/object:Gem::Dependency
|
90
|
-
name: rspec-collection_matchers
|
91
|
-
requirement: !ruby/object:Gem::Requirement
|
92
|
-
requirements:
|
93
|
-
- - "~>"
|
94
|
-
- !ruby/object:Gem::Version
|
95
|
-
version: '1.0'
|
96
|
-
type: :development
|
97
|
-
prerelease: false
|
98
|
-
version_requirements: !ruby/object:Gem::Requirement
|
99
|
-
requirements:
|
100
|
-
- - "~>"
|
101
|
-
- !ruby/object:Gem::Version
|
102
|
-
version: '1.0'
|
103
|
-
- !ruby/object:Gem::Dependency
|
104
|
-
name: rspec-its
|
105
|
-
requirement: !ruby/object:Gem::Requirement
|
106
|
-
requirements:
|
107
|
-
- - "~>"
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '1.0'
|
110
|
-
type: :development
|
111
|
-
prerelease: false
|
112
|
-
version_requirements: !ruby/object:Gem::Requirement
|
113
|
-
requirements:
|
114
|
-
- - "~>"
|
30
|
+
- - "<"
|
115
31
|
- !ruby/object:Gem::Version
|
116
|
-
version: '
|
32
|
+
version: '5'
|
117
33
|
description: A new check for puppet-lint that validates generic whitespace issues
|
118
34
|
in manifests.
|
119
|
-
email:
|
35
|
+
email: voxpupuli@groups.io
|
120
36
|
executables: []
|
121
37
|
extensions: []
|
122
38
|
extra_rdoc_files: []
|
@@ -146,12 +62,10 @@ files:
|
|
146
62
|
- spec/puppet-lint/plugins/manifest_whitespace_opening_brace_spec.rb
|
147
63
|
- spec/puppet-lint/plugins/manifest_whitespace_opening_bracket_spec.rb
|
148
64
|
- spec/spec_helper.rb
|
149
|
-
homepage: https://github.com/
|
65
|
+
homepage: https://github.com/voxpupuli/puppet-lint-manifest_whitespace-check
|
150
66
|
licenses:
|
151
67
|
- MIT
|
152
|
-
metadata:
|
153
|
-
rubygems_mfa_required: 'true'
|
154
|
-
post_install_message:
|
68
|
+
metadata: {}
|
155
69
|
rdoc_options: []
|
156
70
|
require_paths:
|
157
71
|
- lib
|
@@ -159,15 +73,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
159
73
|
requirements:
|
160
74
|
- - ">="
|
161
75
|
- !ruby/object:Gem::Version
|
162
|
-
version: '2.
|
76
|
+
version: '2.7'
|
163
77
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
164
78
|
requirements:
|
165
79
|
- - ">="
|
166
80
|
- !ruby/object:Gem::Version
|
167
81
|
version: '0'
|
168
82
|
requirements: []
|
169
|
-
rubygems_version: 3.
|
170
|
-
signing_key:
|
83
|
+
rubygems_version: 3.6.9
|
171
84
|
specification_version: 4
|
172
85
|
summary: A puppet-lint check to validate whitespace in manifests
|
173
86
|
test_files: []
|