puppet-lint-topscope-variable-check 1.0.1 → 1.1.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
  SHA256:
3
- metadata.gz: e0ad23632093e2963ab543f0e674b202023a5c6f959138af1c1f5f9391457f5a
4
- data.tar.gz: f1aa73f43b44e3cf0cfbe3ab5751e4ce4b036c95bfb4c12830c3e3fae4572320
3
+ metadata.gz: 5d8122dcc09b9ab9845447832f3d805ebf35d84a77360f8cb8b1ac5789dd4f1c
4
+ data.tar.gz: 13c983d895775467a2472517b1edbefa723b6fdfc778ed4a8720d0f2af61f592
5
5
  SHA512:
6
- metadata.gz: 729764ccad0c21ff5ac08c93d892bf60b9e158c7639f307eaa3eaff6e1d30f21de26a4fdd47b0c2940c451ccbd998f9c6d63c69804c8fdce368bc8bf707079b6
7
- data.tar.gz: ebd1ab0074b7c9056c6a66b38160a7b6d9cda7323be9e188343aaf0ac719a48e5fed838a511e8c743b94c4e438b8b633abfe64d1ed42c78d75b9de3fd07bbd75
6
+ metadata.gz: 05dcff337b51dee7bbfdbad3d049392363944c03b8cc7791df12c1aa8e0b24792158c04264c2b8e6f607f91d7fdc75250378668c8351be983b8bb002098c8082
7
+ data.tar.gz: 78b06a1c9ca140dab88a5d44578154afb35f8270226788785daf81fe841a62d2f75138f3652441ba20e00d51637d6008070d71971025a78610cc1426b2eac100
data/README.md CHANGED
@@ -1,7 +1,10 @@
1
1
  puppet-lint-topscope-variable-check
2
2
  ========================
