puppet-lint 0.1.7 → 0.1.8
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.
- data/README.md +2 -0
- data/bin/puppet-lint +13 -2
- data/lib/puppet-lint.rb +36 -8
- data/lib/puppet-lint/plugin.rb +2 -2
- data/lib/puppet-lint/plugins.rb +1 -0
- data/lib/puppet-lint/plugins/check_classes.rb +21 -2
- data/lib/puppet-lint/plugins/check_conditionals.rb +1 -1
- data/lib/puppet-lint/plugins/check_resources.rb +1 -1
- data/lib/puppet-lint/plugins/check_strings.rb +14 -1
- data/lib/puppet-lint/plugins/check_variables.rb +19 -0
- data/lib/puppet-lint/plugins/check_whitespace.rb +23 -25
- data/puppet-lint.gemspec +3 -1
- data/spec/puppet-lint/check_classes_spec.rb +53 -1
- data/spec/puppet-lint/check_conditionals_spec.rb +1 -1
- data/spec/puppet-lint/check_resources_spec.rb +1 -1
- data/spec/puppet-lint/check_strings_spec.rb +24 -1
- data/spec/puppet-lint/check_variables_spec.rb +18 -0
- data/spec/puppet-lint/check_whitespace_spec.rb +50 -1
- metadata +6 -4
data/README.md
CHANGED
@@ -76,3 +76,5 @@ At the moment, the following tests have been implemented:
|
|
76
76
|
If you find a bug in puppet-lint or its results, please create an issue in the
|
77
77
|
[repo issues tracker](https://github.com/rodjek/puppet-lint/issues/). Bonus
|
78
78
|
points will be awarded if you also include a patch that fixes the issue.
|
79
|
+
|
80
|
+
## Build status
|
data/bin/puppet-lint
CHANGED
@@ -17,7 +17,9 @@ require 'optparse'
|
|
17
17
|
require 'rubygems'
|
18
18
|
require 'puppet-lint'
|
19
19
|
|
20
|
-
options = {
|
20
|
+
options = {
|
21
|
+
:error_level => :all,
|
22
|
+
}
|
21
23
|
opts = OptionParser.new do |opts|
|
22
24
|
opts.banner = help
|
23
25
|
|
@@ -26,6 +28,14 @@ opts = OptionParser.new do |opts|
|
|
26
28
|
exit 0
|
27
29
|
end
|
28
30
|
|
31
|
+
opts.on("--with-filename", "Display the filename before the warning") do
|
32
|
+
options[:with_filename] = true
|
33
|
+
end
|
34
|
+
|
35
|
+
opts.on("--error-level LEVEL", [:all, :warning, :error], "The level of error to return (warning, error, all).") do |el|
|
36
|
+
options[:error_level] = el
|
37
|
+
end
|
38
|
+
|
29
39
|
opts.on("--fail-on-warnings", "Return a non-zero exit status for warnings.") do
|
30
40
|
options[:fail_on_warnings] = true
|
31
41
|
end
|
@@ -47,8 +57,9 @@ if ARGV[0].nil?
|
|
47
57
|
end
|
48
58
|
|
49
59
|
begin
|
50
|
-
l = PuppetLint.new
|
60
|
+
l = PuppetLint.new(options)
|
51
61
|
l.file = ARGV[0]
|
62
|
+
l.show_filename = options.has_key?(:with_filename) ? options[:with_filename] : false
|
52
63
|
l.run
|
53
64
|
|
54
65
|
if l.errors? or (l.warnings? and options[:fail_on_warnings])
|
data/lib/puppet-lint.rb
CHANGED
@@ -10,21 +10,33 @@ end
|
|
10
10
|
require 'puppet-lint/plugin'
|
11
11
|
require 'puppet-lint/plugins'
|
12
12
|
|
13
|
+
unless String.respond_to?('prepend')
|
14
|
+
class String
|
15
|
+
def prepend(lead)
|
16
|
+
self.replace "#{lead}#{self}"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
13
21
|
class PuppetLint::NoCodeError < StandardError; end
|
14
22
|
|
15
23
|
class PuppetLint
|
16
|
-
VERSION = '0.1.
|
24
|
+
VERSION = '0.1.8'
|
17
25
|
|
18
|
-
attr_reader :code, :file
|
26
|
+
attr_reader :code, :file, :show_filename
|
19
27
|
|
20
|
-
def initialize
|
28
|
+
def initialize(options)
|
21
29
|
@data = nil
|
22
30
|
@errors = 0
|
23
31
|
@warnings = 0
|
32
|
+
@show_filename = 0
|
33
|
+
@path = ''
|
34
|
+
@error_level = options[:error_level]
|
24
35
|
end
|
25
36
|
|
26
37
|
def file=(path)
|
27
38
|
if File.exist? path
|
39
|
+
@path = path
|
28
40
|
@data = File.read(path)
|
29
41
|
end
|
30
42
|
end
|
@@ -33,14 +45,23 @@ class PuppetLint
|
|
33
45
|
@data = value
|
34
46
|
end
|
35
47
|
|
48
|
+
def show_filename=(value)
|
49
|
+
@show_filename = value
|
50
|
+
end
|
51
|
+
|
36
52
|
def report(kind, message)
|
53
|
+
#msg = message
|
37
54
|
if kind == :warnings
|
38
55
|
@warnings += 1
|
39
|
-
|
56
|
+
message.prepend('WARNING: ')
|
40
57
|
else
|
41
58
|
@errors += 1
|
42
|
-
|
59
|
+
message.prepend('ERROR: ')
|
60
|
+
end
|
61
|
+
if @show_filename
|
62
|
+
message.prepend("#{@path} - ")
|
43
63
|
end
|
64
|
+
puts message
|
44
65
|
end
|
45
66
|
|
46
67
|
def errors?
|
@@ -57,9 +78,16 @@ class PuppetLint
|
|
57
78
|
end
|
58
79
|
|
59
80
|
PuppetLint::CheckPlugin.repository.each do |plugin|
|
60
|
-
problems = plugin.new.run(@data)
|
61
|
-
|
62
|
-
|
81
|
+
problems = plugin.new.run(@path, @data)
|
82
|
+
case @error_level
|
83
|
+
when :warning
|
84
|
+
problems[:warnings].each { |warning| report :warnings, warning }
|
85
|
+
when :error
|
86
|
+
problems[:errors].each { |error| report :errors, error }
|
87
|
+
else
|
88
|
+
problems[:warnings].each { |warning| report :warnings, warning }
|
89
|
+
problems[:errors].each { |error| report :errors, error }
|
90
|
+
end
|
63
91
|
end
|
64
92
|
end
|
65
93
|
end
|
data/lib/puppet-lint/plugin.rb
CHANGED
data/lib/puppet-lint/plugins.rb
CHANGED
@@ -6,5 +6,6 @@ end
|
|
6
6
|
require 'puppet-lint/plugins/check_classes'
|
7
7
|
require 'puppet-lint/plugins/check_conditionals'
|
8
8
|
require 'puppet-lint/plugins/check_strings'
|
9
|
+
require 'puppet-lint/plugins/check_variables'
|
9
10
|
require 'puppet-lint/plugins/check_whitespace'
|
10
11
|
require 'puppet-lint/plugins/check_resources'
|
@@ -1,5 +1,5 @@
|
|
1
1
|
class PuppetLint::Plugins::CheckClasses < PuppetLint::CheckPlugin
|
2
|
-
def test(data)
|
2
|
+
def test(path, data)
|
3
3
|
lexer = Puppet::Parser::Lexer.new
|
4
4
|
lexer.string = data
|
5
5
|
tokens = lexer.fullscan
|
@@ -16,16 +16,35 @@ class PuppetLint::Plugins::CheckClasses < PuppetLint::CheckPlugin
|
|
16
16
|
lparen_idx = tokens[token_idx..(header_end_idx + token_idx)].index { |r| r.first == :LPAREN }
|
17
17
|
rparen_idx = tokens[token_idx..(header_end_idx + token_idx)].rindex { |r| r.first == :RPAREN }
|
18
18
|
|
19
|
+
unless path == ""
|
20
|
+
title_token = tokens[token_idx+1]
|
21
|
+
if [:CLASSNAME, :NAME].include? title_token.first
|
22
|
+
split_title = title_token.last[:value].split('::')
|
23
|
+
if split_title.length > 1
|
24
|
+
expected_path = "#{split_title.first}/manifests/#{split_title[1..-1].join('/')}.pp"
|
25
|
+
else
|
26
|
+
expected_path = "#{title_token.last[:value]}/manifests/init.pp"
|
27
|
+
end
|
28
|
+
|
29
|
+
unless path.end_with? expected_path
|
30
|
+
error "#{title_token.last[:value]} not in autoload module layout on line #{title_token.last[:line]}"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
19
35
|
unless lparen_idx.nil? or rparen_idx.nil?
|
20
36
|
param_tokens = tokens[lparen_idx..rparen_idx]
|
21
37
|
param_tokens.each_index do |param_tokens_idx|
|
22
38
|
this_token = param_tokens[param_tokens_idx]
|
23
39
|
next_token = param_tokens[param_tokens_idx+1]
|
40
|
+
prev_token = param_tokens[param_tokens_idx-1]
|
24
41
|
if this_token.first == :VARIABLE
|
25
42
|
unless next_token.nil?
|
26
43
|
if next_token.first == :COMMA or next_token.first == :RPAREN
|
27
44
|
unless param_tokens[0..param_tokens_idx].rindex { |r| r.first == :EQUALS }.nil?
|
28
|
-
|
45
|
+
unless prev_token.nil? or prev_token.first == :EQUALS
|
46
|
+
warn "optional parameter listed before required parameter on line #{this_token.last[:line]}"
|
47
|
+
end
|
29
48
|
end
|
30
49
|
end
|
31
50
|
end
|
@@ -14,7 +14,7 @@ class PuppetLint::Plugins::CheckStrings < PuppetLint::CheckPlugin
|
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
def test(data)
|
17
|
+
def test(path, data)
|
18
18
|
l = Puppet::Parser::Lexer.new
|
19
19
|
l.string = data
|
20
20
|
tokens = l.fullscan
|
@@ -48,6 +48,15 @@ class PuppetLint::Plugins::CheckStrings < PuppetLint::CheckPlugin
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
+
if token.first == :DQPRE
|
52
|
+
end_of_string_idx = tokens[token_idx..-1].index { |r| r.first == :DQPOST }
|
53
|
+
tokens[token_idx..end_of_string_idx].each do |t|
|
54
|
+
if t.first == :VARIABLE and t.last[:value].match(/-/)
|
55
|
+
warn "variable contains a dash on line #{t.last[:line]}"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
51
60
|
if token.first == :SSTRING
|
52
61
|
contents = token.last[:value]
|
53
62
|
line_no = token.last[:line]
|
@@ -55,6 +64,10 @@ class PuppetLint::Plugins::CheckStrings < PuppetLint::CheckPlugin
|
|
55
64
|
if contents.include? '${'
|
56
65
|
error "single quoted string containing a variable found on line #{token.last[:line]}"
|
57
66
|
end
|
67
|
+
|
68
|
+
if ['true', 'false'].include? contents
|
69
|
+
warn "quoted boolean value found on line #{token.last[:line]}"
|
70
|
+
end
|
58
71
|
end
|
59
72
|
end
|
60
73
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class PuppetLint::Plugins::CheckVariables < PuppetLint::CheckPlugin
|
2
|
+
def test(path, data)
|
3
|
+
lexer = Puppet::Parser::Lexer.new
|
4
|
+
lexer.string = data
|
5
|
+
tokens = lexer.fullscan
|
6
|
+
|
7
|
+
tokens.each_index do |token_idx|
|
8
|
+
token = tokens[token_idx]
|
9
|
+
|
10
|
+
if token.first == :VARIABLE
|
11
|
+
variable = token.last[:value]
|
12
|
+
line_no = token.last[:line]
|
13
|
+
if variable.match(/-/)
|
14
|
+
warn "Variable contains a dash on line #{line_no}"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -1,13 +1,12 @@
|
|
1
1
|
# Spacing, Identation & Whitespace
|
2
|
-
# http://
|
2
|
+
# http://docs.puppetlabs.com/guides/style_guide.html#spacing-indentation--whitespace
|
3
3
|
|
4
4
|
class PuppetLint::Plugins::CheckWhitespace < PuppetLint::CheckPlugin
|
5
|
-
def test(data)
|
5
|
+
def test(path, data)
|
6
6
|
line_no = 0
|
7
7
|
in_resource = false
|
8
|
-
|
8
|
+
selectors = []
|
9
9
|
resource_indent_length = 0
|
10
|
-
selector_indent_length = 0
|
11
10
|
data.split("\n").each do |line|
|
12
11
|
line_no += 1
|
13
12
|
|
@@ -30,44 +29,43 @@ class PuppetLint::Plugins::CheckWhitespace < PuppetLint::CheckPlugin
|
|
30
29
|
end
|
31
30
|
|
32
31
|
# SHOULD align fat comma arrows (=>) within blocks of attributes
|
33
|
-
if
|
34
|
-
if line.strip =~ /\}[,;]?$/
|
35
|
-
in_selector = false
|
36
|
-
selector_indent_length = 0
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
if line =~ /^( +\w+ +)=>/
|
32
|
+
if line =~ /^( +.+? +)=>/
|
41
33
|
line_indent = $1
|
42
34
|
if in_resource
|
43
|
-
if
|
44
|
-
if
|
45
|
-
|
35
|
+
if selectors.count > 0
|
36
|
+
if selectors.last == 0
|
37
|
+
selectors[-1] = line_indent.length
|
46
38
|
end
|
47
39
|
|
48
|
-
|
49
|
-
|
40
|
+
# check for length first
|
41
|
+
unless line_indent.length == selectors.last
|
42
|
+
warn "=> on line #{line_no} isn't properly aligned for selector"
|
50
43
|
end
|
51
44
|
|
52
|
-
|
53
|
-
in_selector = false
|
54
|
-
selector_indent_length = 0
|
55
|
-
end
|
56
|
-
else
|
45
|
+
# then for a new selector or selector finish
|
57
46
|
if line.strip.end_with? "{"
|
58
|
-
|
47
|
+
selectors.push(0)
|
48
|
+
elsif line.strip =~ /\}[,;]?$/
|
49
|
+
selectors.pop
|
59
50
|
end
|
51
|
+
else
|
60
52
|
unless line_indent.length == resource_indent_length
|
61
|
-
warn "=> on line #{line_no} isn't aligned
|
53
|
+
warn "=> on line #{line_no} isn't properly aligned for resource"
|
54
|
+
end
|
55
|
+
|
56
|
+
if line.strip.end_with? "{"
|
57
|
+
selectors.push(0)
|
62
58
|
end
|
63
59
|
end
|
64
60
|
else
|
65
61
|
resource_indent_length = line_indent.length
|
66
62
|
in_resource = true
|
67
63
|
if line.strip.end_with? "{"
|
68
|
-
|
64
|
+
selectors.push(0)
|
69
65
|
end
|
70
66
|
end
|
67
|
+
elsif line.strip =~ /\}[,;]?$/ and selectors.count > 0
|
68
|
+
selectors.pop
|
71
69
|
else
|
72
70
|
in_resource = false
|
73
71
|
resource_indent_length = 0
|
data/puppet-lint.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'puppet-lint'
|
3
|
-
s.version = '0.1.
|
3
|
+
s.version = '0.1.8'
|
4
4
|
s.homepage = 'https://github.com/rodjek/puppet-lint/'
|
5
5
|
s.summary = 'Ensure your Puppet manifests conform with the Puppetlabs style guide'
|
6
6
|
s.description = 'Checks your Puppet manifests against the Puppetlabs
|
@@ -14,6 +14,7 @@ Gem::Specification.new do |s|
|
|
14
14
|
'lib/puppet-lint/plugins/check_conditionals.rb',
|
15
15
|
'lib/puppet-lint/plugins/check_resources.rb',
|
16
16
|
'lib/puppet-lint/plugins/check_strings.rb',
|
17
|
+
'lib/puppet-lint/plugins/check_variables.rb',
|
17
18
|
'lib/puppet-lint/plugins/check_whitespace.rb',
|
18
19
|
'lib/puppet-lint/plugins.rb',
|
19
20
|
'lib/puppet-lint/tasks/puppet-lint.rb',
|
@@ -26,6 +27,7 @@ Gem::Specification.new do |s|
|
|
26
27
|
'spec/puppet-lint/check_conditionals_spec.rb',
|
27
28
|
'spec/puppet-lint/check_resources_spec.rb',
|
28
29
|
'spec/puppet-lint/check_strings_spec.rb',
|
30
|
+
'spec/puppet-lint/check_variables_spec.rb',
|
29
31
|
'spec/puppet-lint/check_whitespace_spec.rb',
|
30
32
|
'spec/spec_helper.rb',
|
31
33
|
]
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe PuppetLint::Plugins::CheckClasses do
|
4
4
|
subject do
|
5
5
|
klass = described_class.new
|
6
|
-
klass.test(code)
|
6
|
+
klass.test(defined?(path).nil? ? '' : path, code)
|
7
7
|
klass
|
8
8
|
end
|
9
9
|
|
@@ -197,4 +197,56 @@ describe PuppetLint::Plugins::CheckClasses do
|
|
197
197
|
its(:warnings) { should be_empty }
|
198
198
|
its(:errors) { should be_empty }
|
199
199
|
end
|
200
|
+
|
201
|
+
describe 'class/define parameter set to another variable' do
|
202
|
+
let(:code) { "
|
203
|
+
define foo($bar, $baz = $name, $gronk=$::fqdn) {
|
204
|
+
}"
|
205
|
+
}
|
206
|
+
|
207
|
+
its(:warnings) { should be_empty }
|
208
|
+
its(:errors) { should be_empty }
|
209
|
+
end
|
210
|
+
|
211
|
+
describe 'class/define parameter set to another variable with incorrect order' do
|
212
|
+
let(:code) { "
|
213
|
+
define foo($baz = $name, $bar, $gronk=$::fqdn) {
|
214
|
+
}"
|
215
|
+
}
|
216
|
+
|
217
|
+
its(:warnings) { should include "optional parameter listed before required parameter on line 2" }
|
218
|
+
its(:errors) { should be_empty }
|
219
|
+
end
|
220
|
+
|
221
|
+
describe 'foo::bar in foo/manifests/bar.pp' do
|
222
|
+
let(:code) { "class foo::bar { }" }
|
223
|
+
let(:path) { '/etc/puppet/modules/foo/manifests/bar.pp' }
|
224
|
+
|
225
|
+
its(:warnings) { should be_empty }
|
226
|
+
its(:errors) { should be_empty }
|
227
|
+
end
|
228
|
+
|
229
|
+
describe 'foo::bar::baz in foo/manifests/bar/baz.pp' do
|
230
|
+
let(:code) { 'define foo::bar::baz() { }' }
|
231
|
+
let(:path) { '/etc/puppet/modules/foo/manifests/bar/baz.pp' }
|
232
|
+
|
233
|
+
its(:warnings) { should be_empty }
|
234
|
+
its(:errors) { should be_empty }
|
235
|
+
end
|
236
|
+
|
237
|
+
describe 'foo in foo/manifests/init.pp' do
|
238
|
+
let(:code) { 'class foo { }' }
|
239
|
+
let(:path) { '/etc/puppet/modules/foo/manifests/init.pp' }
|
240
|
+
|
241
|
+
its(:warnings) { should be_empty }
|
242
|
+
its(:errors) { should be_empty }
|
243
|
+
end
|
244
|
+
|
245
|
+
describe 'foo::bar in foo/manifests/init.pp' do
|
246
|
+
let(:code) { 'class foo::bar { }' }
|
247
|
+
let(:path) { '/etc/puppet/modules/foo/manifests/init.pp' }
|
248
|
+
|
249
|
+
its(:warnings) { should be_empty }
|
250
|
+
its(:errors) { should include "foo::bar not in autoload module layout on line 1" }
|
251
|
+
end
|
200
252
|
end
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe PuppetLint::Plugins::CheckStrings do
|
4
4
|
subject do
|
5
5
|
klass = described_class.new
|
6
|
-
klass.test(code)
|
6
|
+
klass.test(defined?(path).nil? ? '' : path, code)
|
7
7
|
klass
|
8
8
|
end
|
9
9
|
|
@@ -35,6 +35,15 @@ describe PuppetLint::Plugins::CheckStrings do
|
|
35
35
|
its(:errors) { should be_empty }
|
36
36
|
end
|
37
37
|
|
38
|
+
if Puppet.version.start_with? "2.7"
|
39
|
+
describe 'variable containing a dash' do
|
40
|
+
let(:code) { '" $foo-bar"' }
|
41
|
+
|
42
|
+
its(:warnings) { should include "variable contains a dash on line 1" }
|
43
|
+
its(:errors) { should be_empty }
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
38
47
|
describe 'double quoted string nested in a single quoted string' do
|
39
48
|
let(:code) { "'grep \"status=sent\" /var/log/mail.log'" }
|
40
49
|
|
@@ -55,4 +64,18 @@ describe PuppetLint::Plugins::CheckStrings do
|
|
55
64
|
its(:warnings) { should be_empty }
|
56
65
|
its(:errors) { should be_empty }
|
57
66
|
end
|
67
|
+
|
68
|
+
describe 'quoted false' do
|
69
|
+
let(:code) { "class { 'foo': boolFlag => 'false' }" }
|
70
|
+
|
71
|
+
its(:warnings) { should include "quoted boolean value found on line 1" }
|
72
|
+
its(:errors) { should be_empty }
|
73
|
+
end
|
74
|
+
|
75
|
+
describe 'quoted true' do
|
76
|
+
let(:code) { "class { 'foo': boolFlag => 'true' }" }
|
77
|
+
|
78
|
+
its(:warnings) { should include "quoted boolean value found on line 1" }
|
79
|
+
its(:errors) { should be_empty }
|
80
|
+
end
|
58
81
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe PuppetLint::Plugins::CheckVariables do
|
4
|
+
subject do
|
5
|
+
klass = described_class.new
|
6
|
+
klass.test(defined?(path).nil? ? '' : path, code)
|
7
|
+
klass
|
8
|
+
end
|
9
|
+
|
10
|
+
if Puppet.version.start_with? "2.7"
|
11
|
+
describe 'a variable containing a dash' do
|
12
|
+
let(:code) { "$foo-bar" }
|
13
|
+
|
14
|
+
its(:warnings) { should include "Variable contains a dash on line 1" }
|
15
|
+
its(:errors) { should be_empty }
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -3,7 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe PuppetLint::Plugins::CheckWhitespace do
|
4
4
|
subject do
|
5
5
|
klass = described_class.new
|
6
|
-
klass.test(code)
|
6
|
+
klass.test(defined?(path).nil? ? '' : path, code)
|
7
7
|
klass
|
8
8
|
end
|
9
9
|
|
@@ -61,4 +61,53 @@ describe PuppetLint::Plugins::CheckWhitespace do
|
|
61
61
|
its(:warnings) { should be_empty }
|
62
62
|
its(:errors) { should be_empty }
|
63
63
|
end
|
64
|
+
|
65
|
+
describe 'selector inside a hash inside a resource' do
|
66
|
+
let(:code) { "
|
67
|
+
server => {
|
68
|
+
ensure => ensure => $ensure ? {
|
69
|
+
present => directory,
|
70
|
+
absent => undef,
|
71
|
+
},
|
72
|
+
ip => '192.168.1.1'
|
73
|
+
},
|
74
|
+
owner => 'foo4',
|
75
|
+
group => 'foo4',
|
76
|
+
mode => '0755'," }
|
77
|
+
|
78
|
+
its(:warnings) { should be_empty }
|
79
|
+
its(:errors) { should be_empty }
|
80
|
+
end
|
81
|
+
|
82
|
+
describe 'issue #37' do
|
83
|
+
let(:code) { "
|
84
|
+
class { 'lvs::base':
|
85
|
+
virtualeservers => {
|
86
|
+
'192.168.2.13' => {
|
87
|
+
vport => '11025',
|
88
|
+
service => 'smtp',
|
89
|
+
scheduler => 'wlc',
|
90
|
+
protocol => 'tcp',
|
91
|
+
checktype => 'external',
|
92
|
+
checkcommand => '/path/to/checkscript',
|
93
|
+
real_servers => {
|
94
|
+
'server01' => {
|
95
|
+
real_server => '192.168.2.14',
|
96
|
+
real_port => '25',
|
97
|
+
forwarding => 'masq',
|
98
|
+
},
|
99
|
+
'server02' => {
|
100
|
+
real_server => '192.168.2.15',
|
101
|
+
real_port => '25',
|
102
|
+
forwarding => 'masq',
|
103
|
+
}
|
104
|
+
}
|
105
|
+
}
|
106
|
+
}
|
107
|
+
}"
|
108
|
+
}
|
109
|
+
|
110
|
+
its(:warnings) { should be_empty }
|
111
|
+
its(:errors) { should be_empty }
|
112
|
+
end
|
64
113
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puppet-lint
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 11
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 8
|
10
|
+
version: 0.1.8
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Tim Sharpe
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-12-27 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: rspec
|
@@ -48,6 +48,7 @@ files:
|
|
48
48
|
- lib/puppet-lint/plugins/check_conditionals.rb
|
49
49
|
- lib/puppet-lint/plugins/check_resources.rb
|
50
50
|
- lib/puppet-lint/plugins/check_strings.rb
|
51
|
+
- lib/puppet-lint/plugins/check_variables.rb
|
51
52
|
- lib/puppet-lint/plugins/check_whitespace.rb
|
52
53
|
- lib/puppet-lint/plugins.rb
|
53
54
|
- lib/puppet-lint/tasks/puppet-lint.rb
|
@@ -60,6 +61,7 @@ files:
|
|
60
61
|
- spec/puppet-lint/check_conditionals_spec.rb
|
61
62
|
- spec/puppet-lint/check_resources_spec.rb
|
62
63
|
- spec/puppet-lint/check_strings_spec.rb
|
64
|
+
- spec/puppet-lint/check_variables_spec.rb
|
63
65
|
- spec/puppet-lint/check_whitespace_spec.rb
|
64
66
|
- spec/spec_helper.rb
|
65
67
|
homepage: https://github.com/rodjek/puppet-lint/
|