puppet-check 2.1.0 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -1
- data/README.md +1 -22
- data/lib/puppet-check/cli.rb +1 -1
- data/lib/puppet-check/data_parser.rb +9 -11
- data/lib/puppet-check/puppet_parser.rb +12 -25
- data/lib/puppet-check/ruby_parser.rb +33 -42
- data/spec/fixtures/plans/good.pp +3 -0
- data/spec/fixtures/plans/style.pp +6 -0
- data/spec/fixtures/plans/syntax.pp +5 -0
- data/spec/puppet-check/puppet_parser_spec.rb +18 -0
- data/spec/puppet-check/regression_check_spec.rb +1 -1
- data/spec/puppet-check/rspec_puppet_support_spec.rb +1 -1
- data/spec/puppet-check/ruby_parser_spec.rb +2 -2
- data/spec/system/system_spec.rb +14 -12
- metadata +22 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b1e591abda5a49b0731073d14831000016b08d72b505ab3d22a287029fa1243f
|
4
|
+
data.tar.gz: 96bceb6ef51e82582984ab0c88f96591d30c26650e174a0215133af0723c9526
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 805ef299109715901160e9f4c4894ff05f31140c8234ed867273434e85b525e4c91e0e5fd7e6f96fb23352a3b801afa006b31cb4a93515c76182725b510a57f8
|
7
|
+
data.tar.gz: 2fc8340befd7b6c5f9662038aeea6614858ed1a2bd92f0d76c797fe42b316fed9d080e38cd8f4203d16240c365086bc1165c89102f3ee4e496dae6f1cf75b9bd
|
data/CHANGELOG.md
CHANGED
@@ -1,4 +1,11 @@
|
|
1
|
-
### 2.
|
1
|
+
### 2.2.0
|
2
|
+
- Add Enable Pending Cops to base RuboCop configuration.
|
3
|
+
- Support checking plans.
|
4
|
+
- Fix Puppet >= 6.5 error message capture when line/col info.
|
5
|
+
- Minimum Ruby version increased to 2.6.
|
6
|
+
- Minimum Puppet version increased to 5.4.
|
7
|
+
|
8
|
+
### 2.1.0
|
2
9
|
- Minimum supported version of Puppet bumped to 5.0.
|
3
10
|
- Minimum Ruby version bumped to 2.4.
|
4
11
|
- Official support for Puppet 7, Rubocop 1, and Reek 6.
|
data/README.md
CHANGED
@@ -281,28 +281,7 @@ task.pattern = Dir.glob('**/{classes,defines,facter,functions,hosts,puppet,unit,
|
|
281
281
|
|
282
282
|
### Docker
|
283
283
|
|
284
|
-
|
285
|
-
|
286
|
-
```dockerfile
|
287
|
-
# a reliable and small container; today should maybe use ruby:slim instead
|
288
|
-
FROM ubuntu:20.04
|
289
|
-
# you need ruby and any other extra dependencies that come from packages; in this example we install git to use it for downloading external module dependencies
|
290
|
-
RUN apt-get update && apt-get install ruby git -y
|
291
|
-
# you need puppet-check and any other extra dependencies that come from gems; in this example we install rspec-puppet and rake for extra testing
|
292
|
-
RUN gem install --no-document puppet-check rspec-puppet rake
|
293
|
-
# this is needed for the ruby json parser to not flip out on fresh os installs for some reason (change encoding value as necessary)
|
294
|
-
ENV LANG en_US.UTF-8
|
295
|
-
# create the directory for your module, directory environment, etc. and change directory into it
|
296
|
-
WORKDIR /module_name_or_directory_environment_name
|
297
|
-
# copy the module, directory environment, etc. contents into the corresponding directory inside the container; alternative, bind a volume mount for your module(s) into the container at runtime
|
298
|
-
COPY / .
|
299
|
-
# execute your tests; in this example we are executing the full suite of tests
|
300
|
-
ENTRYPOINT ["rake", "puppetcheck"]
|
301
|
-
```
|
302
|
-
|
303
|
-
You can also build your own general container image for testing various Puppet situations by removing the last three lines. You can then test each module, directory environment, etc. on top of that container by merely adding and modifying the final three lines to a `Dockerfile` that uses the container you built from the first four lines. This is recommended usage due to being very efficient and stable.
|
304
|
-
|
305
|
-
As an alternative to copying Puppet code and data into the image for testing, it is also recommended to bind volume mount the container to the directory with your Puppet code and data.
|
284
|
+
A supported [Docker image](https://hub.docker.com/r/matthewschuchard/puppet-check) of Puppet-Check is now available from the public Docker Hub registry. Please consult the repository documentation for further usage information.
|
306
285
|
|
307
286
|
### Vagrant
|
308
287
|
|
data/lib/puppet-check/cli.rb
CHANGED
@@ -8,19 +8,17 @@ class DataParser
|
|
8
8
|
|
9
9
|
files.each do |file|
|
10
10
|
# check yaml syntax
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
warnings = []
|
11
|
+
parsed = YAML.load_file(file)
|
12
|
+
rescue StandardError => err
|
13
|
+
PuppetCheck.settings[:error_files].push("#{file}:\n#{err.to_s.gsub("(#{file}): ", '')}")
|
14
|
+
else
|
15
|
+
warnings = []
|
17
16
|
|
18
|
-
|
19
|
-
|
17
|
+
# perform some rudimentary hiera checks if data exists and is hieradata
|
18
|
+
warnings = hiera(parsed, file) if parsed && (File.basename(file) != 'hiera.yaml')
|
20
19
|
|
21
|
-
|
22
|
-
|
23
|
-
end
|
20
|
+
next PuppetCheck.settings[:warning_files].push("#{file}:\n#{warnings.join("\n")}") unless warnings.empty?
|
21
|
+
PuppetCheck.settings[:clean_files].push(file.to_s)
|
24
22
|
end
|
25
23
|
end
|
26
24
|
|
@@ -19,24 +19,18 @@ class PuppetParser
|
|
19
19
|
begin
|
20
20
|
# initialize message
|
21
21
|
message = ''
|
22
|
+
# specify tasks attribute for parser validation if this looks like a plan or not
|
23
|
+
Puppet[:tasks] = file.match?(%r{plans/\w+\.pp$}) ? true : false
|
22
24
|
# in puppet >= 6.5 the return of this method is a hash with the error
|
23
25
|
new_error = Puppet::Face[:parser, :current].validate(file)
|
24
26
|
# puppet 6.5 output format is now a hash from the face api
|
25
27
|
if Gem::Version.new(Puppet::PUPPETVERSION) >= Gem::Version.new('6.5.0') && new_error != {}
|
26
|
-
message = new_error.values.map(&:to_s).join("\n").gsub(/ \(file: #{File.absolute_path(file)}(, |\))/, '').gsub(
|
28
|
+
message = new_error.values.map(&:to_s).join("\n").gsub(/ \(file: #{File.absolute_path(file)}(, |\))/, '').gsub('Could not parse for environment *root*: ', '')
|
27
29
|
end
|
28
30
|
# this is the actual error that we need to rescue Puppet::Face from
|
29
31
|
rescue SystemExit
|
30
32
|
# puppet 5.4-6.4 has a new validator output format and eof errors have fake dir env info
|
31
|
-
message =
|
32
|
-
errors.map(&:to_s).join("\n").gsub(/file: #{File.absolute_path(file)}(, |\))/, '').gsub(/Could not parse.*: /, '')
|
33
|
-
# puppet 5.0-5.2 can only do one error per line and outputs fake dir env info
|
34
|
-
elsif Gem::Version.new(Puppet::PUPPETVERSION) >= Gem::Version.new('5.0') && Gem::Version.new(Puppet::PUPPETVERSION) < Gem::Version.new('5.3')
|
35
|
-
errors.map(&:to_s).join("\n").gsub("#{File.absolute_path(file)}:", '').gsub(/Could not parse.*: /, '')
|
36
|
-
# puppet < 5 and 5.3 parser output style
|
37
|
-
else
|
38
|
-
errors.map(&:to_s).join("\n").gsub("#{File.absolute_path(file)}:", '')
|
39
|
-
end
|
33
|
+
message = errors.map(&:to_s).join("\n").gsub(/file: #{File.absolute_path(file)}(, |\))/, '').gsub(/Could not parse.*: /, '')
|
40
34
|
end
|
41
35
|
# output message
|
42
36
|
next PuppetCheck.settings[:error_files].push("#{file}:\n#{message}") unless message.empty?
|
@@ -44,13 +38,8 @@ class PuppetParser
|
|
44
38
|
# initialize warnings with output from the parser if it exists, since the output is warnings if Puppet::Face did not trigger a SystemExit
|
45
39
|
warnings = "#{file}:"
|
46
40
|
unless errors.empty?
|
47
|
-
# puppet 5.4
|
48
|
-
warnings <<
|
49
|
-
"\n#{errors.map(&:to_s).join("\n").gsub("file: #{File.absolute_path(file)}, ", '')}"
|
50
|
-
# puppet <= 5.3 validator output format
|
51
|
-
else
|
52
|
-
"\n#{errors.map(&:to_s).join("\n").gsub("#{File.absolute_path(file)}:", '')}"
|
53
|
-
end
|
41
|
+
# puppet >= 5.4 has a new validator output format
|
42
|
+
warnings << "\n#{errors.map(&:to_s).join("\n").gsub("file: #{File.absolute_path(file)}, ", '')}"
|
54
43
|
end
|
55
44
|
Puppet::Util::Log.close_all
|
56
45
|
|
@@ -87,14 +76,12 @@ class PuppetParser
|
|
87
76
|
|
88
77
|
files.each do |file|
|
89
78
|
# check puppet template syntax
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
PuppetCheck.settings[:clean_files].push(file.to_s)
|
97
|
-
end
|
79
|
+
# credits to gds-operations/puppet-syntax for the parser function call
|
80
|
+
Puppet::Pops::Parser::EvaluatingParser::EvaluatingEppParser.new.parse_file(file)
|
81
|
+
rescue StandardError => err
|
82
|
+
PuppetCheck.settings[:error_files].push("#{file}:\n#{err.to_s.gsub("#{file}:", '')}")
|
83
|
+
else
|
84
|
+
PuppetCheck.settings[:clean_files].push(file.to_s)
|
98
85
|
end
|
99
86
|
end
|
100
87
|
end
|
@@ -7,31 +7,29 @@ class RubyParser
|
|
7
7
|
def self.ruby(files, style, rc_args)
|
8
8
|
files.each do |file|
|
9
9
|
# check ruby syntax
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
require 'rubocop'
|
10
|
+
# prevents ruby code from actually executing
|
11
|
+
catch(:good) { instance_eval("BEGIN {throw :good}; #{File.read(file)}", file) }
|
12
|
+
rescue ScriptError, StandardError => err
|
13
|
+
PuppetCheck.settings[:error_files].push("#{file}:\n#{err}")
|
14
|
+
else
|
15
|
+
# check ruby style
|
16
|
+
if style
|
17
|
+
require 'rubocop'
|
19
18
|
|
20
|
-
|
21
|
-
|
22
|
-
|
19
|
+
# check RuboCop and collect warnings
|
20
|
+
rubocop_warnings = Utils.capture_stdout { RuboCop::CLI.new.run(rc_args + ['--enable-pending-cops', '--require', 'rubocop-performance', '--format', 'emacs', file]) }
|
21
|
+
warnings = rubocop_warnings == '' ? '' : rubocop_warnings.split("#{File.absolute_path(file)}:").join('')
|
23
22
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
23
|
+
# check Reek and collect warnings
|
24
|
+
require 'reek'
|
25
|
+
require 'reek/cli/application'
|
26
|
+
reek_warnings = Utils.capture_stdout { Reek::CLI::Application.new([file]).execute }
|
27
|
+
warnings << reek_warnings.split("\n")[1..].map(&:strip).join("\n") unless reek_warnings == ''
|
29
28
|
|
30
|
-
|
31
|
-
|
32
|
-
end
|
33
|
-
PuppetCheck.settings[:clean_files].push(file.to_s)
|
29
|
+
# return warnings
|
30
|
+
next PuppetCheck.settings[:warning_files].push("#{file}:\n#{warnings.strip}") unless warnings == ''
|
34
31
|
end
|
32
|
+
PuppetCheck.settings[:clean_files].push(file.to_s)
|
35
33
|
end
|
36
34
|
end
|
37
35
|
|
@@ -44,13 +42,8 @@ class RubyParser
|
|
44
42
|
begin
|
45
43
|
# need to eventually have this associated with a different binding during each iteration
|
46
44
|
# older usage throws extra warning and mixes with valid warnings confusingly
|
47
|
-
warnings =
|
48
|
-
|
49
|
-
# ERB.new(File.read(file), trim_mode: '-').result(RubyParser.new.bind)
|
50
|
-
# and for extra fun it is incompatible with non-new ruby
|
51
|
-
else
|
52
|
-
Utils.capture_stderr { ERB.new(File.read(file), nil, '-').result }
|
53
|
-
end
|
45
|
+
warnings = Utils.capture_stderr { ERB.new(File.read(file), trim_mode: '-').result }
|
46
|
+
# ERB.new(File.read(file), trim_mode: '-').result(RubyParser.new.bind)
|
54
47
|
rescue NameError, TypeError
|
55
48
|
# empty out warnings since it would contain an error if this pass triggers
|
56
49
|
warnings = ''
|
@@ -75,22 +68,20 @@ class RubyParser
|
|
75
68
|
|
76
69
|
files.each do |file|
|
77
70
|
# check librarian puppet syntax
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
warnings = Utils.capture_stdout { RuboCop::CLI.new.run(rc_args + ['--require', 'rubocop-performance', '--format', 'emacs', file]) }
|
71
|
+
# prevents ruby code from actually executing
|
72
|
+
catch(:good) { instance_eval("BEGIN {throw :good}; #{File.read(file)}", file) }
|
73
|
+
rescue SyntaxError, LoadError, ArgumentError => err
|
74
|
+
PuppetCheck.settings[:error_files].push("#{file}:\n#{err}")
|
75
|
+
# check librarian puppet style
|
76
|
+
else
|
77
|
+
if style
|
78
|
+
# check Rubocop
|
79
|
+
warnings = Utils.capture_stdout { RuboCop::CLI.new.run(rc_args + ['--enable-pending-cops', '--require', 'rubocop-performance', '--format', 'emacs', file]) }
|
88
80
|
|
89
|
-
|
90
|
-
|
91
|
-
end
|
92
|
-
PuppetCheck.settings[:clean_files].push(file.to_s)
|
81
|
+
# collect style warnings
|
82
|
+
next PuppetCheck.settings[:warning_files].push("#{file}:\n#{warnings.split("#{File.absolute_path(file)}:").join('')}") unless warnings.empty?
|
93
83
|
end
|
84
|
+
PuppetCheck.settings[:clean_files].push(file.to_s)
|
94
85
|
end
|
95
86
|
end
|
96
87
|
|
@@ -28,6 +28,12 @@ describe PuppetParser do
|
|
28
28
|
expect(PuppetCheck.settings[:clean_files]).to eql([])
|
29
29
|
end
|
30
30
|
end
|
31
|
+
it 'puts a bad syntax Puppet plan in the error files array' do
|
32
|
+
PuppetParser.manifest(["#{fixtures_dir}plans/syntax.pp"], false, [])
|
33
|
+
expect(PuppetCheck.settings[:error_files][0]).to match(%r{^#{fixtures_dir}plans/syntax.pp:\nSyntax error at '\)'})
|
34
|
+
expect(PuppetCheck.settings[:warning_files]).to eql([])
|
35
|
+
expect(PuppetCheck.settings[:clean_files]).to eql([])
|
36
|
+
end
|
31
37
|
it 'puts a bad parser and lint style Puppet manifest in the warning files array' do
|
32
38
|
PuppetParser.manifest(["#{fixtures_dir}manifests/style_parser.pp"], true, [])
|
33
39
|
expect(PuppetCheck.settings[:error_files]).to eql([])
|
@@ -46,12 +52,24 @@ describe PuppetParser do
|
|
46
52
|
expect(PuppetCheck.settings[:warning_files]).to eql([])
|
47
53
|
expect(PuppetCheck.settings[:clean_files]).to eql(["#{fixtures_dir}manifests/style_lint.pp"])
|
48
54
|
end
|
55
|
+
it 'puts a bad style Puppet plan in the warning files array' do
|
56
|
+
PuppetParser.manifest(["#{fixtures_dir}plans/style.pp"], true, [])
|
57
|
+
expect(PuppetCheck.settings[:error_files]).to eql([])
|
58
|
+
expect(PuppetCheck.settings[:warning_files][0]).to match(%r{^#{fixtures_dir}plans/style.pp:\n.*variable not enclosed in {}})
|
59
|
+
expect(PuppetCheck.settings[:clean_files]).to eql([])
|
60
|
+
end
|
49
61
|
it 'puts a good Puppet manifest in the clean files array' do
|
50
62
|
PuppetParser.manifest(["#{fixtures_dir}manifests/good.pp"], true, [])
|
51
63
|
expect(PuppetCheck.settings[:error_files]).to eql([])
|
52
64
|
expect(PuppetCheck.settings[:warning_files]).to eql([])
|
53
65
|
expect(PuppetCheck.settings[:clean_files]).to eql(["#{fixtures_dir}manifests/good.pp"])
|
54
66
|
end
|
67
|
+
it 'puts a good Puppet plan in the clean files array' do
|
68
|
+
PuppetParser.manifest(["#{fixtures_dir}plans/good.pp"], true, [])
|
69
|
+
expect(PuppetCheck.settings[:error_files]).to eql([])
|
70
|
+
expect(PuppetCheck.settings[:warning_files]).to eql([])
|
71
|
+
expect(PuppetCheck.settings[:clean_files]).to eql(["#{fixtures_dir}plans/good.pp"])
|
72
|
+
end
|
55
73
|
it 'throws a well specified error for an invalid PuppetLint argument' do
|
56
74
|
expect { PuppetParser.manifest(["#{fixtures_dir}manifests/style_lint.pp"], true, ['--non-existent', '--does-not-exist']) }.to raise_error(RuntimeError, 'puppet-lint: invalid option supplied among --non-existent --does-not-exist')
|
57
75
|
end
|
@@ -17,7 +17,7 @@ describe RegressionCheck do
|
|
17
17
|
|
18
18
|
context '.smoke' do
|
19
19
|
# octocatalog-diff is returning a blank error for these tests
|
20
|
-
unless ENV['TRAVIS'] == 'true' || ENV['CIRCLECI'] == 'true'
|
20
|
+
unless ENV['TRAVIS'] == 'true' || ENV['CIRCLECI'] == 'true' || ENV['GITHUB_ACTIONS'] == 'true'
|
21
21
|
it 'returns a pass for a successful catalog compilation' do
|
22
22
|
expect { RegressionCheck.smoke(['good.example.com'], "#{octocatalog_diff_dir}octocatalog_diff.cfg.rb") }.not_to raise_exception
|
23
23
|
end
|
@@ -15,7 +15,7 @@ describe RSpecPuppetSupport do
|
|
15
15
|
|
16
16
|
it 'creates missing directories, missing site.pp, missing symlinks, and a missing spec_helper' do
|
17
17
|
# travis ci
|
18
|
-
if ENV['TRAVIS'] == 'true'
|
18
|
+
if ENV['TRAVIS'] == 'true' || ENV['GITHUB_ACTIONS'] == 'true'
|
19
19
|
expect { rspec_puppet_setup }.to output("puppetlabs/gruntmaster has an unspecified, or specified but unsupported, download method.\n").to_stderr
|
20
20
|
# circle ci
|
21
21
|
elsif ENV['CIRCLECI'] == 'true'
|
@@ -18,7 +18,7 @@ describe RubyParser do
|
|
18
18
|
it 'puts a bad style ruby file in the warning files array' do
|
19
19
|
RubyParser.ruby(["#{fixtures_dir}lib/style.rb"], true, [])
|
20
20
|
expect(PuppetCheck.settings[:error_files]).to eql([])
|
21
|
-
expect(PuppetCheck.settings[:warning_files][0]).to match(%r{^#{fixtures_dir}lib/style.rb:\n.*Useless assignment.*\n.*Use the new.*\n.*Do not introduce.*\n.*Prefer single.*\n.*Source code comment is empty.*\n.*is a writable attribute.*\n.*Issue has no descriptive comment})
|
21
|
+
expect(PuppetCheck.settings[:warning_files][0]).to match(%r{^#{fixtures_dir}lib/style.rb:\n.*Useless assignment.*\n.*Use the new.*\n.*Do not introduce.*\n.*Prefer single.*\n.*Remove unnecessary empty.*\n.*Source code comment is empty.*\n.*is a writable attribute.*\n.*Issue has no descriptive comment})
|
22
22
|
expect(PuppetCheck.settings[:clean_files]).to eql([])
|
23
23
|
end
|
24
24
|
it 'puts a bad style ruby file in the clean files array when rubocop_args ignores its warnings' do
|
@@ -80,7 +80,7 @@ describe RubyParser do
|
|
80
80
|
expect(PuppetCheck.settings[:clean_files]).to eql([])
|
81
81
|
end
|
82
82
|
it 'puts a bad style librarian Puppet file in the clean files array when rubocop_args ignores its warnings' do
|
83
|
-
RubyParser.librarian(["#{fixtures_dir}librarian_style/Puppetfile"], true, ['--except', 'Layout/
|
83
|
+
RubyParser.librarian(["#{fixtures_dir}librarian_style/Puppetfile"], true, ['--except', 'Layout/ArgumentAlignment,Style/HashSyntax'])
|
84
84
|
expect(PuppetCheck.settings[:error_files]).to eql([])
|
85
85
|
expect(PuppetCheck.settings[:warning_files]).to eql([])
|
86
86
|
expect(PuppetCheck.settings[:clean_files]).to eql(["#{fixtures_dir}librarian_style/Puppetfile"])
|
data/spec/system/system_spec.rb
CHANGED
@@ -6,10 +6,10 @@ require_relative '../../lib/puppet-check/tasks'
|
|
6
6
|
describe PuppetCheck do
|
7
7
|
context 'executed as a system from the CLI with arguments and various files to be processed' do
|
8
8
|
# see regression_check_spec
|
9
|
-
if ENV['TRAVIS'] == 'true' || ENV['CIRCLECI'] == 'true'
|
10
|
-
let(:cli) { PuppetCheck::CLI.run(%w[-s --puppet-lint no-hard_tabs-check,no-140chars-check --rubocop
|
9
|
+
if ENV['TRAVIS'] == 'true' || ENV['CIRCLECI'] == 'true' || ENV['GITHUB_ACTIONS'] == 'true'
|
10
|
+
let(:cli) { PuppetCheck::CLI.run(%w[-s --puppet-lint no-hard_tabs-check,no-140chars-check --rubocop Layout/LineLength,Style/Encoding .]) }
|
11
11
|
else
|
12
|
-
let(:cli) { PuppetCheck::CLI.run(%w[-s --puppet-lint no-hard_tabs-check,no-140chars-check --rubocop
|
12
|
+
let(:cli) { PuppetCheck::CLI.run(%w[-s --puppet-lint no-hard_tabs-check,no-140chars-check --rubocop Layout/LineLength,Style/Encoding --smoke -n good.example.com --octoconfig spec/octocatalog-diff/octocatalog-diff.cfg.rb .]) }
|
13
13
|
end
|
14
14
|
|
15
15
|
it 'outputs diagnostic results correctly after processing all of the files' do
|
@@ -17,9 +17,9 @@ describe PuppetCheck do
|
|
17
17
|
|
18
18
|
expect { cli }.not_to raise_exception
|
19
19
|
|
20
|
-
expect(PuppetCheck.settings[:error_files].length).to eql(
|
21
|
-
expect(PuppetCheck.settings[:warning_files].length).to eql(
|
22
|
-
expect(PuppetCheck.settings[:clean_files].length).to eql(
|
20
|
+
expect(PuppetCheck.settings[:error_files].length).to eql(10)
|
21
|
+
expect(PuppetCheck.settings[:warning_files].length).to eql(11)
|
22
|
+
expect(PuppetCheck.settings[:clean_files].length).to eql(13)
|
23
23
|
expect(PuppetCheck.settings[:ignored_files].length).to eql(6)
|
24
24
|
|
25
25
|
expect(cli).to eql(2)
|
@@ -40,18 +40,20 @@ describe PuppetCheck do
|
|
40
40
|
PuppetCheck.settings[:ignored_files] = []
|
41
41
|
PuppetCheck.settings[:style] = true
|
42
42
|
# see regression_check_spec
|
43
|
-
unless
|
43
|
+
unless ENV['TRAVIS'] == 'true' || ENV['CIRCLECI'] == 'true' || ENV['GITHUB_ACTIONS'] == 'true'
|
44
44
|
PuppetCheck.settings[:smoke] = true
|
45
45
|
PuppetCheck.settings[:octonodes] = %w[good.example.com]
|
46
46
|
PuppetCheck.settings[:octoconfig] = 'spec/octocatalog-diff/octocatalog-diff.cfg.rb'
|
47
47
|
end
|
48
48
|
|
49
|
-
|
49
|
+
# cannot re-use plan fixture between system tests
|
50
|
+
expect { tasks }.to raise_error(ArgumentError, /Attempt to redefine entity/)
|
50
51
|
|
51
|
-
|
52
|
-
expect(PuppetCheck.settings[:
|
53
|
-
expect(PuppetCheck.settings[:
|
54
|
-
expect(PuppetCheck.settings[:
|
52
|
+
# current puppet pops limitations no longer allow testing this
|
53
|
+
# expect(PuppetCheck.settings[:error_files].length).to eql(10)
|
54
|
+
# expect(PuppetCheck.settings[:warning_files].length).to eql(11)
|
55
|
+
# expect(PuppetCheck.settings[:clean_files].length).to eql(13)
|
56
|
+
# expect(PuppetCheck.settings[:ignored_files].length).to eql(6)
|
55
57
|
end
|
56
58
|
end
|
57
59
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: puppet-check
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Schuchard
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-09-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: puppet
|
@@ -16,7 +16,7 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '5.
|
19
|
+
version: '5.4'
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: '8'
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ">="
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: '5.
|
29
|
+
version: '5.4'
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '8'
|
@@ -48,42 +48,30 @@ dependencies:
|
|
48
48
|
name: reek
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
|
-
- - "
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '4.0'
|
54
|
-
- - "<"
|
51
|
+
- - "~>"
|
55
52
|
- !ruby/object:Gem::Version
|
56
|
-
version: '
|
53
|
+
version: '6.0'
|
57
54
|
type: :runtime
|
58
55
|
prerelease: false
|
59
56
|
version_requirements: !ruby/object:Gem::Requirement
|
60
57
|
requirements:
|
61
|
-
- - "
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
version: '4.0'
|
64
|
-
- - "<"
|
58
|
+
- - "~>"
|
65
59
|
- !ruby/object:Gem::Version
|
66
|
-
version: '
|
60
|
+
version: '6.0'
|
67
61
|
- !ruby/object:Gem::Dependency
|
68
62
|
name: rubocop
|
69
63
|
requirement: !ruby/object:Gem::Requirement
|
70
64
|
requirements:
|
71
|
-
- - "
|
72
|
-
- !ruby/object:Gem::Version
|
73
|
-
version: '0.58'
|
74
|
-
- - "<"
|
65
|
+
- - "~>"
|
75
66
|
- !ruby/object:Gem::Version
|
76
|
-
version: '
|
67
|
+
version: '1.0'
|
77
68
|
type: :runtime
|
78
69
|
prerelease: false
|
79
70
|
version_requirements: !ruby/object:Gem::Requirement
|
80
71
|
requirements:
|
81
|
-
- - "
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: '0.58'
|
84
|
-
- - "<"
|
72
|
+
- - "~>"
|
85
73
|
- !ruby/object:Gem::Version
|
86
|
-
version: '
|
74
|
+
version: '1.0'
|
87
75
|
- !ruby/object:Gem::Dependency
|
88
76
|
name: rubocop-performance
|
89
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -118,14 +106,14 @@ dependencies:
|
|
118
106
|
requirements:
|
119
107
|
- - "~>"
|
120
108
|
- !ruby/object:Gem::Version
|
121
|
-
version: '
|
109
|
+
version: '13.0'
|
122
110
|
type: :development
|
123
111
|
prerelease: false
|
124
112
|
version_requirements: !ruby/object:Gem::Requirement
|
125
113
|
requirements:
|
126
114
|
- - "~>"
|
127
115
|
- !ruby/object:Gem::Version
|
128
|
-
version: '
|
116
|
+
version: '13.0'
|
129
117
|
- !ruby/object:Gem::Dependency
|
130
118
|
name: rspec
|
131
119
|
requirement: !ruby/object:Gem::Requirement
|
@@ -191,6 +179,9 @@ files:
|
|
191
179
|
- spec/fixtures/metadata_style/metadata.json
|
192
180
|
- spec/fixtures/metadata_style_two/metadata.json
|
193
181
|
- spec/fixtures/metadata_syntax/metadata.json
|
182
|
+
- spec/fixtures/plans/good.pp
|
183
|
+
- spec/fixtures/plans/style.pp
|
184
|
+
- spec/fixtures/plans/syntax.pp
|
194
185
|
- spec/fixtures/spec/facter/facter_spec.rb
|
195
186
|
- spec/fixtures/spec/fixtures/do_not_parse_me
|
196
187
|
- spec/fixtures/task_metadata/task_bad.json
|
@@ -229,14 +220,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
229
220
|
requirements:
|
230
221
|
- - ">="
|
231
222
|
- !ruby/object:Gem::Version
|
232
|
-
version: 2.
|
223
|
+
version: 2.6.0
|
233
224
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
234
225
|
requirements:
|
235
226
|
- - ">="
|
236
227
|
- !ruby/object:Gem::Version
|
237
228
|
version: '0'
|
238
229
|
requirements: []
|
239
|
-
rubygems_version: 3.
|
230
|
+
rubygems_version: 3.3.5
|
240
231
|
signing_key:
|
241
232
|
specification_version: 4
|
242
233
|
summary: A streamlined comprehensive set of checks for your entire Puppet code and
|
@@ -270,6 +261,9 @@ test_files:
|
|
270
261
|
- spec/fixtures/metadata_style/metadata.json
|
271
262
|
- spec/fixtures/metadata_style_two/metadata.json
|
272
263
|
- spec/fixtures/metadata_syntax/metadata.json
|
264
|
+
- spec/fixtures/plans/good.pp
|
265
|
+
- spec/fixtures/plans/style.pp
|
266
|
+
- spec/fixtures/plans/syntax.pp
|
273
267
|
- spec/fixtures/spec/facter/facter_spec.rb
|
274
268
|
- spec/fixtures/spec/fixtures/do_not_parse_me
|
275
269
|
- spec/fixtures/task_metadata/task_bad.json
|