puppet-lint 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/lib/puppet-lint.rb CHANGED
@@ -5,7 +5,7 @@ require 'puppet'
5
5
  class PuppetLint::NoCodeError < StandardError; end
6
6
 
7
7
  class PuppetLint
8
- VERSION = '0.0.5'
8
+ VERSION = '0.0.6'
9
9
 
10
10
  attr_reader :code, :file
11
11
 
@@ -4,8 +4,10 @@
4
4
  class PuppetLint::Plugins::CheckWhitespace < PuppetLint::CheckPlugin
5
5
  def test(data)
6
6
  line_no = 0
7
- in_block = false
8
- prefix_length = 0
7
+ in_resource = false
8
+ in_selector = false
9
+ resource_indent_length = 0
10
+ selector_indent_length = 0
9
11
  data.split("\n").each do |line|
10
12
  line_no += 1
11
13
 
@@ -16,7 +18,9 @@ class PuppetLint::Plugins::CheckWhitespace < PuppetLint::CheckPlugin
16
18
  error "trailing whitespace found on line #{line_no}" if line.end_with? " "
17
19
 
18
20
  # SHOULD NOT exceed an 80 character line width
19
- warn "line #{line_no} has more than 80 characters" if line.length > 80
21
+ unless line =~ /puppet:\/\//
22
+ warn "line #{line_no} has more than 80 characters" if line.length > 80
23
+ end
20
24
 
21
25
  # MUST use two-space soft tabs
22
26
  line.scan(/^ +/) do |prefix|
@@ -27,17 +31,33 @@ class PuppetLint::Plugins::CheckWhitespace < PuppetLint::CheckPlugin
27
31
 
28
32
  # SHOULD align fat comma arrows (=>) within blocks of attributes
29
33
  if line =~ /^( +\w+ +)=>/
30
- if in_block
31
- unless $1.length == prefix_length
32
- warn "=> on line #{line_no} isn't aligned with the previous line"
34
+ line_indent = $1
35
+ if in_resource
36
+ if in_selector
37
+ unless line_indent.length == selector_indent_length
38
+ warn "=> on line #{line_no} isn't aligned with the previous line"
39
+ end
40
+
41
+ if line.strip =~ /\}[,;]?$/
42
+ in_selector = false
43
+ selector_indent_length = 0
44
+ end
45
+ else
46
+ if line.strip.end_with? "{"
47
+ in_selector = true
48
+ selector_indent_length = resource_indent_length + 2
49
+ end
50
+ unless line_indent.length == resource_indent_length
51
+ warn "=> on line #{line_no} isn't aligned with the previous line"
52
+ end
33
53
  end
34
54
  else
35
- prefix_length = $1.length
36
- in_block = true
55
+ resource_indent_length = line_indent.length
56
+ in_resource = true
37
57
  end
38
58
  else
39
- in_block = false
40
- prefix_length = 0
59
+ in_resource = false
60
+ resource_indent_length = 0
41
61
  end
42
62
  end
43
63
  end
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.0.5'
3
+ s.version = '0.0.6'
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
@@ -22,6 +22,7 @@ Gem::Specification.new do |s|
22
22
  'README.md',
23
23
  'spec/puppet-lint/check_resources_spec.rb',
24
24
  'spec/puppet-lint/check_strings_spec.rb',
25
+ 'spec/puppet-lint/check_whitespace_spec.rb',
25
26
  'spec/spec_helper.rb',
26
27
  ]
27
28
 
@@ -17,7 +17,7 @@ describe PuppetLint::Plugins::CheckStrings do
17
17
  describe 'multiple strings in a line' do
18
18
  let(:code) { "\"aoeu\" '${foo}'" }
19
19
 
20
- its(:warnings) { should be_empty }
20
+ its(:warnings) { should include "double quoted string containing no variables on line 1" }
21
21
  its(:errors) { should include "single quoted string containing a variable found on line 1" }
22
22
  end
23
23
  end
@@ -0,0 +1,35 @@
1
+ require 'spec_helper'
2
+
3
+ describe PuppetLint::Plugins::CheckWhitespace do
4
+ subject do
5
+ klass = described_class.new
6
+ klass.test(code)
7
+ klass
8
+ end
9
+
10
+ describe 'selectors inside a resource' do
11
+ let(:code) { "
12
+ file { 'foo':
13
+ ensure => $ensure,
14
+ require => $ensure ? {
15
+ present => Class['tomcat::install'],
16
+ absent => undef,
17
+ },
18
+ }"
19
+ }
20
+
21
+ its(:warnings) { should be_empty }
22
+ its(:errors) { should be_empty }
23
+ end
24
+
25
+ describe 'file resource with a source line > 80c' do
26
+ let(:code) { "
27
+ file {
28
+ source => 'puppet:///modules/certificates/etc/ssl/private/wildcard.example.com.crt',
29
+ }"
30
+ }
31
+
32
+ its(:warnings) { should be_empty }
33
+ its(:errors) { should be_empty }
34
+ end
35
+ 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: 21
4
+ hash: 19
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 5
10
- version: 0.0.5
9
+ - 6
10
+ version: 0.0.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - Tim Sharpe
@@ -56,6 +56,7 @@ files:
56
56
  - README.md
57
57
  - spec/puppet-lint/check_resources_spec.rb
58
58
  - spec/puppet-lint/check_strings_spec.rb
59
+ - spec/puppet-lint/check_whitespace_spec.rb
59
60
  - spec/spec_helper.rb
60
61
  homepage: https://github.com/rodjek/puppet-lint/
61
62
  licenses: []