class PuppetSyntax::Manifests
Public Instance Methods
check(filelist)
click to toggle source
# File lib/puppet-syntax/manifests.rb, line 3 def check(filelist) raise 'Expected an array of files' unless filelist.is_a?(Array) require 'puppet' require 'puppet/version' require 'puppet/face' require 'puppet/test/test_helper' output = [] Puppet::Test::TestHelper.initialize Puppet::Test::TestHelper.before_all_tests called_before_all_tests = true # Catch syntax warnings. Puppet::Util::Log.newdestination(Puppet::Test::LogCollector.new(output)) Puppet::Util::Log.level = :warning filelist.each do |puppet_file| Puppet::Test::TestHelper.before_each_test begin error = validate_manifest(puppet_file) output << error.values.first if error.is_a?(Hash) && !error.empty? # Puppet 6.5.0 onwards rescue SystemExit # Disregard exit(1) from face. # This is how puppet < 6.5.0 `validate_manifest` worked. rescue StandardError => e output << e ensure Puppet::Test::TestHelper.after_each_test end end Puppet::Util::Log.close_all output.map! { |e| e.to_s } # Exported resources will raise warnings when outside a puppetmaster. output.reject! do |e| e =~ /^You cannot collect( exported resources)? without storeconfigs being set/ end # tag and schedule parameters in class raise warnings notice in output that prevent from succeed output.reject! do |e| e =~ /^(tag|schedule) is a metaparam; this value will inherit to all contained resources in the / end deprecations = output.select do |e| e =~ /^Deprecation notice:|is deprecated/ end # Errors exist if there is any output that isn't a deprecation notice. has_errors = (output != deprecations) [output, has_errors] ensure Puppet::Test::TestHelper.after_all_tests if called_before_all_tests end
Private Instance Methods
validate_manifest(file)
click to toggle source
# File lib/puppet-syntax/manifests.rb, line 63 def validate_manifest(file) Puppet[:tasks] = true if %r{.*plans/.*\.pp$}.match?(file) Puppet::Face[:parser, :current].validate(file) end