puppet-lint 2.3.2 → 2.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. data/.gitignore +1 -0
  2. data/.rubocop.yml +1 -1
  3. data/.travis.yml +2 -1
  4. data/CHANGELOG.md +17 -0
  5. data/Rakefile +3 -0
  6. data/appveyor.yml +1 -1
  7. data/lib/puppet-lint.rb +2 -1
  8. data/lib/puppet-lint/checks.rb +3 -3
  9. data/lib/puppet-lint/configuration.rb +2 -2
  10. data/lib/puppet-lint/lexer.rb +6 -6
  11. data/lib/puppet-lint/monkeypatches.rb +51 -0
  12. data/lib/puppet-lint/optparser.rb +1 -1
  13. data/lib/puppet-lint/plugins/check_classes/arrow_on_right_operand_line.rb +1 -1
  14. data/lib/puppet-lint/plugins/check_classes/autoloader_layout.rb +1 -1
  15. data/lib/puppet-lint/plugins/check_classes/class_inherits_from_params_class.rb +1 -1
  16. data/lib/puppet-lint/plugins/check_classes/code_on_top_scope.rb +1 -1
  17. data/lib/puppet-lint/plugins/check_classes/inherits_across_namespaces.rb +1 -1
  18. data/lib/puppet-lint/plugins/check_classes/names_containing_dash.rb +1 -1
  19. data/lib/puppet-lint/plugins/check_classes/names_containing_uppercase.rb +1 -1
  20. data/lib/puppet-lint/plugins/check_classes/nested_classes_or_defines.rb +1 -1
  21. data/lib/puppet-lint/plugins/check_classes/parameter_order.rb +1 -1
  22. data/lib/puppet-lint/plugins/check_classes/right_to_left_relationship.rb +1 -1
  23. data/lib/puppet-lint/plugins/check_classes/variable_scope.rb +1 -1
  24. data/lib/puppet-lint/plugins/check_comments/slash_comments.rb +1 -1
  25. data/lib/puppet-lint/plugins/check_comments/star_comments.rb +1 -1
  26. data/lib/puppet-lint/plugins/check_conditionals/case_without_default.rb +1 -1
  27. data/lib/puppet-lint/plugins/check_conditionals/selector_inside_resource.rb +1 -1
  28. data/lib/puppet-lint/plugins/check_documentation/documentation.rb +1 -1
  29. data/lib/puppet-lint/plugins/check_nodes/unquoted_node_name.rb +2 -2
  30. data/lib/puppet-lint/plugins/check_resources/duplicate_params.rb +1 -1
  31. data/lib/puppet-lint/plugins/check_resources/ensure_first_param.rb +1 -1
  32. data/lib/puppet-lint/plugins/check_resources/ensure_not_symlink_target.rb +1 -1
  33. data/lib/puppet-lint/plugins/check_resources/file_mode.rb +1 -1
  34. data/lib/puppet-lint/plugins/check_resources/unquoted_file_mode.rb +1 -1
  35. data/lib/puppet-lint/plugins/check_resources/unquoted_resource_title.rb +1 -1
  36. data/lib/puppet-lint/plugins/check_strings/double_quoted_strings.rb +1 -1
  37. data/lib/puppet-lint/plugins/check_strings/only_variable_string.rb +1 -1
  38. data/lib/puppet-lint/plugins/check_strings/puppet_url_without_modules.rb +1 -1
  39. data/lib/puppet-lint/plugins/check_strings/quoted_booleans.rb +1 -1
  40. data/lib/puppet-lint/plugins/check_strings/single_quote_string_with_variables.rb +1 -1
  41. data/lib/puppet-lint/plugins/check_strings/variables_not_enclosed.rb +1 -1
  42. data/lib/puppet-lint/plugins/check_variables/variable_contains_dash.rb +1 -1
  43. data/lib/puppet-lint/plugins/check_variables/variable_is_lowercase.rb +1 -1
  44. data/lib/puppet-lint/plugins/check_whitespace/140chars.rb +1 -1
  45. data/lib/puppet-lint/plugins/check_whitespace/2sp_soft_tabs.rb +1 -1
  46. data/lib/puppet-lint/plugins/check_whitespace/80chars.rb +1 -1
  47. data/lib/puppet-lint/plugins/check_whitespace/arrow_alignment.rb +1 -1
  48. data/lib/puppet-lint/plugins/check_whitespace/hard_tabs.rb +1 -1
  49. data/lib/puppet-lint/plugins/check_whitespace/trailing_whitespace.rb +1 -1
  50. data/lib/puppet-lint/tasks/puppet-lint.rb +1 -1
  51. data/lib/puppet-lint/tasks/release_test.rb +84 -0
  52. data/lib/puppet-lint/version.rb +1 -1
  53. data/spec/puppet-lint/bin_spec.rb +3 -3
  54. data/spec/puppet-lint/checks_spec.rb +4 -4
  55. data/spec/puppet-lint/configuration_spec.rb +10 -2
  56. data/spec/puppet-lint/lexer_spec.rb +1 -1
  57. data/spec/spec_helper.rb +1 -1
  58. metadata +50 -82
  59. checksums.yaml +0 -7
data/.gitignore CHANGED
@@ -9,3 +9,4 @@ coverage/
9
9
  /_site/
10
10
  .idea