3
- [![Build Status](https://api.travis-ci.org/sixt/puppet-lint-topscope-variable-check.svg)](https://travis-ci.org/sixt/puppet-lint-topscope-variable-check)
4
-
3
+ [![License](https://img.shields.io/github/license/voxpupuli/puppet-lint-topscope-variable-check.svg)](https://github.com/voxpupuli/puppet-lint-topscope-variable-check/blob/master/LICENSE)
4
+ [![Test](https://github.com/voxpupuli/puppet-lint-topscope-variable-check/actions/workflows/test.yml/badge.svg)](https://github.com/voxpupuli/puppet-lint-topscope-variable-check/actions/workflows/test.yml)
5
+ [![Release](https://github.com/voxpupuli/puppet-lint-topscope-variable-check/actions/workflows/release.yml/badge.svg)](https://github.com/voxpupuli/puppet-lint-topscope-variable-check/actions/workflows/release.yml)
6
+ [![RubyGem Version](https://img.shields.io/gem/v/puppet-lint-topscope-variable-check.svg)](https://rubygems.org/gems/puppet-lint-topscope-variable-check)
7
+ [![RubyGem Downloads](https://img.shields.io/gem/dt/puppet-lint-topscope-variable-check.svg)](https://rubygems.org/gems/puppet-lint-topscope-variable-check)
5
8
 
6
9
  A puppet-lint plugin to check that topscope variables in a class do not begin with $::
7
10
 
@@ -72,13 +75,22 @@ PuppetLint.configuration.send('disable_topscope_variable')
72
75
  ```
73
76
  ## Limitations
74
77
 
75
- The fix function of this plugin does not work when the variable is used in a string.
78
+ The fix function of this plugin does not work when the variable is used in a string and hasn't been enclosed with `{}`.
76
79
  For example:
77
80
 
78
81
  ``` puppet
79
82
  $foo = "/etc/$::foobar::path/test"
80
83
  ```
81
84
 
85
+ Note: The [Variables Not Enclosed](http://puppet-lint.com/checks/variables_not_enclosed/) check can fix the missing braces and then the fix from this plugin should work.
86
+
87
+ ## Transfer Notice
88
+
89
+ This plugin and github repository was originally developed and maintained by [Sixt](https://www.sixt.com/).
90
+ On 2021/11/24 the github project was transferred to [Voxpupuli](https://voxpupuli.org/) for ongoing improvement and maintenance.
91
+
92
+ Previously: https://github.com/Sixt/puppet-lint-topscope-variable-check
93
+
82
94
  ## License
83
95
  ```
84
96
  MIT License
@@ -3,9 +3,9 @@ PuppetLint.new_check(:topscope_variable) do
3
3
  class_list = (class_indexes + defined_type_indexes)
4
4
  # do not check if the code is not part of a class
5
5
  return if class_list.first.nil?
6
- class_name = class_list.first[:name_token].value.split('::').first
6
+
7
7
  tokens.select { |x| x.type == :VARIABLE }.each do |token|
8
- next if token.value !~ /^::#{class_name}::/
8
+ next if token.value !~ /^::[a-z0-9_][a-zA-Z0-9_]+::/
9
9
  fixed = token.value.sub(/^::/, '')
10
10
  notify(
11
11
  :warning,
@@ -5,7 +5,7 @@ describe 'topscope_variable' do
5
5
  context 'with fix disabled' do
6
6
  context 'with correct topscope' do
7
7
  let(:code) do
8
- <<-PUP.strip_heredoc
8
+ <<~PUP
9
9
  class foo::blub {
10
10
  notify { 'foo':
11
11
  message => $foo::bar
@@ -21,7 +21,7 @@ describe 'topscope_variable' do
21
21
 
22
22
  context 'with incorrect topscope' do
23
23
  let(:code) do
24
- <<-PUP.strip_heredoc
24
+ <<~PUP
25
25
  class foo::blub {
26
26
  notify { 'foo':
27
27
  message => $::foo::bar
@@ -35,9 +35,25 @@ describe 'topscope_variable' do
35
35
  end
36
36
  end
37
37
 
38
+ context 'with incorrect topscope from external module' do
39
+ let(:code) do
40
+ <<~PUP
41
+ class profile::foo {
42
+ notify { 'foo':
43
+ message => $::some_component_module::bar
44
+ }
45
+ }
46
+ PUP
47
+ end
48
+
49
+ it 'should detect one problem' do
50
+ expect(problems).to have(1).problem
51
+ end
52
+ end
53
+
38
54
  context 'with correct topscope in params' do
39
55
  let(:code) do
40
- <<-PUP.strip_heredoc
56
+ <<~PUP
41
57
  class foo::blub(
42
58
  String $foo = $params::foo
43
59
  ) {
@@ -53,7 +69,7 @@ describe 'topscope_variable' do
53
69
 
54
70
  context 'with incorrect topscope in params' do
55
71
  let(:code) do
56
- <<-PUP.strip_heredoc
72
+ <<~PUP
57
73
  class foo::blub(
58
74
  String $foo = $::foo::params::foo
59
75
  ) {
@@ -69,10 +85,10 @@ describe 'topscope_variable' do
69
85
 
70
86
  context 'with a fact that has been used improperly' do
71
87
  let(:code) do
72
- <<-PUP.strip_heredoc
88
+ <<~PUP
73
89
  class foo::blub {
74
90
  notify { 'foo':
75
- message => $blub::bar
91
+ message => $::operatingsystem
76
92
  }
77
93
  }
78
94
  PUP
@@ -82,6 +98,22 @@ describe 'topscope_variable' do
82
98
  expect(problems).to have(0).problem
83
99
  end
84
100
  end
101
+
102
+ context 'with a fact that has been used improperly in params' do
103
+ let(:code) do
104
+ <<~PUP
105
+ class foo::blub(
106
+ String $foo = $::operatingsystem
107
+ ) {
108
+ # ...
109
+ }
110
+ PUP
111
+ end
112
+
113
+ it 'should not detect any problems' do
114
+ expect(problems).to have(0).problem
115
+ end
116
+ end
85
117
  end
86
118
 
87
119
  context 'with fix enabled' do
@@ -95,7 +127,7 @@ describe 'topscope_variable' do
95
127
 
96
128
  context 'with correct topscope' do
97
129
  let(:code) do
98
- <<-PUP.strip_heredoc
130
+ <<~PUP
99
131
  class foo::blub {
100
132
  notify { 'foo':
101
133
  message => $foo::bar
@@ -111,7 +143,7 @@ describe 'topscope_variable' do
111
143
 
112
144
  context 'with incorrect topscope' do
113
145
  let(:code) do
114
- <<-PUP.strip_heredoc
146
+ <<~PUP
115
147
  class foo::blub {
116
148
  notify { 'foo':
117
149
  message => $::foo::bar
@@ -129,7 +161,7 @@ describe 'topscope_variable' do
129
161
  end
130
162
 
131
163
  it 'should remove :: after the $' do
132
- expect(manifest).to eq <<-PUP.strip_heredoc
164
+ expect(manifest).to eq <<~PUP
133
165
  class foo::blub {
134
166
  notify { 'foo':
135
167
  message => $foo::bar
@@ -139,9 +171,39 @@ describe 'topscope_variable' do
139
171
  end
140
172
  end
141
173
 
174
+ context 'with incorrect topscope from external module' do
175
+ let(:code) do
176
+ <<~PUP
177
+ class profile::foo {
178
+ notify { 'foo':
179
+ message => $::some_component_module::bar
180
+ }
181
+ }
182
+ PUP
183
+ end
184
+
185
+ it 'should detect one problem' do
186
+ expect(problems).to have(1).problem
187
+ end
188
+
189
+ it 'should fix the problem' do
190
+ expect(problems).to contain_fixed('use $some_component_module::bar instead of $::some_component_module::bar').on_line(3).in_column(16)
191
+ end
192
+
193
+ it 'should remove :: after the $' do
194
+ expect(manifest).to eq <<~PUP
195
+ class profile::foo {
196
+ notify { 'foo':
197
+ message => $some_component_module::bar
198
+ }
199
+ }
200
+ PUP
201
+ end
202
+ end
203
+
142
204
  context 'with incorrect topscope in quoted variable' do
143
205
  let(:code) do
144
- <<-PUP.strip_heredoc
206
+ <<~PUP
145
207
  class foo::blub {
146
208
  notify { 'foo':
147
209
  message => ">${::foo::bar}<"
@@ -155,24 +217,24 @@ describe 'topscope_variable' do
155
217
  end
156
218
 
157
219
  it 'should fix the problem' do
158
- expect(problems).to contain_fixed(msg).on_line(3).in_column(19)
159
- end
160
-
161
- # it 'should remove :: after the $' do
162
- # expect(manifest).to eq <<-PUP.strip_heredoc
163
- # class foo::blub {
164
- # notify { 'foo':
165
- # message => ">${foo::bar}<"
166
- # }
167
- # }
168
- # PUP
169
- # end
220
+ expect(problems).to contain_fixed(msg).on_line(3).in_column(20)
221
+ end
222
+
223
+ it 'should remove :: after the $' do
224
+ expect(manifest).to eq <<~PUP
225
+ class foo::blub {
226
+ notify { 'foo':
227
+ message => ">${foo::bar}<"
228
+ }
229
+ }
230
+ PUP
231
+ end
170
232
  end
171
233
  end
172
234
 
173
235
  context 'without a class scope' do
174
236
  let(:code) do
175
- <<-PUP.strip_heredoc
237
+ <<~PUP
176
238
  include ::foo
177
239
  PUP
178
240
  end
data/spec/spec_helper.rb CHANGED
@@ -1,13 +1,29 @@
1
- require 'coveralls'
2
- Coveralls.wear!
1
+ # frozen_string_literal: true
3
2
 
4
- require 'puppet-lint'
5
- PuppetLint::Plugins.load_spec_helper
3
+ begin
4
+ require 'simplecov'
5
+ require 'simplecov-console'
6
+ require 'codecov'
7
+ rescue LoadError
8
+ else
9
+ SimpleCov.start do
10
+ track_files 'lib/**/*.rb'
11
+
12
+ add_filter '/spec'
6
13
 
7
- # strip left spaces from heredoc
8
- # this emulates the behaviour of the ~ heredoc from ruby 2.3
9
- class String
10
- def strip_heredoc
11
- gsub(/^#{scan(/^\s*/).min_by(&:length)}/, '')
14
+ enable_coverage :branch
15
+
16
+ # do not track vendored files
17
+ add_filter '/vendor'
18
+ add_filter '/.vendor'
12
19
  end
20
+
21
+ SimpleCov.formatters = [
22
+ SimpleCov::Formatter::Console,
23
+ SimpleCov::Formatter::Codecov,
24
+ ]
13
25
  end
26
+
27
+ require 'puppet-lint'
28
+
29
+ PuppetLint::Plugins.load_spec_helper
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppet-lint-topscope-variable-check
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
- - Martin Merfort
7
+ - Vox Pupuli
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-12 00:00:00.000000000 Z
11
+ date: 2022-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: puppet-lint
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.0'
27
- - !ruby/object:Gem::Dependency
28
- name: coveralls
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '0.8'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '0.8'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: rake
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -108,9 +94,23 @@ dependencies:
108
94
  - - "~>"
109
95
  - !ruby/object:Gem::Version
110
96
  version: '0.58'
97
+ - !ruby/object:Gem::Dependency
98
+ name: simplecov
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
111
  description: " A puppet-lint plugin to check that topscope variable names don't
112
112
  start with ::.\n"
113
- email: platformengineering@sixt.com
113
+ email: voxpupuli@groups.io
114
114
  executables: []
115
115
  extensions: []
116
116
  extra_rdoc_files: []
@@ -120,7 +120,7 @@ files:
120
120
  - lib/puppet-lint/plugins/topscope_variable.rb
121
121
  - spec/puppet-lint/plugins/topscope_variable_spec.rb
122
122
  - spec/spec_helper.rb
123
- homepage: https://github.com/Sixt/puppet-lint-topscope-variable-check
123
+ homepage: https://github.com/voxpupuli/puppet-lint-topscope-variable-check
124
124
  licenses:
125
125
  - MIT
126
126
  metadata: {}
@@ -139,11 +139,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
139
  - !ruby/object:Gem::Version
140
140
  version: '0'
141
141
  requirements: []
142
- rubyforge_project:
143
- rubygems_version: 2.7.8
142
+ rubygems_version: 3.2.33
144
143
  signing_key:
145
144
  specification_version: 4
146
145
  summary: A puppet-lint plugin to check topscope variables.
147
146
  test_files:
148
- - spec/spec_helper.rb
149
147
  - spec/puppet-lint/plugins/topscope_variable_spec.rb
148
+ - spec/spec_helper.rb