diff --git a/.gitignore b/.gitignore index 606b5e4..2754e97 100644 --- a/.gitignore +++ b/.gitignore @@ -1,36 +1,36 @@ # Default .gitignore for Ruby *.gem *.rbc .bundle .config coverage InstalledFiles lib/bundler/man pkg rdoc spec/reports test/tmp test/version_tmp tmp vendor/ - +.vendor/ # YARD artifacts .yardoc _yardoc doc/ # Vim *.swp # Eclipse .project # OS X .DS_Store # Puppet coverage/ spec/fixtures/manifests/* spec/fixtures/modules/* Gemfile.lock .forge-releng/ diff --git a/.travis.yml b/.travis.yml index bcf3ccb..5acdf60 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,38 +1,36 @@ sudo: false language: ruby cache: bundler bundler_args: "--without system_tests development" before_install: - bundle -v - rm Gemfile.lock || true - gem update --system - gem update bundler - gem --version - bundle -v script: - bundle exec rake $CHECK matrix: fast_finish: true include: - rvm: 2.3.1 - env: PUPPET_VERSION="~> 5.0" CHECK=build FORGEDEPLOY=true - - rvm: 2.3.1 - env: PUPPET_VERSION="~> 5.0" CHECK=test + env: PUPPET_VERSION="~> 5.0" CHECK=test FORGEDEPLOY=yes - rvm: 2.3.1 env: PUPPET_VERSION="~> 5.0" CHECK=rubocop - rvm: 2.5.3 env: PUPPET_VERSION="~> 6.1" CHECK=test - rvm: 2.5.3 env: PUPPET_VERSION="~> 6.1" CHECK=rubocop notifications: email: false deploy: provider: puppetforge user: saz password: secure: Ul2gGsT/hMn7xFHtgCCiCMnDGrhCjvxA77hCMrponMI5QI5K9MYsJ/ellOjcscGmsy7ijRVk86GK3R16z3ESyBekEd/gK4rfKP2TKq3sgX1xobspee4TKbTUHwoX+L0Rk61LYlutD3QjvGxTGQ80fPb4JlNQHAE264HJw7PZgUk= on: tags: true all_branches: true rvm: 2.3.1 condition: "$FORGEDEPLOY = true" diff --git a/Gemfile b/Gemfile index 384187f..016a516 100644 --- a/Gemfile +++ b/Gemfile @@ -1,63 +1,51 @@ -source ENV['GEM_SOURCE'] || 'https://rubygems.org' +# Thie file is based on voxpupuli/modulesync_config +source ENV['GEM_SOURCE'] || "https://rubygems.org" def location_for(place, fake_version = nil) if place =~ /^(git[:@][^#]*)#(.*)/ - [fake_version, { git: $1, branch: $2, require: false }].compact + [fake_version, { :git => $1, :branch => $2, :require => false }].compact elsif place =~ /^file:\/\/(.*)/ - ['>= 0', { path: File.expand_path($1), require: false }] + ['>= 0', { :path => File.expand_path($1), :require => false }] else - [place, { require: false }] + [place, { :require => false }] end end group :test do - gem 'puppetlabs_spec_helper', '>= 2.11.0', require: false - gem 'rspec-puppet', require: false - gem 'rspec-puppet-facts', require: false - gem 'rspec-puppet-utils', require: false - gem 'puppet-lint-absolute_classname-check', require: false - gem 'puppet-lint-leading_zero-check', require: false - gem 'puppet-lint-trailing_comma-check', require: false - gem 'puppet-lint-version_comparison-check', require: false - gem 'puppet-lint-classes_and_types_beginning_with_digits-check', require: false - gem 'puppet-lint-unquoted_string-check', require: false - gem 'puppet-lint-variable_contains_upcase', require: false - gem 'metadata-json-lint', require: false - gem 'puppet-blacksmith', require: false - gem 'voxpupuli-release', require: false, git: 'https://github.com/voxpupuli/voxpupuli-release-gem.git' - gem 'puppet-strings', '~> 1.0', require: false - gem 'rubocop', '~> 0.49.1', require: false - gem 'rubocop-rspec', require: false - gem 'rspec-its', require: false + gem 'voxpupuli-test', '~> 2.1', :require => false + gem 'coveralls', :require => false + gem 'simplecov-console', :require => false + gem 'fakefs', :require => false + gem 'zabbixapi', :require => false end group :development do - gem 'travis', require: false - gem 'travis-lint', require: false - gem 'guard-rake', require: false + gem 'travis', :require => false + gem 'travis-lint', :require => false + gem 'guard-rake', :require => false + gem 'overcommit', '>= 0.39.1', :require => false end group :system_tests do - if (beaker_version = ENV['BEAKER_VERSION']) - gem 'beaker', *location_for(beaker_version) - end - if (beaker_rspec_version = ENV['BEAKER_RSPEC_VERSION']) - gem 'beaker-rspec', *location_for(beaker_rspec_version) - else - gem 'beaker-rspec', require: false - end - gem 'beaker-puppet_install_helper', require: false + gem 'voxpupuli-acceptance', :require => false +end + +group :release do + gem 'github_changelog_generator', :require => false, :git => 'https://github.com/voxpupuli/github-changelog-generator', :branch => 'voxpupuli_essential_fixes' + gem 'puppet-blacksmith', :require => false + gem 'voxpupuli-release', :require => false + gem 'puppet-strings', '>= 2.2', :require => false end -if (facterversion = ENV['FACTER_GEM_VERSION']) - gem 'facter', facterversion.to_s, require: false, groups: [:test] +if facterversion = ENV['FACTER_GEM_VERSION'] + gem 'facter', facterversion.to_s, :require => false, :groups => [:test] else - gem 'facter', require: false, groups: [:test] + gem 'facter', :require => false, :groups => [:test] end ENV['PUPPET_VERSION'].nil? ? puppetversion = '~> 6.0' : puppetversion = ENV['PUPPET_VERSION'].to_s -gem 'puppet', puppetversion, require: false, groups: [:test] +gem 'puppet', puppetversion, :require => false, :groups => [:test] # vim: syntax=ruby diff --git a/Rakefile b/Rakefile index f86e5d3..2b994bb 100644 --- a/Rakefile +++ b/Rakefile @@ -1,43 +1,55 @@ -require 'puppetlabs_spec_helper/rake_tasks' -require 'puppet_blacksmith/rake_tasks' -require 'voxpupuli/release/rake_tasks' +# Thie file is based on voxpupuli/modulesync_config +require 'voxpupuli/test/rake' -if RUBY_VERSION >= '2.2.0' - require 'rubocop/rake_task' +# load optional tasks for releases +# only available if gem group releases is installed +begin + require 'voxpupuli/release/rake_tasks' +rescue LoadError +end - RuboCop::RakeTask.new(:rubocop) do |task| - # These make the rubocop experience maybe slightly less terrible - task.options = ['-D', '-S', '-E'] +desc "Run main 'test' task and report merged results to coveralls" +task test_with_coveralls: [:test] do + if Dir.exist?(File.expand_path('../lib', __FILE__)) + require 'coveralls/rake/task' + Coveralls::RakeTask.new + Rake::Task['coveralls:push'].invoke + else + puts 'Skipping reporting to coveralls. Module has no lib dir' end end -PuppetLint.configuration.log_format = '%{path}:%{linenumber}:%{check}:%{KIND}:%{message}' -PuppetLint.configuration.fail_on_warnings = true -PuppetLint.configuration.send('relative') -PuppetLint.configuration.send('disable_140chars') -PuppetLint.configuration.send('disable_class_inherits_from_params_class') -PuppetLint.configuration.send('disable_documentation') -PuppetLint.configuration.send('disable_single_quote_string_with_variables') +desc 'Generate REFERENCE.md' +task :reference, [:debug, :backtrace] do |t, args| + patterns = '' + Rake::Task['strings:generate:reference'].invoke(patterns, args[:debug], args[:backtrace]) +end + +begin + require 'github_changelog_generator/task' + GitHubChangelogGenerator::RakeTask.new :changelog do |config| + version = (Blacksmith::Modulefile.new).version + config.future_release = "v#{version}" if version =~ /^\d+\.\d+.\d+$/ + config.header = "# Changelog\n\nAll notable changes to this project will be documented in this file.\nEach new release typically also includes the latest modulesync defaults.\nThese should not affect the functionality of the module." + config.exclude_labels = %w{duplicate question invalid wontfix wont-fix modulesync skip-changelog} + config.user = 'saz' + metadata_json = File.join(File.dirname(__FILE__), 'metadata.json') + metadata = JSON.load(File.read(metadata_json)) + config.project = metadata['name'] + end -exclude_paths = %w[ - pkg/**/* - vendor/**/* - .vendor/**/* - spec/**/* -] -PuppetLint.configuration.ignore_paths = exclude_paths -PuppetSyntax.exclude_paths = exclude_paths + # Workaround for https://github.com/github-changelog-generator/github-changelog-generator/issues/715 + require 'rbconfig' + if RbConfig::CONFIG['host_os'] =~ /linux/ + task :changelog do + puts 'Fixing line endings...' + changelog_file = File.join(__dir__, 'CHANGELOG.md') + changelog_txt = File.read(changelog_file) + new_contents = changelog_txt.gsub(%r{\r\n}, "\n") + File.open(changelog_file, "w") {|file| file.puts new_contents } + end + end -desc 'Run acceptance tests' -RSpec::Core::RakeTask.new(:acceptance) do |t| - t.pattern = 'spec/acceptance' +rescue LoadError end - -desc 'Run tests metadata_lint, lint, syntax, spec' -task test: [ - :metadata_lint, - :lint, - :syntax, - :spec -] # vim: syntax=ruby