11
11
  /*.pp
12
+ /tmp/
@@ -62,7 +62,7 @@ Style/MethodCalledOnDoEndBlock:
62
62
  Style/RegexpLiteral:
63
63
  EnforcedStyle: percent_r
64
64
  Style/TrailingCommaInArguments:
65
- EnforcedStyleForMultiline: comma
65
+ EnforcedStyleForMultiline: no_comma
66
66
  Style/TrailingCommaInLiteral:
67
67
  EnforcedStyleForMultiline: comma
68
68
  Style/FormatStringToken:
@@ -9,8 +9,9 @@ bundler_args: --without development system_tests
9
9
  script:
10
10
  - bundle exec rake $CHECK
11
11
  env:
12
- - CHECK=test
12
+ - CHECK=ci
13
13
  rvm:
14
+ - 1.8.7
14
15
  - 1.9.3
15
16
  - 2.0.0
16
17
  - 2.1.10
@@ -1,5 +1,22 @@
1
1
  # Change Log
2
2
 
3
+ ## [2.3.3](https://github.com/rodjek/puppet-lint/tree/2.3.3) (2017-09-28)
4
+ [Full Changelog](https://github.com/rodjek/puppet-lint/compare/2.3.2...2.3.3)
5
+
6
+ **Closed issues:**
7
+
8
+ - 2.3.2 - Rakefile's ignore\_paths not respected [\#760](https://github.com/rodjek/puppet-lint/issues/760)
9
+ - 2.3.1 - Puppet lint fails with 1.8.7-p371 and Puppet 3.8.0 [\#759](https://github.com/rodjek/puppet-lint/issues/759)
10
+ - 2.3.1: puppet-lint does not show errors/warnings --error-level option. [\#756](https://github.com/rodjek/puppet-lint/issues/756)
11
+
12
+ **Merged pull requests:**
13
+
14
+ - Add some basic acceptance tests [\#764](https://github.com/rodjek/puppet-lint/pull/764) ([rodjek](https://github.com/rodjek))
15
+ - Restore Ruby 1.8.7 support [\#763](https://github.com/rodjek/puppet-lint/pull/763) ([rodjek](https://github.com/rodjek))
16
+ - Don't override ignore\_paths set in rake task with default value [\#762](https://github.com/rodjek/puppet-lint/pull/762) ([rodjek](https://github.com/rodjek))
17
+ - Add spec for issue raised in \#754 \#756 [\#761](https://github.com/rodjek/puppet-lint/pull/761) ([rodjek](https://github.com/rodjek))
18
+ - Fix setup of default log\_format in PuppetLink.configuration when it is empty. [\#757](https://github.com/rodjek/puppet-lint/pull/757) ([zekefast](https://github.com/zekefast))
19
+
3
20
  ## [2.3.2](https://github.com/rodjek/puppet-lint/tree/2.3.2) (2017-09-27)
4
21
  [Full Changelog](https://github.com/rodjek/puppet-lint/compare/2.3.1...2.3.2)
5
22
 
data/Rakefile CHANGED
@@ -1,6 +1,7 @@
1
1
  require 'rake'
2
2
  require 'rspec/core/rake_task'
3
3
  require 'puppet-lint'
4
+ require 'puppet-lint/tasks/release_test'
4
5
 
5
6
  task :default => :test
6
7
 
@@ -27,4 +28,6 @@ rescue LoadError
27
28
  $stderr.puts 'Rubocop is not available for this version of Ruby.'
28
29
  end
29
30
 
31
+ task :ci => [:test, :release_test]
32
+
30
33
  # vim: syntax=ruby
@@ -26,4 +26,4 @@ before_test:
26
26
  - bundle -v
27
27
 
28
28
  test_script:
29
- - bundle exec rake test
29
+ - bundle exec rake ci
@@ -8,6 +8,7 @@ require 'puppet-lint/configuration'
8
8
  require 'puppet-lint/data'
9
9
  require 'puppet-lint/checks'
10
10
  require 'puppet-lint/bin'
11
+ require 'puppet-lint/monkeypatches'
11
12
 
12
13
  class PuppetLint::NoCodeError < StandardError; end
13
14
  class PuppetLint::NoFix < StandardError; end
@@ -89,7 +90,7 @@ class PuppetLint
89
90
  #
90
91
  # Returns a format String to be used with String#%.
91
92
  def log_format
92
- if configuration.log_format == ''
93
+ if configuration.log_format.nil? || configuration.log_format.empty?
93
94
  ## recreate previous old log format as far as thats possible.
94
95
  format = '%{KIND}: %{message} on line %{line}'
95
96
  format.prepend('%{path} - ') if configuration.with_filename
@@ -68,7 +68,7 @@ class PuppetLint::Checks
68
68
 
69
69
  @problems
70
70
  rescue => e
71
- puts <<-END.gsub(%r{^ {6}}, '')
71
+ $stdout.puts <<-END.gsub(%r{^ {6}}, '')
72
72
  Whoops! It looks like puppet-lint has encountered an error that it doesn't
73
73
  know how to handle. Please open an issue at https://github.com/rodjek/puppet-lint
74
74
  and paste the following output into the issue description.
@@ -80,7 +80,7 @@ class PuppetLint::Checks
80
80
  END
81
81
 
82
82
  if File.readable?(fileinfo)
83
- puts [
83
+ $stdout.puts [
84
84
  'file contents:',
85
85
  '```',
86
86
  File.read(fileinfo),
@@ -88,7 +88,7 @@ class PuppetLint::Checks
88
88
  ].join("\n")
89
89
  end
90
90
 
91
- puts [
91
+ $stdout.puts [
92
92
  'error:',
93
93
  '```',
94
94
  "#{e.class}: #{e.message}",
@@ -50,9 +50,9 @@ class PuppetLint
50
50
  #
51
51
  # <option>=(value)
52
52
  def method_missing(method, *args, &_block)
53
- super unless method.to_s =~ %r{^(?<option>\w+)=?$}
53
+ super unless method.to_s =~ %r{^(\w+)=?$}
54
54
 
55
- option = Regexp.last_match(:option)
55
+ option = Regexp.last_match(1)
56
56
  add_option(option.to_s) if settings[option].nil?
57
57
  settings[option] = args[0] unless args.empty?
58
58
  end
@@ -170,7 +170,7 @@ class PuppetLint
170
170
  # \v == vertical tab
171
171
  # \f == form feed
172
172
  # \p{Zs} == ASCII + Unicode non-linebreaking whitespace
173
- WHITESPACE_RE = %r{[\t\v\f\p{Zs}]}
173
+ WHITESPACE_RE = RUBY_VERSION == '1.8.7' ? %r{[\t\v\f ]} : %r{[\t\v\f\p{Zs}]}
174
174
 
175
175
  # Internal: Access the internal token storage.
176
176
  #
@@ -266,7 +266,7 @@ class PuppetLint
266
266
  else
267
267
  heredoc_tag = heredoc_queue.shift
268
268
  heredoc_name = heredoc_tag[%r{\A"?(.+?)"?(:.+?)?(/.*)?\Z}, 1]
269
- str_contents = StringScanner.new(code[i + length..-1]).scan_until(%r{\|?\s*-?\s*#{heredoc_name}})
269
+ str_contents = StringScanner.new(code[(i + length)..-1]).scan_until(%r{\|?\s*-?\s*#{heredoc_name}})
270
270
  interpolate_heredoc(str_contents, heredoc_tag)
271
271
  length += str_contents.size
272
272
  end
@@ -282,8 +282,8 @@ class PuppetLint
282
282
  unless heredoc_queue.empty?
283
283
  heredoc_tag = heredoc_queue.shift
284
284
  heredoc_name = heredoc_tag[%r{\A"?(.+?)"?(:.+?)?(/.*)?\Z}, 1]
285
- str_contents = StringScanner.new(code[i + length..-1]).scan_until(%r{\|?\s*-?\s*#{heredoc_name}})
286
- _ = code[0..i + length].split("\n")
285
+ str_contents = StringScanner.new(code[(i + length)..-1]).scan_until(%r{\|?\s*-?\s*#{heredoc_name}})
286
+ _ = code[0..(i + length)].split("\n")
287
287
  interpolate_heredoc(str_contents, heredoc_tag)
288
288
  length += str_contents.size
289
289
  end
@@ -557,8 +557,8 @@ class PuppetLint
557
557
 
558
558
  str = string.scan_until(regexp)
559
559
  begin
560
- str =~ %r{\A(?<value>.*?)(?<terminator>[$]+|\|?\s*-?#{Regexp.escape(eos_text)})\Z}m
561
- [Regexp.last_match(:value), Regexp.last_match(:terminator)]
560
+ str =~ %r{\A(.*?)([$]+|\|?\s*-?#{Regexp.escape(eos_text)})\Z}m
561
+ [Regexp.last_match(1), Regexp.last_match(2)]
562
562
  rescue
563
563
  [nil, nil]
564
564
  end
@@ -0,0 +1,51 @@
1
+ begin
2
+ '%{test}' % { :test => 'replaced' } == 'replaced' # rubocop:disable Style/FormatString
3
+ rescue
4
+ # monkeypatch String#% into Ruby 1.8.7
5
+ class String
6
+ Percent = instance_method('%') unless defined?(Percent)
7
+
8
+ def %(*a, &b)
9
+ a.flatten!
10
+
11
+ string = case a.last
12
+ when Hash
13
+ expand(a.pop)
14
+ else
15
+ self
16
+ end
17
+
18
+ if a.empty?
19
+ string
20
+ else
21
+ Percent.bind(string).call(a, &b)
22
+ end
23
+ end
24
+
25
+ def expand!(vars = {})
26
+ loop do
27
+ changed = false
28
+ vars.each do |var, value|
29
+ var = var.to_s
30
+ var.gsub!(%r{[^a-zA-Z0-9_]}, '')
31
+ changed = gsub!(%r{\%\{#{var}\}}, value.to_s)
32
+ end
33
+ break unless changed
34
+ end
35
+ self
36
+ end
37
+
38
+ def expand(opts = {})
39
+ dup.expand!(opts)
40
+ end
41
+ end
42
+ end
43
+
44
+ unless String.respond_to?(:prepend)
45
+ # monkeypatch String#prepend into Ruby 1.8.7
46
+ class String
47
+ def prepend(lead)
48
+ replace("#{lead}#{self}")
49
+ end
50
+ end
51
+ end
@@ -44,7 +44,7 @@ class PuppetLint::OptParser
44
44
  opts.on(
45
45
  '--error-level LEVEL',
46
46
  [:all, :warning, :error],
47
- 'The level of error to return (warning, error or all).',
47
+ 'The level of error to return (warning, error or all).'
48
48
  ) do |el|
49
49
  PuppetLint.configuration.error_level = el
50
50
  end
@@ -12,7 +12,7 @@ PuppetLint.new_check(:arrow_on_right_operand_line) do
12
12
  :message => 'arrow should be on the right operand\'s line',
13
13
  :line => token.line,
14
14
  :column => token.column,
15
- :token => token,
15
+ :token => token
16
16
  )
17
17
  end
18
18
  end
@@ -27,7 +27,7 @@ PuppetLint.new_check(:autoloader_layout) do
27
27
  :error,
28
28
  :message => "#{title_token.value} not in autoload module layout",
29
29
  :line => title_token.line,
30
- :column => title_token.column,
30
+ :column => title_token.column
31
31
  )
32
32
  end
33
33
  end
@@ -11,7 +11,7 @@ PuppetLint.new_check(:class_inherits_from_params_class) do
11
11
  :warning,
12
12
  :message => 'class inheriting from params class',
13
13
  :line => class_idx[:inherited_token].line,
14
- :column => class_idx[:inherited_token].column,
14
+ :column => class_idx[:inherited_token].column
15
15
  )
16
16
  end
17
17
  end
@@ -13,7 +13,7 @@ PuppetLint.new_check(:code_on_top_scope) do
13
13
  :warning,
14
14
  :message => "code outside of class or define block - #{token.value}",
15
15
  :line => token.line,
16
- :column => token.column,
16
+ :column => token.column
17
17
  )
18
18
  end
19
19
  end
@@ -16,7 +16,7 @@ PuppetLint.new_check(:inherits_across_namespaces) do
16
16
  :warning,
17
17
  :message => 'class inherits across module namespaces',
18
18
  :line => class_idx[:inherited_token].line,
19
- :column => class_idx[:inherited_token].column,
19
+ :column => class_idx[:inherited_token].column
20
20
  )
21
21
  end
22
22
  end
@@ -17,7 +17,7 @@ PuppetLint.new_check(:names_containing_dash) do
17
17
  :error,
18
18
  :message => "#{obj_type} name containing a dash",
19
19
  :line => class_idx[:name_token].line,
20
- :column => class_idx[:name_token].column,
20
+ :column => class_idx[:name_token].column
21
21
  )
22
22
  end
23
23
  end
@@ -18,7 +18,7 @@ PuppetLint.new_check(:names_containing_uppercase) do
18
18
  :message => "#{obj_type} '#{class_idx[:name_token].value}' contains illegal uppercase",
19
19
  :line => class_idx[:name_token].line,
20
20
  :column => class_idx[:name_token].column,
21
- :token => class_idx[:name_token],
21
+ :token => class_idx[:name_token]
22
22
  )
23
23
  end
24
24
  end
@@ -19,7 +19,7 @@ PuppetLint.new_check(:nested_classes_or_defines) do
19
19
  :warning,
20
20
  :message => "#{type} defined inside a class",
21
21
  :line => token.line,
22
- :column => token.column,
22
+ :column => token.column
23
23
  )
24
24
  end
25
25
  end
@@ -32,7 +32,7 @@ PuppetLint.new_check(:parameter_order) do
32
32
  :warning,
33
33
  :message => msg,
34
34
  :line => token.line,
35
- :column => token.column,
35
+ :column => token.column
36
36
  )
37
37
  end
38
38
  end
@@ -9,7 +9,7 @@ PuppetLint.new_check(:right_to_left_relationship) do
9
9
  :warning,
10
10
  :message => 'right-to-left (<-) relationship',
11
11
  :line => token.line,
12
- :column => token.column,
12
+ :column => token.column
13
13
  )
14
14
  end
15
15
  end
@@ -132,7 +132,7 @@ PuppetLint.new_check(:variable_scope) do
132
132
  :warning,
133
133
  :message => msg,
134
134
  :line => token.line,
135
- :column => token.column,
135
+ :column => token.column
136
136
  )
137
137
  end
138
138
  end
@@ -12,7 +12,7 @@ PuppetLint.new_check(:slash_comments) do
12
12
  :message => '// comment found',
13
13
  :line => token.line,
14
14
  :column => token.column,
15
- :token => token,
15
+ :token => token
16
16
  )
17
17
  end
18
18
  end
@@ -12,7 +12,7 @@ PuppetLint.new_check(:star_comments) do
12
12
  :message => '/* */ comment found',
