aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitattributes1
-rw-r--r--.gitlab-ci.yml4
-rw-r--r--.rubocop.yml4
-rw-r--r--.travis.yml6
-rw-r--r--Gemfile22
-rw-r--r--Rakefile70
-rw-r--r--appveyor.yml11
-rw-r--r--metadata.json6
-rw-r--r--spec/default_facts.yml1
-rw-r--r--spec/spec_helper.rb29
10 files changed, 115 insertions, 39 deletions
diff --git a/.gitattributes b/.gitattributes
index 543dd6a..9032a01 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -2,3 +2,4 @@
*.erb eol=lf
*.pp eol=lf
*.sh eol=lf
+*.epp eol=lf
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d651650..e369e3c 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -16,7 +16,7 @@ before_script:
- bundle install --without system_tests --path vendor/bundle --jobs $(nproc)
parallel_spec-Ruby 2.1.9-Puppet ~> 4.0:
- stage: syntax
+ stage: unit
image: ruby:2.1.9
script:
- bundle exec rake parallel_spec
@@ -32,7 +32,7 @@ syntax lint metadata_lint check:symlinks check:git_ignore check:dot_underscore c
PUPPET_GEM_VERSION: '~> 5.5'
parallel_spec-Ruby 2.4.4-Puppet ~> 5.5:
- stage: syntax
+ stage: unit
image: ruby:2.4.4
script:
- bundle exec rake parallel_spec
diff --git a/.rubocop.yml b/.rubocop.yml
index 8586548..1dcf48d 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -20,6 +20,10 @@ Metrics/LineLength:
Description: People have wide screens, use them.
Max: 200
Enabled: false
+GetText/DecorateString:
+ Description: We don't want to decorate test output.
+ Exclude:
+ - spec/*
RSpec/BeforeAfterAll:
Description: Beware of using after(:all) as it may cause state to leak between tests.
A necessary evil in acceptance testing.
diff --git a/.travis.yml b/.travis.yml
index e8c30de..6664271 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -13,10 +13,10 @@ script:
- 'bundle exec rake $CHECK'
bundler_args: --without system_tests
rvm:
- - 2.5.3
+ - 2.5.1
env:
global:
- - PUPPET_GEM_VERSION="~> 6.0"
+ - BEAKER_PUPPET_COLLECTION=puppet6 PUPPET_GEM_VERSION="~> 6.0"
matrix:
fast_finish: true
include:
@@ -26,7 +26,7 @@ matrix:
env: CHECK=parallel_spec
-
env: PUPPET_GEM_VERSION="~> 5.0" CHECK=parallel_spec
- rvm: 2.4.5
+ rvm: 2.4.4
-
env: PUPPET_GEM_VERSION="~> 4.0" CHECK=parallel_spec
rvm: 2.1.9
diff --git a/Gemfile b/Gemfile
index 4c9526b..1d1cfb8 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,22 +1,15 @@
source ENV['GEM_SOURCE'] || 'https://rubygems.org'
def location_for(place_or_version, fake_version = nil)
- if place_or_version =~ %r{\A(git[:@][^#]*)#(.*)}
- [fake_version, { git: Regexp.last_match(1), branch: Regexp.last_match(2), require: false }].compact
- elsif place_or_version =~ %r{\Afile:\/\/(.*)}
- ['>= 0', { path: File.expand_path(Regexp.last_match(1)), require: false }]
- else
- [place_or_version, { require: false }]
- end
-end
+ git_url_regex = %r{\A(?<url>(https?|git)[:@][^#]*)(#(?<branch>.*))?}
+ file_url_regex = %r{\Afile:\/\/(?<path>.*)}
-def gem_type(place_or_version)
- if place_or_version =~ %r{\Agit[:@]}
- :git
- elsif !place_or_version.nil? && place_or_version.start_with?('file:')
- :file
+ if place_or_version && (git_url = place_or_version.match(git_url_regex))
+ [fake_version, { git: git_url[:url], branch: git_url[:branch], require: false }].compact
+ elsif place_or_version && (file_url = place_or_version.match(file_url_regex))
+ ['>= 0', { path: File.expand_path(file_url[:path]), require: false }]
else
- :gem
+ [place_or_version, { require: false }]
end
end
@@ -47,7 +40,6 @@ group :system_tests do
end
puppet_version = ENV['PUPPET_GEM_VERSION']
-puppet_type = gem_type(puppet_version)
facter_version = ENV['FACTER_GEM_VERSION']
hiera_version = ENV['HIERA_GEM_VERSION']
diff --git a/Rakefile b/Rakefile
index d4e36da..a6b14c5 100644
--- a/Rakefile
+++ b/Rakefile
@@ -1,6 +1,76 @@
require 'puppetlabs_spec_helper/rake_tasks'
require 'puppet-syntax/tasks/puppet-syntax'
require 'puppet_blacksmith/rake_tasks' if Bundler.rubygems.find_name('puppet-blacksmith').any?
+require 'github_changelog_generator/task' if Bundler.rubygems.find_name('github_changelog_generator').any?
+require 'puppet-strings/tasks' if Bundler.rubygems.find_name('puppet-strings').any?
+
+def changelog_user
+ return unless Rake.application.top_level_tasks.include? "changelog"
+ returnVal = nil || JSON.load(File.read('metadata.json'))['author']
+ raise "unable to find the changelog_user in .sync.yml, or the author in metadata.json" if returnVal.nil?
+ puts "GitHubChangelogGenerator user:#{returnVal}"
+ returnVal
+end
+
+def changelog_project
+ return unless Rake.application.top_level_tasks.include? "changelog"
+ returnVal = nil || JSON.load(File.read('metadata.json'))['name']
+ raise "unable to find the changelog_project in .sync.yml or the name in metadata.json" if returnVal.nil?
+ puts "GitHubChangelogGenerator project:#{returnVal}"
+ returnVal
+end
+
+def changelog_future_release
+ return unless Rake.application.top_level_tasks.include? "changelog"
+ returnVal = JSON.load(File.read('metadata.json'))['version']
+ raise "unable to find the future_release (version) in metadata.json" if returnVal.nil?
+ puts "GitHubChangelogGenerator future_release:#{returnVal}"
+ returnVal
+end
PuppetLint.configuration.send('disable_relative')
+if Bundler.rubygems.find_name('github_changelog_generator').any?
+ GitHubChangelogGenerator::RakeTask.new :changelog do |config|
+ raise "Set CHANGELOG_GITHUB_TOKEN environment variable eg 'export CHANGELOG_GITHUB_TOKEN=valid_token_here'" if Rake.application.top_level_tasks.include? "changelog" and ENV['CHANGELOG_GITHUB_TOKEN'].nil?
+ config.user = "#{changelog_user}"
+ config.project = "#{changelog_project}"
+ config.future_release = "#{changelog_future_release}"
+ config.exclude_labels = ['maintenance']
+ config.header = "# Change log\n\nAll notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org)."
+ config.add_pr_wo_labels = true
+ config.issues = false
+ config.merge_prefix = "### UNCATEGORIZED PRS; GO LABEL THEM"
+ config.configure_sections = {
+ "Changed" => {
+ "prefix" => "### Changed",
+ "labels" => ["backwards-incompatible"],
+ },
+ "Added" => {
+ "prefix" => "### Added",
+ "labels" => ["feature", "enhancement"],
+ },
+ "Fixed" => {
+ "prefix" => "### Fixed",
+ "labels" => ["bugfix"],
+ },
+ }
+ end
+else
+ desc 'Generate a Changelog from GitHub'
+ task :changelog do
+ raise <<EOM
+The changelog tasks depends on unreleased features of the github_changelog_generator gem.
+Please manually add it to your .sync.yml for now, and run `pdk update`:
+---
+Gemfile:
+ optional:
+ ':development':
+ - gem: 'github_changelog_generator'
+ git: 'https://github.com/skywinder/github-changelog-generator'
+ ref: '20ee04ba1234e9e83eb2ffb5056e23d641c7a018'
+ condition: "Gem::Version.new(RUBY_VERSION.dup) >= Gem::Version.new('2.2.2')"
+EOM
+ end
+end
+
diff --git a/appveyor.yml b/appveyor.yml
index 4a5b227..f14e28d 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -1,5 +1,8 @@
---
version: 1.1.x.{build}
+branches:
+ only:
+ - master
skip_commits:
message: /^\(?doc\)?.*/
clone_depth: 10
@@ -30,6 +33,14 @@ environment:
PUPPET_GEM_VERSION: ~> 5.0
RUBY_VERSION: 24-x64
CHECK: parallel_spec
+ -
+ PUPPET_GEM_VERSION: ~> 6.0
+ RUBY_VERSION: 25
+ CHECK: parallel_spec
+ -
+ PUPPET_GEM_VERSION: ~> 6.0
+ RUBY_VERSION: 25-x64
+ CHECK: parallel_spec
matrix:
fast_finish: true
install:
diff --git a/metadata.json b/metadata.json
index cd9ffa7..b3246b8 100644
--- a/metadata.json
+++ b/metadata.json
@@ -60,7 +60,7 @@
"version_requirement": ">= 6.0.0 < 7.0.0"
}
],
- "pdk-version": "1.6.0",
+ "pdk-version": "1.8.0",
"template-url": "file:///opt/puppetlabs/pdk/share/cache/pdk-templates.git",
- "template-ref": "1.6.0-0-gf5564c0"
-}
+ "template-ref": "1.8.0-0-g0d9da00"
+} \ No newline at end of file
diff --git a/spec/default_facts.yml b/spec/default_facts.yml
index 3248be5..ea1e480 100644
--- a/spec/default_facts.yml
+++ b/spec/default_facts.yml
@@ -2,7 +2,6 @@
#
# Facts specified here will override the values provided by rspec-puppet-facts.
---
-concat_basedir: "/tmp"
ipaddress: "172.16.254.254"
is_pe: false
macaddress: "AA:AA:AA:AA:AA:AA"
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index e69d11d..35654b3 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -1,12 +1,7 @@
-
require 'puppetlabs_spec_helper/module_spec_helper'
require 'rspec-puppet-facts'
-begin
- require 'spec_helper_local' if File.file?(File.join(File.dirname(__FILE__), 'spec_helper_local.rb'))
-rescue LoadError => loaderror
- warn "Could not require spec_helper_local: #{loaderror.message}"
-end
+require 'spec_helper_local' if File.file?(File.join(File.dirname(__FILE__), 'spec_helper_local.rb'))
include RspecPuppetFacts
@@ -15,15 +10,19 @@ default_facts = {
facterversion: Facter.version,
}
-default_facts_path = File.expand_path(File.join(File.dirname(__FILE__), 'default_facts.yml'))
-default_module_facts_path = File.expand_path(File.join(File.dirname(__FILE__), 'default_module_facts.yml'))
+default_fact_files = [
+ File.expand_path(File.join(File.dirname(__FILE__), 'default_facts.yml')),
+ File.expand_path(File.join(File.dirname(__FILE__), 'default_module_facts.yml')),
+]
-if File.exist?(default_facts_path) && File.readable?(default_facts_path)
- default_facts.merge!(YAML.safe_load(File.read(default_facts_path)))
-end
+default_fact_files.each do |f|
+ next unless File.exist?(f) && File.readable?(f) && File.size?(f)
-if File.exist?(default_module_facts_path) && File.readable?(default_module_facts_path)
- default_facts.merge!(YAML.safe_load(File.read(default_module_facts_path)))
+ begin
+ default_facts.merge!(YAML.safe_load(File.read(f)))
+ rescue => e
+ RSpec.configuration.reporter.message "WARNING: Unable to load #{f}: #{e}"
+ end
end
RSpec.configure do |c|
@@ -37,8 +36,8 @@ end
def ensure_module_defined(module_name)
module_name.split('::').reduce(Object) do |last_module, next_module|
- last_module.const_set(next_module, Module.new) unless last_module.const_defined?(next_module)
- last_module.const_get(next_module)
+ last_module.const_set(next_module, Module.new) unless last_module.const_defined?(next_module, false)
+ last_module.const_get(next_module, false)
end
end