puppet-check 1.4.0 → 1.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -11
- data/README.md +38 -26
- data/lib/puppet-check.rb +53 -39
- data/lib/puppet-check/cli.rb +12 -11
- data/lib/puppet-check/data_parser.rb +10 -10
- data/lib/puppet-check/output_results.rb +15 -15
- data/lib/puppet-check/puppet_parser.rb +6 -6
- data/lib/puppet-check/regression_check.rb +2 -2
- data/lib/puppet-check/rspec_puppet_support.rb +15 -7
- data/lib/puppet-check/ruby_parser.rb +9 -9
- data/lib/puppet-check/tasks.rb +27 -18
- data/spec/fixtures/metadata.json +5 -0
- data/spec/octocatalog-diff/hiera.yaml +1 -2
- data/spec/octocatalog-diff/octocatalog-diff.cfg.rb +5 -1
- data/spec/puppet-check/cli_spec.rb +40 -38
- data/spec/puppet-check/data_parser_spec.rb +30 -30
- data/spec/puppet-check/output_results_spec.rb +29 -29
- data/spec/puppet-check/puppet_parser_spec.rb +25 -25
- data/spec/puppet-check/regression_check_spec.rb +9 -6
- data/spec/puppet-check/rspec_puppet_support_spec.rb +2 -2
- data/spec/puppet-check/ruby_parser_spec.rb +39 -39
- data/spec/puppet-check/tasks_spec.rb +2 -2
- data/spec/puppet-check_spec.rb +33 -21
- data/spec/system/system_spec.rb +20 -20
- metadata +2 -2
@@ -21,7 +21,7 @@ class PuppetParser
|
|
21
21
|
Puppet::Face[:parser, :current].validate(file)
|
22
22
|
# this is the actual error that we need to rescue Puppet::Face from
|
23
23
|
rescue SystemExit
|
24
|
-
next PuppetCheck.error_files.push("#{file}:\n#{errors.map(&:to_s).join("\n").gsub("#{File.absolute_path(file)}:", '')}")
|
24
|
+
next PuppetCheck.settings[:error_files].push("#{file}:\n#{errors.map(&:to_s).join("\n").gsub("#{File.absolute_path(file)}:", '')}")
|
25
25
|
end
|
26
26
|
|
27
27
|
# initialize warnings with output from the parser if it exists, since the output is warnings if Puppet::Face did not trigger a SystemExit
|
@@ -50,8 +50,8 @@ class PuppetParser
|
|
50
50
|
puppet_lint.problems.each { |values| warnings += "\n#{values[:line]}:#{values[:column]}: #{values[:message]}" }
|
51
51
|
end
|
52
52
|
end
|
53
|
-
next PuppetCheck.warning_files.push(warnings) unless warnings == "#{file}:"
|
54
|
-
PuppetCheck.clean_files.push(file.to_s)
|
53
|
+
next PuppetCheck.settings[:warning_files].push(warnings) unless warnings == "#{file}:"
|
54
|
+
PuppetCheck.settings[:clean_files].push(file.to_s)
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
@@ -61,16 +61,16 @@ class PuppetParser
|
|
61
61
|
|
62
62
|
files.each do |file|
|
63
63
|
# puppet before version 4 cannot check template syntax
|
64
|
-
next PuppetCheck.ignored_files.push("#{file}: ignored due to Puppet < 4") if Puppet::PUPPETVERSION.to_i < 4
|
64
|
+
next PuppetCheck.settings[:ignored_files].push("#{file}: ignored due to Puppet < 4") if Puppet::PUPPETVERSION.to_i < 4
|
65
65
|
|
66
66
|
# check puppet template syntax
|
67
67
|
begin
|
68
68
|
# credits to gds-operations/puppet-syntax for the parser function call
|
69
69
|
Puppet::Pops::Parser::EvaluatingParser::EvaluatingEppParser.new.parse_file(file)
|
70
70
|
rescue StandardError => err
|
71
|
-
PuppetCheck.error_files.push("#{file}:\n#{err.to_s.gsub("#{file}:", '')}")
|
71
|
+
PuppetCheck.settings[:error_files].push("#{file}:\n#{err.to_s.gsub("#{file}:", '')}")
|
72
72
|
else
|
73
|
-
PuppetCheck.clean_files.push(file.to_s)
|
73
|
+
PuppetCheck.settings[:clean_files].push(file.to_s)
|
74
74
|
end
|
75
75
|
end
|
76
76
|
end
|
@@ -14,8 +14,8 @@ class RegressionCheck
|
|
14
14
|
|
15
15
|
# regression testing
|
16
16
|
# def self.regression(nodes, octoconfig)
|
17
|
-
|
18
|
-
|
17
|
+
# options = RegressionCheck.config(octoconfig)
|
18
|
+
# nodes.each { |node| stuff }
|
19
19
|
# end
|
20
20
|
|
21
21
|
# config file loading
|
@@ -4,7 +4,7 @@ class RSpecPuppetSupport
|
|
4
4
|
# 'puppetcheck:spec' task invokes 'run'
|
5
5
|
# 'run' invokes 'file_setup' always and 'dependency_setup' if metadata.json exists
|
6
6
|
# 'dependency_setup' invokes 'git/forge/hg' if dependencies exist and git/forge/hg is download option
|
7
|
-
# 'git/forge/hg' downloads module fixture appropriately
|
7
|
+
# 'git/forge/svn/hg' downloads module fixture appropriately
|
8
8
|
|
9
9
|
# prepare the spec fixtures directory for rspec-puppet testing
|
10
10
|
def self.run
|
@@ -39,7 +39,7 @@ class RSpecPuppetSupport
|
|
39
39
|
File.write('spec/fixtures/manifests/site.pp', '') unless File.file?('spec/fixtures/manifests/site.pp')
|
40
40
|
|
41
41
|
# symlink over everything the module needs for compilation
|
42
|
-
%w
|
42
|
+
%w[hiera.yaml data hieradata functions manifests lib files templates].each do |file|
|
43
43
|
File.symlink("../../../../#{file}", "spec/fixtures/modules/#{module_name}/#{file}") if File.exist?(file) && !File.exist?("spec/fixtures/modules/#{module_name}/#{file}")
|
44
44
|
end
|
45
45
|
|
@@ -63,6 +63,8 @@ class RSpecPuppetSupport
|
|
63
63
|
git(dependency_hash['git'], dependency_hash['args'])
|
64
64
|
elsif dependency_hash.key?('forge')
|
65
65
|
forge(dependency_hash['forge'], dependency_hash['args'])
|
66
|
+
elsif dependency_hash.key?('svn')
|
67
|
+
svn(dependency_hash['svn'], dependency_hash['args'])
|
66
68
|
elsif dependency_hash.key?('hg')
|
67
69
|
hg(dependency_hash['hg'], dependency_hash['args'])
|
68
70
|
else
|
@@ -81,11 +83,17 @@ class RSpecPuppetSupport
|
|
81
83
|
|
82
84
|
# download external module dependency with forge
|
83
85
|
def self.forge(forge_name, args = '')
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
86
|
+
# is the module present? do an upgrade; otherwise, do an install
|
87
|
+
subcommand = File.directory?("spec/fixtures/modules/#{forge_name}") ? 'upgrade' : 'install'
|
88
|
+
system("puppet module #{subcommand} --modulepath spec/fixtures/modules/ #{args} #{forge_name}")
|
89
|
+
end
|
90
|
+
|
91
|
+
# download external module dependency with svn
|
92
|
+
def self.svn(svn_url, args = '')
|
93
|
+
# establish path to checkout module to
|
94
|
+
path = "spec/fixtures/modules/#{File.basename(svn_url)}"
|
95
|
+
# is the module present and already checked out with svn? do an update; otherwise, do a checkout
|
96
|
+
File.directory?("#{path}/.svn") ? system("svn update #{path}") : system("svn co #{args} #{svn_url} #{path}")
|
89
97
|
end
|
90
98
|
|
91
99
|
# download external module dependency with hg
|
@@ -11,7 +11,7 @@ class RubyParser
|
|
11
11
|
# prevents ruby code from actually executing
|
12
12
|
catch(:good) { instance_eval("BEGIN {throw :good}; #{File.read(file)}") }
|
13
13
|
rescue ScriptError, StandardError => err
|
14
|
-
PuppetCheck.error_files.push("#{file}:\n#{err}")
|
14
|
+
PuppetCheck.settings[:error_files].push("#{file}:\n#{err}")
|
15
15
|
else
|
16
16
|
# check ruby style
|
17
17
|
if style
|
@@ -28,9 +28,9 @@ class RubyParser
|
|
28
28
|
warnings += reek_warnings.split("\n")[1..-1].map(&:strip).join("\n") unless reek_warnings == ''
|
29
29
|
|
30
30
|
# return warnings
|
31
|
-
next PuppetCheck.warning_files.push("#{file}:\n#{warnings.strip}") unless warnings == ''
|
31
|
+
next PuppetCheck.settings[:warning_files].push("#{file}:\n#{warnings.strip}") unless warnings == ''
|
32
32
|
end
|
33
|
-
PuppetCheck.clean_files.push(file.to_s)
|
33
|
+
PuppetCheck.settings[:clean_files].push(file.to_s)
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
@@ -49,11 +49,11 @@ class RubyParser
|
|
49
49
|
# empty out warnings since it would contain an error if this pass triggers
|
50
50
|
warnings = ''
|
51
51
|
rescue ScriptError => err
|
52
|
-
next PuppetCheck.error_files.push("#{file}:\n#{err}")
|
52
|
+
next PuppetCheck.settings[:error_files].push("#{file}:\n#{err}")
|
53
53
|
end
|
54
54
|
# return warnings from the check if there were any
|
55
|
-
next PuppetCheck.warning_files.push("#{file}:\n#{warnings.gsub('warning: ', '').split('(erb):').join('').strip}") unless warnings == ''
|
56
|
-
PuppetCheck.clean_files.push(file.to_s)
|
55
|
+
next PuppetCheck.settings[:warning_files].push("#{file}:\n#{warnings.gsub('warning: ', '').split('(erb):').join('').strip}") unless warnings == ''
|
56
|
+
PuppetCheck.settings[:clean_files].push(file.to_s)
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
@@ -65,7 +65,7 @@ class RubyParser
|
|
65
65
|
# prevents ruby code from actually executing
|
66
66
|
catch(:good) { instance_eval("BEGIN {throw :good}; #{File.read(file)}") }
|
67
67
|
rescue SyntaxError, LoadError, ArgumentError => err
|
68
|
-
PuppetCheck.error_files.push("#{file}:\n#{err}")
|
68
|
+
PuppetCheck.settings[:error_files].push("#{file}:\n#{err}")
|
69
69
|
# check librarian puppet style
|
70
70
|
else
|
71
71
|
if style
|
@@ -77,9 +77,9 @@ class RubyParser
|
|
77
77
|
warnings = Utils.capture_stdout { RuboCop::CLI.new.run(rc_args + ['--format', 'emacs', file]) }
|
78
78
|
|
79
79
|
# collect style warnings
|
80
|
-
next PuppetCheck.warning_files.push("#{file}:\n#{warnings.split("#{File.absolute_path(file)}:").join('')}") unless warnings.empty?
|
80
|
+
next PuppetCheck.settings[:warning_files].push("#{file}:\n#{warnings.split("#{File.absolute_path(file)}:").join('')}") unless warnings.empty?
|
81
81
|
end
|
82
|
-
PuppetCheck.clean_files.push(file.to_s)
|
82
|
+
PuppetCheck.settings[:clean_files].push(file.to_s)
|
83
83
|
end
|
84
84
|
end
|
85
85
|
end
|
data/lib/puppet-check/tasks.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
|
-
|
2
|
-
require 'rake/tasklib'
|
1
|
+
begin
|
2
|
+
require 'rake/tasklib'
|
3
|
+
rescue LoadError
|
4
|
+
raise 'Rake is not installed and you are attempting to execute Rake tasks with Puppet Check. Please install Rake before continuing.'
|
5
|
+
end
|
3
6
|
require_relative '../puppet-check'
|
4
|
-
require_relative 'rspec_puppet_support'
|
5
7
|
|
6
8
|
# the rake interface for PuppetCheck
|
7
9
|
class PuppetCheck::Tasks < ::Rake::TaskLib
|
8
10
|
def initialize
|
9
11
|
desc 'Execute all Puppet-Check checks'
|
10
|
-
task puppetcheck: %w
|
12
|
+
task puppetcheck: %w[puppetcheck:file puppetcheck:spec puppetcheck:beaker]
|
11
13
|
|
12
14
|
namespace :puppetcheck do
|
13
15
|
desc 'Execute Puppet-Check file checks'
|
@@ -15,21 +17,28 @@ class PuppetCheck::Tasks < ::Rake::TaskLib
|
|
15
17
|
PuppetCheck.new.run(Dir.glob('*'))
|
16
18
|
end
|
17
19
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
20
|
+
begin
|
21
|
+
require 'rspec/core/rake_task'
|
22
|
+
require_relative 'rspec_puppet_support'
|
23
|
+
|
24
|
+
desc 'Execute RSpec and RSpec-Puppet tests'
|
25
|
+
RSpec::Core::RakeTask.new(:spec) do |task|
|
26
|
+
RSpecPuppetSupport.run
|
27
|
+
# generate tasks for all recognized directories and ensure spec tests inside module dependencies are ignored
|
28
|
+
spec_dirs = Dir.glob('**/{classes,defines,facter,functions,hosts,puppet,unit,types}/**/*_spec.rb').reject { |dir| dir =~ /fixtures/ }
|
29
|
+
task.pattern = spec_dirs.empty? ? 'skip_rspec' : spec_dirs
|
30
|
+
task.rspec_opts = '-f json' if PuppetCheck.settings[:output_format] == 'json'
|
31
|
+
end
|
26
32
|
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
+
desc 'Execute Beaker acceptance tests'
|
34
|
+
RSpec::Core::RakeTask.new(:beaker) do |task|
|
35
|
+
# generate tasks for all recognized directories and ensure acceptance tests inside module dependencies are ignored
|
36
|
+
acceptance_dirs = Dir.glob('**/acceptance').reject { |dir| dir =~ /fixtures/ }
|
37
|
+
task.pattern = acceptance_dirs.empty? ? 'skip_beaker' : acceptance_dirs
|
38
|
+
task.rspec_opts = '-f json' if PuppetCheck.settings[:output_format] == 'json'
|
39
|
+
end
|
40
|
+
rescue LoadError
|
41
|
+
puts 'RSpec is not installed. The RSpec/RSpecPuppet and Beaker tasks will not be available.'
|
33
42
|
end
|
34
43
|
end
|
35
44
|
end
|
data/spec/fixtures/metadata.json
CHANGED
@@ -40,6 +40,11 @@
|
|
40
40
|
"version_requirement": ">= 0.5.0 < 1.0.0",
|
41
41
|
"git": "https://github.com/puppetlabs/puppetlabs-lvm.git"
|
42
42
|
},
|
43
|
+
{
|
44
|
+
"name": "puppetlabs/foo",
|
45
|
+
"version_requirement": ">= 0.0.0 < 1.0.0",
|
46
|
+
"svn": "https://www.doesnotexist.com/foo"
|
47
|
+
},
|
43
48
|
{
|
44
49
|
"name": "puppetlabs/gruntmaster",
|
45
50
|
"version_requirement": ">= 6000.0.0 < 9000.0.0",
|
@@ -9,7 +9,11 @@ module OctocatalogDiff
|
|
9
9
|
settings[:hiera_config] = octocatalog_diff_dir + 'hiera.yaml'
|
10
10
|
settings[:hiera_path] = octocatalog_diff_dir + 'hieradata'
|
11
11
|
settings[:fact_file] = octocatalog_diff_dir + 'facts.yaml'
|
12
|
-
settings[:puppet_binary] = '/
|
12
|
+
settings[:puppet_binary] = if File.directory?('/home/travis')
|
13
|
+
octocatalog_diff_dir + '../../bin/puppet'
|
14
|
+
else
|
15
|
+
'/usr/local/bin/puppet'
|
16
|
+
end
|
13
17
|
settings[:bootstrapped_to_dir] = octocatalog_diff_dir
|
14
18
|
|
15
19
|
settings
|
@@ -4,69 +4,71 @@ require_relative '../../lib/puppet-check/cli'
|
|
4
4
|
describe PuppetCheck::CLI do
|
5
5
|
context '.run' do
|
6
6
|
it 'raises an error if no paths were specified' do
|
7
|
-
expect { PuppetCheck::CLI.run(%w
|
7
|
+
expect { PuppetCheck::CLI.run(%w[-s -f]) }.to raise_error(RuntimeError, 'puppet-check: no paths specified; try using --help')
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
11
11
|
context '.parse' do
|
12
12
|
it 'raises an error if an invalid option was specified' do
|
13
|
-
expect { PuppetCheck::CLI.parse(%w
|
13
|
+
expect { PuppetCheck::CLI.parse(%w[-s -f -asdf foo]) }.to raise_error(OptionParser::InvalidOption)
|
14
14
|
end
|
15
15
|
|
16
|
-
it 'allows future parser, style, smoke, and regression checks to be enabled' do
|
17
|
-
PuppetCheck.future_parser = false
|
18
|
-
PuppetCheck.
|
19
|
-
PuppetCheck.
|
20
|
-
PuppetCheck.
|
21
|
-
PuppetCheck
|
22
|
-
|
23
|
-
expect(PuppetCheck.
|
24
|
-
expect(PuppetCheck.
|
25
|
-
expect(PuppetCheck.
|
16
|
+
it 'allows future parser, fail on warnings, style, smoke, and regression checks to be enabled' do
|
17
|
+
PuppetCheck.settings[:future_parser] = false
|
18
|
+
PuppetCheck.settings[:fail_on_warnings] = false
|
19
|
+
PuppetCheck.settings[:style_check] = false
|
20
|
+
PuppetCheck.settings[:smoke_check] = false
|
21
|
+
PuppetCheck.settings[:regression_check] = false
|
22
|
+
PuppetCheck::CLI.parse(%w[-f --fail-on-warnings -s -r --smoke foo])
|
23
|
+
expect(PuppetCheck.settings[:future_parser]).to eql(true)
|
24
|
+
expect(PuppetCheck.settings[:fail_on_warnings]).to eql(true)
|
25
|
+
expect(PuppetCheck.settings[:style_check]).to eql(true)
|
26
|
+
expect(PuppetCheck.settings[:smoke_check]).to eql(true)
|
27
|
+
expect(PuppetCheck.settings[:regression_check]).to eql(true)
|
26
28
|
end
|
27
29
|
|
28
30
|
it 'correctly parses a formatting option' do
|
29
|
-
PuppetCheck.output_format = ''
|
30
|
-
PuppetCheck::CLI.parse(%w
|
31
|
-
expect(PuppetCheck.output_format).to eql('text')
|
31
|
+
PuppetCheck.settings[:output_format] = ''
|
32
|
+
PuppetCheck::CLI.parse(%w[-o text])
|
33
|
+
expect(PuppetCheck.settings[:output_format]).to eql('text')
|
32
34
|
end
|
33
35
|
|
34
36
|
it 'correctly parses octocatalog-diff options' do
|
35
|
-
PuppetCheck.octoconfig = ''
|
36
|
-
PuppetCheck.octonodes = []
|
37
|
-
PuppetCheck::CLI.parse(%w
|
38
|
-
expect(PuppetCheck.octoconfig).to eql('config.cfg.rb')
|
39
|
-
expect(PuppetCheck.octonodes).to eql(%w
|
37
|
+
PuppetCheck.settings[:octoconfig] = ''
|
38
|
+
PuppetCheck.settings[:octonodes] = []
|
39
|
+
PuppetCheck::CLI.parse(%w[--octoconfig config.cfg.rb --octonodes server1,server2])
|
40
|
+
expect(PuppetCheck.settings[:octoconfig]).to eql('config.cfg.rb')
|
41
|
+
expect(PuppetCheck.settings[:octonodes]).to eql(%w[server1 server2])
|
40
42
|
end
|
41
43
|
|
42
44
|
it 'correctly parses PuppetLint arguments' do
|
43
|
-
PuppetCheck.puppetlint_args = []
|
44
|
-
PuppetCheck::CLI.parse(%w
|
45
|
-
expect(PuppetCheck.puppetlint_args).to eql(['--puppetlint-arg-one', '--puppetlint-arg-two'])
|
45
|
+
PuppetCheck.settings[:puppetlint_args] = []
|
46
|
+
PuppetCheck::CLI.parse(%w[--puppet-lint puppetlint-arg-one,puppetlint-arg-two foo])
|
47
|
+
expect(PuppetCheck.settings[:puppetlint_args]).to eql(['--puppetlint-arg-one', '--puppetlint-arg-two'])
|
46
48
|
end
|
47
49
|
|
48
50
|
it 'correctly loads a .puppet-lint.rc' do
|
49
|
-
PuppetCheck.puppetlint_args = []
|
50
|
-
PuppetCheck::CLI.parse(%W
|
51
|
-
expect(PuppetCheck.puppetlint_args).to eql(['--puppetlint-arg-one', '--puppetlint-arg-two'])
|
51
|
+
PuppetCheck.settings[:puppetlint_args] = []
|
52
|
+
PuppetCheck::CLI.parse(%W[-c #{fixtures_dir}/manifests/.puppet-lint.rc])
|
53
|
+
expect(PuppetCheck.settings[:puppetlint_args]).to eql(['--puppetlint-arg-one', '--puppetlint-arg-two'])
|
52
54
|
end
|
53
55
|
|
54
56
|
it 'correctly parses Rubocop arguments' do
|
55
|
-
PuppetCheck.rubocop_args = []
|
56
|
-
PuppetCheck::CLI.parse(%w
|
57
|
-
expect(PuppetCheck.rubocop_args).to eql(['--except', 'rubocop-arg-one,rubocop-arg-two'])
|
57
|
+
PuppetCheck.settings[:rubocop_args] = []
|
58
|
+
PuppetCheck::CLI.parse(%w[--rubocop rubocop-arg-one,rubocop-arg-two foo])
|
59
|
+
expect(PuppetCheck.settings[:rubocop_args]).to eql(['--except', 'rubocop-arg-one,rubocop-arg-two'])
|
58
60
|
end
|
59
61
|
|
60
62
|
it 'correctly parses multiple sets of arguments' do
|
61
|
-
PuppetCheck.future_parser = false
|
62
|
-
PuppetCheck.style_check = false
|
63
|
-
PuppetCheck.puppetlint_args = []
|
64
|
-
PuppetCheck.rubocop_args = []
|
65
|
-
PuppetCheck::CLI.parse(%w
|
66
|
-
expect(PuppetCheck.future_parser).to eql(true)
|
67
|
-
expect(PuppetCheck.style_check).to eql(true)
|
68
|
-
expect(PuppetCheck.puppetlint_args).to eql(['--puppetlint-arg-one', '--puppetlint-arg-two'])
|
69
|
-
expect(PuppetCheck.rubocop_args).to eql(['--except', 'rubocop-arg-one,rubocop-arg-two'])
|
63
|
+
PuppetCheck.settings[:future_parser] = false
|
64
|
+
PuppetCheck.settings[:style_check] = false
|
65
|
+
PuppetCheck.settings[:puppetlint_args] = []
|
66
|
+
PuppetCheck.settings[:rubocop_args] = []
|
67
|
+
PuppetCheck::CLI.parse(%w[-s -f --puppet-lint puppetlint-arg-one,puppetlint-arg-two --rubocop rubocop-arg-one,rubocop-arg-two foo])
|
68
|
+
expect(PuppetCheck.settings[:future_parser]).to eql(true)
|
69
|
+
expect(PuppetCheck.settings[:style_check]).to eql(true)
|
70
|
+
expect(PuppetCheck.settings[:puppetlint_args]).to eql(['--puppetlint-arg-one', '--puppetlint-arg-two'])
|
71
|
+
expect(PuppetCheck.settings[:rubocop_args]).to eql(['--except', 'rubocop-arg-one,rubocop-arg-two'])
|
70
72
|
end
|
71
73
|
end
|
72
74
|
end
|
@@ -3,68 +3,68 @@ require_relative '../../lib/puppet-check/data_parser'
|
|
3
3
|
|
4
4
|
describe DataParser do
|
5
5
|
before(:each) do
|
6
|
-
PuppetCheck.error_files = []
|
7
|
-
PuppetCheck.warning_files = []
|
8
|
-
PuppetCheck.clean_files = []
|
6
|
+
PuppetCheck.settings[:error_files] = []
|
7
|
+
PuppetCheck.settings[:warning_files] = []
|
8
|
+
PuppetCheck.settings[:clean_files] = []
|
9
9
|
end
|
10
10
|
|
11
11
|
context '.yaml' do
|
12
12
|
it 'puts a bad syntax yaml file in the error files array' do
|
13
13
|
DataParser.yaml([fixtures_dir + 'hieradata/syntax.yaml'])
|
14
|
-
expect(PuppetCheck.error_files[0]).to match(%r{^#{fixtures_dir}hieradata/syntax.yaml:\nblock sequence entries are not allowed})
|
15
|
-
expect(PuppetCheck.warning_files).to eql([])
|
16
|
-
expect(PuppetCheck.clean_files).to eql([])
|
14
|
+
expect(PuppetCheck.settings[:error_files][0]).to match(%r{^#{fixtures_dir}hieradata/syntax.yaml:\nblock sequence entries are not allowed})
|
15
|
+
expect(PuppetCheck.settings[:warning_files]).to eql([])
|
16
|
+
expect(PuppetCheck.settings[:clean_files]).to eql([])
|
17
17
|
end
|
18
18
|
it 'puts a good yaml file with potential hiera issues in the warning files array' do
|
19
19
|
DataParser.yaml([fixtures_dir + 'hieradata/style.yaml'])
|
20
|
-
expect(PuppetCheck.error_files).to eql([])
|
21
|
-
expect(PuppetCheck.warning_files[0]).to match(%r{^#{fixtures_dir}hieradata/style.yaml:\nValue\(s\) missing in key.*\nValue\(s\) missing in key.*\nThe string --- appears more than once in this data and Hiera will fail to parse it correctly})
|
22
|
-
expect(PuppetCheck.clean_files).to eql([])
|
20
|
+
expect(PuppetCheck.settings[:error_files]).to eql([])
|
21
|
+
expect(PuppetCheck.settings[:warning_files][0]).to match(%r{^#{fixtures_dir}hieradata/style.yaml:\nValue\(s\) missing in key.*\nValue\(s\) missing in key.*\nThe string --- appears more than once in this data and Hiera will fail to parse it correctly})
|
22
|
+
expect(PuppetCheck.settings[:clean_files]).to eql([])
|
23
23
|
end
|
24
24
|
it 'puts a good yaml file in the clean files array' do
|
25
25
|
DataParser.yaml([fixtures_dir + 'hieradata/good.yaml'])
|
26
|
-
expect(PuppetCheck.error_files).to eql([])
|
27
|
-
expect(PuppetCheck.warning_files).to eql([])
|
28
|
-
expect(PuppetCheck.clean_files).to eql(["#{fixtures_dir}hieradata/good.yaml"])
|
26
|
+
expect(PuppetCheck.settings[:error_files]).to eql([])
|
27
|
+
expect(PuppetCheck.settings[:warning_files]).to eql([])
|
28
|
+
expect(PuppetCheck.settings[:clean_files]).to eql(["#{fixtures_dir}hieradata/good.yaml"])
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
32
|
context '.json' do
|
33
33
|
it 'puts a bad syntax json file in the error files array' do
|
34
34
|
DataParser.json([fixtures_dir + 'hieradata/syntax.json'])
|
35
|
-
expect(PuppetCheck.error_files[0]).to match(%r{^#{fixtures_dir}hieradata/syntax.json:\n.*unexpected token})
|
36
|
-
expect(PuppetCheck.warning_files).to eql([])
|
37
|
-
expect(PuppetCheck.clean_files).to eql([])
|
35
|
+
expect(PuppetCheck.settings[:error_files][0]).to match(%r{^#{fixtures_dir}hieradata/syntax.json:\n.*unexpected token})
|
36
|
+
expect(PuppetCheck.settings[:warning_files]).to eql([])
|
37
|
+
expect(PuppetCheck.settings[:clean_files]).to eql([])
|
38
38
|
end
|
39
39
|
it 'puts a bad metadata json file in the error files array' do
|
40
40
|
DataParser.json([fixtures_dir + 'metadata_syntax/metadata.json'])
|
41
|
-
expect(PuppetCheck.error_files[0]).to match(%r{^#{fixtures_dir}metadata_syntax/metadata.json:\nRequired field.*\nField 'requirements'.*\nDuplicate dependencies.*\nDeprecated field.*\nSummary exceeds})
|
42
|
-
expect(PuppetCheck.warning_files).to eql([])
|
43
|
-
expect(PuppetCheck.clean_files).to eql([])
|
41
|
+
expect(PuppetCheck.settings[:error_files][0]).to match(%r{^#{fixtures_dir}metadata_syntax/metadata.json:\nRequired field.*\nField 'requirements'.*\nDuplicate dependencies.*\nDeprecated field.*\nSummary exceeds})
|
42
|
+
expect(PuppetCheck.settings[:warning_files]).to eql([])
|
43
|
+
expect(PuppetCheck.settings[:clean_files]).to eql([])
|
44
44
|
end
|
45
45
|
it 'puts a bad style metadata json file in the warning files array' do
|
46
46
|
DataParser.json([fixtures_dir + 'metadata_style/metadata.json'])
|
47
|
-
expect(PuppetCheck.error_files).to eql([])
|
48
|
-
expect(PuppetCheck.warning_files[0]).to match(%r{^#{fixtures_dir}metadata_style/metadata.json:\n'pe' is missing an upper bound.\n.*operatingsystem_support.*\nLicense identifier})
|
49
|
-
expect(PuppetCheck.clean_files).to eql([])
|
47
|
+
expect(PuppetCheck.settings[:error_files]).to eql([])
|
48
|
+
expect(PuppetCheck.settings[:warning_files][0]).to match(%r{^#{fixtures_dir}metadata_style/metadata.json:\n'pe' is missing an upper bound.\n.*operatingsystem_support.*\nLicense identifier})
|
49
|
+
expect(PuppetCheck.settings[:clean_files]).to eql([])
|
50
50
|
end
|
51
51
|
it 'puts another bad style metadata json file in the warning files array' do
|
52
52
|
DataParser.json([fixtures_dir + 'metadata_style_two/metadata.json'])
|
53
|
-
expect(PuppetCheck.error_files).to eql([])
|
54
|
-
expect(PuppetCheck.warning_files[0]).to match(%r{^#{fixtures_dir}metadata_style_two/metadata.json:\n'puppetlabs/one' has non-semantic versioning.*\n'puppetlabs/two' is missing an upper bound\.\n.*operatingsystem.*\n.*operatingsystemrelease})
|
55
|
-
expect(PuppetCheck.clean_files).to eql([])
|
53
|
+
expect(PuppetCheck.settings[:error_files]).to eql([])
|
54
|
+
expect(PuppetCheck.settings[:warning_files][0]).to match(%r{^#{fixtures_dir}metadata_style_two/metadata.json:\n'puppetlabs/one' has non-semantic versioning.*\n'puppetlabs/two' is missing an upper bound\.\n.*operatingsystem.*\n.*operatingsystemrelease})
|
55
|
+
expect(PuppetCheck.settings[:clean_files]).to eql([])
|
56
56
|
end
|
57
57
|
it 'puts a good json file in the clean files array' do
|
58
58
|
DataParser.json([fixtures_dir + 'hieradata/good.json'])
|
59
|
-
expect(PuppetCheck.error_files).to eql([])
|
60
|
-
expect(PuppetCheck.warning_files).to eql([])
|
61
|
-
expect(PuppetCheck.clean_files).to eql(["#{fixtures_dir}hieradata/good.json"])
|
59
|
+
expect(PuppetCheck.settings[:error_files]).to eql([])
|
60
|
+
expect(PuppetCheck.settings[:warning_files]).to eql([])
|
61
|
+
expect(PuppetCheck.settings[:clean_files]).to eql(["#{fixtures_dir}hieradata/good.json"])
|
62
62
|
end
|
63
63
|
it 'puts a good metadata json file in the clean files array' do
|
64
64
|
DataParser.json([fixtures_dir + 'metadata_good/metadata.json'])
|
65
|
-
expect(PuppetCheck.error_files).to eql([])
|
66
|
-
expect(PuppetCheck.warning_files).to eql([])
|
67
|
-
expect(PuppetCheck.clean_files).to eql(["#{fixtures_dir}metadata_good/metadata.json"])
|
65
|
+
expect(PuppetCheck.settings[:error_files]).to eql([])
|
66
|
+
expect(PuppetCheck.settings[:warning_files]).to eql([])
|
67
|
+
expect(PuppetCheck.settings[:clean_files]).to eql(["#{fixtures_dir}metadata_good/metadata.json"])
|
68
68
|
end
|
69
69
|
end
|
70
70
|
end
|