13
13
  :line => token.line,
14
14
  :column => token.column,
15
- :token => token,
15
+ :token => token
16
16
  )
17
17
  end
18
18
  end
@@ -37,7 +37,7 @@ PuppetLint.new_check(:case_without_default) do
37
37
  :warning,
38
38
  :message => 'case statement without a default case',
39
39
  :line => case_tokens.first.line,
40
- :column => case_tokens.first.column,
40
+ :column => case_tokens.first.column
41
41
  )
42
42
  end
43
43
  end
@@ -14,7 +14,7 @@ PuppetLint.new_check(:selector_inside_resource) do
14
14
  :warning,
15
15
  :message => 'selector inside resource block',
16
16
  :line => token.line,
17
- :column => token.column,
17
+ :column => token.column
18
18
  )
19
19
  end
20
20
  end
@@ -24,7 +24,7 @@ PuppetLint.new_check(:documentation) do
24
24
  :warning,
25
25
  :message => "#{type} not documented",
26
26
  :line => first_token.line,
27
- :column => first_token.column,
27
+ :column => first_token.column
28
28
  )
29
29
  end
30
30
  end
@@ -14,7 +14,7 @@ PuppetLint.new_check(:unquoted_node_name) do
14
14
  :check => :syntax,
15
15
  :message => 'Syntax error (try running `puppet parser validate <file>`)',
