diff options
Diffstat (limited to 'Rakefile')
-rw-r--r-- | Rakefile | 63 |
1 files changed, 47 insertions, 16 deletions
@@ -1,26 +1,57 @@ -require 'bundler' -Bundler.require(:rake) - require 'puppetlabs_spec_helper/rake_tasks' require 'puppet-lint/tasks/puppet-lint' +require 'puppet-syntax/tasks/puppet-syntax' + +# return list of modules, either +# submodules, custom or all modules +# so we can check each array seperately +def modules_pattern (type) + submodules = Array.new + custom_modules = Array.new + all_modules = Array.new + + Dir['puppet/modules/*'].sort.each do |m| + system("grep -q #{m} .gitmodules") + if $?.exitstatus == 0 + submodules << m + '/**/*.pp' + else + custom_modules << m + '/**/*.pp' + end + all_modules << m + '/**/*.pp' + end + + case type + when 'submodule' + submodules + when 'custom' + custom_modules + when 'all' + all_modules + end +end + +exclude_paths = ["**/vendor/**/*", "spec/fixtures/**/*", "pkg/**/*" ] +# redefine lint task so we don't lint submoudules for now Rake::Task[:lint].clear PuppetLint::RakeTask.new :lint do |config| - config.ignore_paths = ["spec/**/*.pp", "vendor/**/*.pp"] - config.log_format = '%{path}:%{linenumber}:%{KIND}: %{message}' - config.disable_checks = [ "class_inherits_from_params_class", "80chars" ] + # only check for custom manifests, not submodules for now + config.pattern = modules_pattern('custom') + config.ignore_paths = exclude_paths + config.disable_checks = ['documentation', '80chars'] + config.fail_on_warnings = false end -# use librarian-puppet to manage fixtures instead of .fixtures.yml -# offers more possibilities like explicit version management, forge downloads,... -task :librarian_spec_prep do - sh "librarian-puppet install --path=spec/fixtures/modules/" - pwd = `pwd`.strip - unless File.directory?("#{pwd}/spec/fixtures/modules/apache") - sh "ln -s #{pwd} #{pwd}/spec/fixtures/modules/apache" +# rake syntax::* tasks +PuppetSyntax.exclude_paths = exclude_paths +PuppetSyntax.future_parser = true + +desc "Validate erb templates" +task :templates do + Dir['**/templates/**/*.erb'].each do |template| + sh "erb -P -x -T '-' #{template} | ruby -c" unless template =~ /.*vendor.*/ end end -task :spec_prep => :librarian_spec_prep - -task :default => [:spec, :lint] +desc "Run all puppet checks required for CI (syntax , validate, spec, lint)" +task :test => [:syntax , :validate, :templates, :spec, :lint] |