16
16
  :line => node.line,
17
- :column => node.column,
17
+ :column => node.column
18
18
  )
19
19
  next
20
20
  end
@@ -29,7 +29,7 @@ PuppetLint.new_check(:unquoted_node_name) do
29
29
  :message => 'unquoted node name found',
30
30
  :line => token.line,
31
31
  :column => token.column,
32
- :token => token,
32
+ :token => token
33
33
  )
34
34
  end
35
35
  end
@@ -26,7 +26,7 @@ PuppetLint.new_check(:duplicate_params) do
26
26
  :error,
27
27
  :message => 'duplicate parameter found in resource',
28
28
  :line => prev_token.line,
29
- :column => prev_token.column,
29
+ :column => prev_token.column
30
30
  )
31
31
  else
32
32
  seen_params[level] << prev_token.value
@@ -20,7 +20,7 @@ PuppetLint.new_check(:ensure_first_param) do
20
20
  :message => "ensure found on line but it's not the first attribute",
21
21
  :line => ensure_token.line,
22
22
  :column => ensure_token.column,
23
- :resource => resource,
23
+ :resource => resource
24
24
  )
25
25
  end
26
26
  end
@@ -20,7 +20,7 @@ PuppetLint.new_check(:ensure_not_symlink_target) do
20
20
  :line => value_token.line,
21
21
  :column => value_token.column,
22
22
  :param_token => ensure_token,
23
- :value_token => value_token,
23
+ :value_token => value_token
24
24
  )
25
25
  end
26
26
  end
@@ -26,7 +26,7 @@ PuppetLint.new_check(:file_mode) do
26
26
  :message => MSG,
27
27
  :line => value_token.line,
28
28
  :column => value_token.column,
29
- :token => value_token,
29
+ :token => value_token
30
30
  )
31
31
  end
32
32
  end
@@ -20,7 +20,7 @@ PuppetLint.new_check(:unquoted_file_mode) do
20
20
  :message => 'unquoted file mode',
21
21
  :line => value_token.line,
22
22
  :column => value_token.column,
23
- :token => value_token,
23
+ :token => value_token
24
24
  )
25
25
  end
26
26
  end
@@ -12,7 +12,7 @@ PuppetLint.new_check(:unquoted_resource_title) do
12
12
  :message => 'unquoted resource title',
13
13
  :line => token.line,
14
14
  :column => token.column,
15
- :token => token,
15
+ :token => token
16
16
  )
17
17
  end
18
18
  end
@@ -16,7 +16,7 @@ PuppetLint.new_check(:double_quoted_strings) do
16
16
  :message => 'double quoted string containing no variables',
17
17
  :line => token.line,
18
18
  :column => token.column,
19
- :token => token,
19
+ :token => token
20
20
  )
21
21
  end
22
22
  end
@@ -30,7 +30,7 @@ PuppetLint.new_check(:only_variable_string) do
30
30
  :column => var_token.column,
31
31
  :start_token => start_token,
32
32
  :var_token => var_token,
33
- :end_token => eos_token,
33
+ :end_token => eos_token
34
34
  )
35
35
  end
36
36
  break
@@ -15,7 +15,7 @@ PuppetLint.new_check(:puppet_url_without_modules) do
15
15
  :message => 'puppet:// URL without modules/ found',
16
16
  :line => token.line,
17
17
  :column => token.column,
18
- :token => token,
18
+ :token => token
19
19
  )
20
20
  end
21
21
  end
@@ -16,7 +16,7 @@ PuppetLint.new_check(:quoted_booleans) do
16
16
  :message => 'quoted boolean value found',
17
17
  :line => token.line,
18
18
  :column => token.column,
19
- :token => token,
19
+ :token => token
20
20
  )
21
21
  end
22
22
  end
@@ -11,7 +11,7 @@ PuppetLint.new_check(:single_quote_string_with_variables) do
11
11
  :error,
12
12
  :message => 'single quoted string containing a variable found',
13
13
  :line => token.line,
14
- :column => token.column,
14
+ :column => token.column
15
15
  )
16
16
  end
17
17
  end
@@ -13,7 +13,7 @@ PuppetLint.new_check(:variables_not_enclosed) do
13
13
  :message => 'variable not enclosed in {}',
14
14
  :line => token.line,
15
15
  :column => token.column,
16
- :token => token,
16
+ :token => token
17
17
  )
18
18
  end
19
19
  end
@@ -15,7 +15,7 @@ PuppetLint.new_check(:variable_contains_dash) do
15
15
  :warning,
16
16
  :message => 'variable contains a dash',
17
17
  :line => token.line,
18
- :column => token.column,
18
+ :column => token.column
19
19
  )
20
20
  end
21
21
  end
@@ -15,7 +15,7 @@ PuppetLint.new_check(:variable_is_lowercase) do
15
15
  :warning,
16
16
  :message => 'variable contains an uppercase letter',
17
17
  :line => token.line,
18
- :column => token.column,
18
+ :column => token.column
19
19
  )
20
20
  end
21
21
  end
@@ -14,7 +14,7 @@ PuppetLint.new_check(:'140chars') do
14
14
  :warning,
15
15
  :message => 'line has more than 140 characters',
16
16
  :line => idx + 1,
17
- :column => 140,
17
+ :column => 140
18
18
  )
19
19
  end
20
20
  end
@@ -13,7 +13,7 @@ PuppetLint.new_check(:'2sp_soft_tabs') do
13
13
  :error,
14
14
  :message => 'two-space soft tabs not used',
15
15
  :line => token.line,
16
- :column => token.column,
16
+ :column => token.column
17
17
  )
18
18
  end
19
19
  end
@@ -13,7 +13,7 @@ PuppetLint.new_check(:'80chars') do
13
13
  :warning,
14
14
  :message => 'line has more than 80 characters',
15
15
  :line => idx + 1,
16
- :column => 80,
16
+ :column => 80
17
17
  )
18
18
  end
19
19
  end
@@ -73,7 +73,7 @@ PuppetLint.new_check(:arrow_alignment) do
73
73
  :token => arrow_tok,
74
74
  :arrow_column => arrow_column[level_idx],
75
75
  :newline => arrows_on_line.index(arrow_tok) != 0,
76
- :newline_indent => param_column[level_idx] - 1,
76
+ :newline_indent => param_column[level_idx] - 1
77
77
  )
78
78
  end
79
79
  end
@@ -14,7 +14,7 @@ PuppetLint.new_check(:hard_tabs) do
14
14
  :message => 'tab character found',
15
15
  :line => token.line,
16
16
  :column => token.column,
17
- :token => token,
17
+ :token => token
18
18
  )
19
19
  end
20
20
  end
@@ -14,7 +14,7 @@ PuppetLint.new_check(:trailing_whitespace) do
14
14
  :message => 'trailing whitespace found',
15
15
  :line => token.line,
16
16
  :column => token.column,
17
- :token => token,
17
+ :token => token
18
18
  )
19
19
  end
20
20
  end
@@ -65,7 +65,7 @@ class PuppetLint
65
65
  end
66
66
 
67
67
  if PuppetLint.configuration.ignore_paths
68
- @ignore_paths = PuppetLint.configuration.ignore_paths
68
+ @ignore_paths ||= PuppetLint.configuration.ignore_paths
69
69
  end
70
70
 
71
71
  if PuppetLint.configuration.pattern
@@ -0,0 +1,84 @@
1
+ require 'rake'
2
+ require 'open3'
3
+ require 'English'
4
+
5
+ def run_cmd(message, *cmd)
6
+ print(" #{message}... ")
7
+
8
+ if Open3.respond_to?(:capture2e)
9
+ output, status = Open3.capture2e(*cmd)
10
+ else
11
+ output = ''
12
+
13
+ Open3.popen3(*cmd) do |stdin, stdout, stderr|
14
+ stdin.close
15
+ output += stdout.read
16
+ output += stderr.read
17
+ end
18
+ status = $CHILD_STATUS.dup
19
+ end
20
+
21
+ if status.success?
22
+ puts 'Done'
23
+ else
24
+ puts 'FAILED'
25
+ end
26
+
27
+ [output.strip, status.success?]
28
+ end
29
+
30
+ task :release_test do
31
+ branch = if ENV['APPVEYOR']
32
+ ENV['APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH']
33
+ elsif ENV['TRAVIS']
34
+ ENV['TRAVIS_PULL_REQUEST_BRANCH']
35
+ else
36
+ false
37
+ end
38
+
39
+ if branch && branch !~ %r{\A\d+_\d+_\d+_release\Z}
40
+ puts 'Skipping release tests on feature branch'
41
+ exit
42
+ end
43
+
44
+ modules_to_test = [
45
+ 'puppetlabs/puppetlabs-apt',
46
+ 'puppetlabs/puppetlabs-tomcat',
47
+ 'puppetlabs/puppetlabs-apache',
48
+ 'puppetlabs/puppetlabs-mysql',
49
+ 'puppetlabs/puppetlabs-ntp',
50
+ 'puppetlabs/puppetlabs-chocolatey',
51
+ 'voxpupuli/puppet-archive',
52
+ 'voxpupuli/puppet-collectd',
53
+ 'garethr/garethr-docker',
54
+ 'sensu/sensu-puppet',
55
+ 'jenkinsci/puppet-jenkins',
56
+ ]
57
+
58
+ FileUtils.mkdir_p('tmp')
59
+ Dir.chdir('tmp') do
60
+ modules_to_test.each do |module_name|
61
+ puts "Testing #{module_name}..."
62
+ module_dir = File.basename(module_name)
63
+
64
+ if File.directory?(module_dir)
65
+ Dir.chdir(module_dir) do
66
+ _, success = run_cmd('Updating repository', 'git', 'pull', '--rebase')
67
+ next unless success
68
+ end
69
+ else
70
+ _, success = run_cmd('Cloning repository', 'git', 'clone', "https://github.com/#{module_name}")
71
+ next unless success
72
+ end
73
+
74
+ Dir.chdir(module_dir) do
75
+ output, success = run_cmd('Running puppet-lint', 'bundle', 'exec', 'puppet-lint', '--relative', '--no-documentation-check', 'manifests')
76
+ unless output.empty?
77
+ output.split("\n").each do |line|
78
+ puts " #{line}"
79
+ end
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
@@ -1,3 +1,3 @@
1
1
  class PuppetLint
2
- VERSION = '2.3.2'.freeze
2
+ VERSION = '2.3.3'.freeze
3
3
  end
@@ -69,7 +69,7 @@ describe PuppetLint::Bin do
69
69
  [
70
70
  "#{args[0]} - WARNING: optional parameter listed before required parameter on line 2",
71
71
  "#{args[1]} - ERROR: test::foo not in autoload module layout on line 2",
72
- ].join("\n"),
72
+ ].join("\n")
73
73
  )
74
74
  end
75
75
  end
@@ -165,7 +165,7 @@ describe PuppetLint::Bin do
165
165
  '',
166
166
  " define test::warning($foo='bar', $baz) { }",
167
167
  ' ^',
168
- ].join("\n"),
168
+ ].join("\n")
169
169
  )
170
170
  end
171
171
  end
@@ -397,7 +397,7 @@ describe PuppetLint::Bin do
397
397
  [
398
398
  'IGNORED: double quoted string containing no variables on line 3',
399
399
  ' for a good reason',
400
- ].join("\n"),
400
+ ].join("\n")
401
401
  )
402
402
  end
403
403
  end
@@ -40,7 +40,7 @@ describe PuppetLint::Checks do
40
40
  :column => 2,
41
41
  :path => anything,
42
42
  :fullpath => anything,
43
- :filename => anything,
43
+ :filename => anything
44
44
  )
45
45
  end
46
46
  end
@@ -62,7 +62,7 @@ describe PuppetLint::Checks do
62
62
  :column => 2,
63
63
  :path => anything,
64
64
  :fullpath => anything,
65
- :filename => anything,
65
+ :filename => anything
66
66
  )
67
67
  end
68
68
  end
@@ -111,7 +111,7 @@ describe PuppetLint::Checks do
111
111
  instance_double(
112
112
  PuppetLint::CheckPlugin,
113
113
  :run => [{ :kind => :error, :check => :arrow_alignment }],
114
- :fix_problems => [{ :kind => :fixed, :check => :arrow_alignment }],
114
+ :fix_problems => [{ :kind => :fixed, :check => :arrow_alignment }]
115
115
  )
116
116
  end
117
117
  let(:mock_hard_tabs) do
@@ -203,7 +203,7 @@ describe PuppetLint::Checks do
203
203
  end
204
204
 
205
205
  it 'checks the configuration for each check to see if it is enabled' do
206
- expect(enabled_checks.sort).to eq(expected_enabled_checks.sort)
206
+ expect(enabled_checks.map(&:to_s).sort).to eq(expected_enabled_checks.map(&:to_s).sort)
207
207
  end
208
208
  end
209
209
 
@@ -31,7 +31,7 @@ describe PuppetLint::Configuration do
31
31
  expect(subject.foobarbaz).to be_nil
32
32
  end
33
33
 
34
- it 'should create options on the fly' do
34
+ it 'should be able to explicitly add options' do
35
35
  subject.add_option('bar')
36
36
 
37
37
  expect(subject.bar).to be_nil
@@ -40,6 +40,14 @@ describe PuppetLint::Configuration do
40
40
  expect(subject.bar).to eq('aoeui')
41
41
  end
42
42
 
43
+ it 'should be able to add options on the fly' do
44
+ expect(subject.test_option).to eq(nil)
45
+
46
+ subject.test_option = 'test'
47
+
48
+ expect(subject.test_option).to eq('test')
49
+ end
50
+
43
51
  it 'should be able to set sane defaults' do
44
52
  subject.defaults
45
53
 
@@ -52,7 +60,7 @@ describe PuppetLint::Configuration do
52
60
  'fix' => false,
53
61
  'show_ignored' => false,
54
62
  'json' => false,
55
- 'ignore_paths' => ['vendor/**/*.pp'],
63
+ 'ignore_paths' => ['vendor/**/*.pp']
56
64
  )
57
65
  end
58
66
  end
@@ -1525,7 +1525,7 @@ END
1525
1525
  expect(token.value).to eq("\t")
1526
1526
  end
1527
1527
 
1528
- it 'should parse unicode spaces' do
1528
+ it 'should parse unicode spaces', :unless => RUBY_VERSION == '1.8.7' do
1529
1529
  token = @lexer.tokenise("\xc2\xa0").first
1530
1530
  expect(token.type).to eq(:WHITESPACE)
1531
1531
  expect(token.value).to eq("\xc2\xa0")
@@ -131,7 +131,7 @@ RSpec.configure do |config|
131
131
  config.include(
132
132
  RSpec::LintExampleGroup,
133
133
  :type => :lint,
134
- :file_path => Regexp.compile(%w[spec puppet-lint plugins].join('[\\\/]')),
134
+ :file_path => Regexp.compile(%w[spec puppet-lint plugins].join('[\\\/]'))
135
135
  )
136
136
 
137
137
  config.expect_with(:rspec) do |c|
metadata CHANGED
@@ -1,29 +1,40 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: puppet-lint
3
- version: !ruby/object:Gem::Version
4
- version: 2.3.2
3
+ version: !ruby/object:Gem::Version
4
+ hash: 5
5
+ prerelease:
6
+ segments:
7
+ - 2
8
+ - 3
9
+ - 3
10
+ version: 2.3.3
5
11
  platform: ruby
6
- authors:
12
+ authors:
7
13
  - Tim Sharpe
8
14
  autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
- date: 2017-09-27 00:00:00.000000000 Z
17
+
18
+ date: 2017-09-28 00:00:00 +10:00
19
+ default_executable:
12
20
  dependencies: []
21
+
13
22
  description: |-
14
23
  Checks your Puppet manifests against the Puppetlabs
15
24
  style guide and alerts you to any discrepancies.
16
25
  email: tim@sharpe.id.au
17
- executables:
26
+ executables:
18
27
  - puppet-lint
19
28
  extensions: []
29
+
20
30
  extra_rdoc_files: []
21
- files:
22
- - ".gitignore"
23
- - ".rspec"
24
- - ".rubocop.yml"
25
- - ".rubocop_todo.yml"
26
- - ".travis.yml"
31
+
32
+ files:
33
+ - .gitignore
34
+ - .rspec
35
+ - .rubocop.yml
36
+ - .rubocop_todo.yml
37
+ - .travis.yml
27
38
  - CHANGELOG.md
28
39
  - Gemfile
29
40
  - LICENSE
@@ -39,6 +50,7 @@ files:
39
50
  - lib/puppet-lint/data.rb
40
51
  - lib/puppet-lint/lexer.rb
41
52
  - lib/puppet-lint/lexer/token.rb
53
+ - lib/puppet-lint/monkeypatches.rb
42
54
  - lib/puppet-lint/optparser.rb
43
55
  - lib/puppet-lint/plugins.rb
44
56
  - lib/puppet-lint/plugins/check_classes/arrow_on_right_operand_line.rb
@@ -79,6 +91,7 @@ files:
79
91
  - lib/puppet-lint/plugins/check_whitespace/hard_tabs.rb
80
92
  - lib/puppet-lint/plugins/check_whitespace/trailing_whitespace.rb
81
93
  - lib/puppet-lint/tasks/puppet-lint.rb
94
+ - lib/puppet-lint/tasks/release_test.rb
82
95
  - lib/puppet-lint/version.rb
83
96
  - puppet-lint.gemspec
84
97
  - spec/fixtures/test/manifests/fail.pp
@@ -138,84 +151,39 @@ files:
138
151
  - spec/puppet-lint/plugins/check_whitespace/trailing_whitespace_spec.rb
139
152
  - spec/puppet-lint_spec.rb
140
153
  - spec/spec_helper.rb
154
+ has_rdoc: true
141
155
  homepage: https://github.com/rodjek/puppet-lint/
142
156
  licenses: []
143
- metadata: {}
157
+
144
158
  post_install_message:
145
159
  rdoc_options: []
146
- require_paths:
160
+
161
+ require_paths:
147
162
  - lib
148
- required_ruby_version: !ruby/object:Gem::Requirement
149
- requirements:
163
+ required_ruby_version: !ruby/object:Gem::Requirement
164
+ none: false
165
+ requirements:
150
166
  - - ">="
151
- - !ruby/object:Gem::Version
152
- version: '0'
153
- required_rubygems_version: !ruby/object:Gem::Requirement
154
- requirements:
167
+ - !ruby/object:Gem::Version
168
+ hash: 3
169
+ segments:
170
+ - 0
171
+ version: "0"
172
+ required_rubygems_version: !ruby/object:Gem::Requirement
173
+ none: false
174
+ requirements:
155
175
  - - ">="
156
- - !ruby/object:Gem::Version
157
- version: '0'
176
+ - !ruby/object:Gem::Version
177
+ hash: 3
178
+ segments:
179
+ - 0
180
+ version: "0"
158
181
  requirements: []
182
+
159
183
  rubyforge_project:
160
- rubygems_version: 2.6.10
184
+ rubygems_version: 1.6.2
161
185
  signing_key:
162
- specification_version: 4
186
+ specification_version: 3
163
187
  summary: Ensure your Puppet manifests conform with the Puppetlabs style guide
164
- test_files:
165
- - spec/fixtures/test/manifests/fail.pp
166
- - spec/fixtures/test/manifests/ignore.pp
167
- - spec/fixtures/test/manifests/ignore_multiple_block.pp
168
- - spec/fixtures/test/manifests/ignore_multiple_line.pp
169
- - spec/fixtures/test/manifests/ignore_reason.pp
170
- - spec/fixtures/test/manifests/init.pp
171
- - spec/fixtures/test/manifests/malformed.pp
172
- - spec/fixtures/test/manifests/mismatched_control_comment.pp
173
- - spec/fixtures/test/manifests/unterminated_control_comment.pp
174
- - spec/fixtures/test/manifests/url_interpolation.pp
175
- - spec/fixtures/test/manifests/warning.pp
176
- - spec/puppet-lint/bin_spec.rb
177
- - spec/puppet-lint/checks_spec.rb
178
- - spec/puppet-lint/configuration_spec.rb
179
- - spec/puppet-lint/data_spec.rb
180
- - spec/puppet-lint/ignore_overrides_spec.rb
181
- - spec/puppet-lint/lexer/token_spec.rb
182
- - spec/puppet-lint/lexer_spec.rb
183
- - spec/puppet-lint/plugins/check_classes/arrow_on_right_operand_line_spec.rb
184
- - spec/puppet-lint/plugins/check_classes/autoloader_layout_spec.rb
185
- - spec/puppet-lint/plugins/check_classes/class_inherits_from_params_class_spec.rb
186
- - spec/puppet-lint/plugins/check_classes/code_on_top_scope_spec.rb
187
- - spec/puppet-lint/plugins/check_classes/inherits_across_namespaces_spec.rb
188
- - spec/puppet-lint/plugins/check_classes/name_contains_uppercase_spec.rb
189
- - spec/puppet-lint/plugins/check_classes/names_containing_dash_spec.rb
190
- - spec/puppet-lint/plugins/check_classes/nested_classes_or_defines_spec.rb
191
- - spec/puppet-lint/plugins/check_classes/parameter_order_spec.rb
192
- - spec/puppet-lint/plugins/check_classes/right_to_left_relationship_spec.rb
193
- - spec/puppet-lint/plugins/check_classes/variable_scope_spec.rb
194
- - spec/puppet-lint/plugins/check_comments/slash_comments_spec.rb
195
- - spec/puppet-lint/plugins/check_comments/star_comments_spec.rb
196
- - spec/puppet-lint/plugins/check_conditionals/case_without_default_spec.rb
197
- - spec/puppet-lint/plugins/check_conditionals/selector_inside_resource_spec.rb
198
- - spec/puppet-lint/plugins/check_documentation/documentation_spec.rb
199
- - spec/puppet-lint/plugins/check_nodes/unquoted_node_name_spec.rb
200
- - spec/puppet-lint/plugins/check_resources/duplicate_params_spec.rb
201
- - spec/puppet-lint/plugins/check_resources/ensure_first_param_spec.rb
202
- - spec/puppet-lint/plugins/check_resources/ensure_not_symlink_target_spec.rb
203
- - spec/puppet-lint/plugins/check_resources/file_mode_spec.rb
204
- - spec/puppet-lint/plugins/check_resources/unquoted_file_mode_spec.rb
205
- - spec/puppet-lint/plugins/check_resources/unquoted_resource_title_spec.rb
206
- - spec/puppet-lint/plugins/check_strings/double_quoted_strings_spec.rb
207
- - spec/puppet-lint/plugins/check_strings/only_variable_string_spec.rb
208
- - spec/puppet-lint/plugins/check_strings/puppet_url_without_modules_spec.rb
209
- - spec/puppet-lint/plugins/check_strings/quoted_booleans_spec.rb
210
- - spec/puppet-lint/plugins/check_strings/single_quote_string_with_variables_spec.rb
211
- - spec/puppet-lint/plugins/check_strings/variables_not_enclosed_spec.rb
212
- - spec/puppet-lint/plugins/check_variables/variable_contains_dash_spec.rb
213
- - spec/puppet-lint/plugins/check_variables/variable_is_lowercase_spec.rb
214
- - spec/puppet-lint/plugins/check_whitespace/140chars_spec.rb
215
- - spec/puppet-lint/plugins/check_whitespace/2sp_soft_tabs_spec.rb
216
- - spec/puppet-lint/plugins/check_whitespace/80chars_spec.rb
217
- - spec/puppet-lint/plugins/check_whitespace/arrow_alignment_spec.rb
218
- - spec/puppet-lint/plugins/check_whitespace/hard_tabs_spec.rb
219
- - spec/puppet-lint/plugins/check_whitespace/trailing_whitespace_spec.rb
220
- - spec/puppet-lint_spec.rb
221
- - spec/spec_helper.rb
188
+ test_files: []
189
+
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: fbb487b62428cd625a1cf3d397b31caae02add69
4
- data.tar.gz: 07c43049840cb8f2fbb145582eb2bc2b8ef2080a
5
- SHA512:
6
- metadata.gz: 7e15459e1239a53a0bacd8f02bce2d762a19e30801778dce52359e0fdc19ece26f1a0557bfd656ec87fcaf0fc9e1ff1e3c0d9648e1a9713f43509f05ae18e9c7
7
- data.tar.gz: da721067ae63f5a41452ef969fe5871c16edc155ff89e602860afe200a5df5fc52013a8d5150a2916791a7302c87742857e23bc2f0f2af6c4fe90d457ea1b4e6