Skip to content

Instantly share code, notes, and snippets.

@rnelson0
Created May 29, 2018 18:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rnelson0/61c2940f8e7dc20eb4cbaedda38d5613 to your computer and use it in GitHub Desktop.
Save rnelson0/61c2940f8e7dc20eb4cbaedda38d5613 to your computer and use it in GitHub Desktop.
Naive `pdk convert` attempt
[rnelson0@build03 domain_join:pdk±]$ git diff
diff --git a/.gitignore b/.gitignore
index 5caea85..49bc2a4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,13 +1,23 @@
-.*.sw?
-/pkg
-/spec/fixtures/manifests
-/spec/fixtures/modules
-/.rspec_system
-/.vagrant
-/.bundle
-/vendor
-/Gemfile.lock
-/junit
-/log
+.*.sw[op]
+.metadata
.yardoc
-coverage
+.yardwarns
+*.iml
+/.bundle/
+/.idea/
+/.vagrant/
+/coverage/
+/bin/
+/doc/
+/Gemfile.local
+/Gemfile.lock
+/junit/
+/log/
+/pkg/
+/spec/fixtures/manifests/
+/spec/fixtures/modules/
+/tmp/
+/vendor/
+/convert_report.txt
+/update_report.txt
+.DS_Store
diff --git a/.rspec b/.rspec
index 8c18f1a..16f9cdb 100644
--- a/.rspec
+++ b/.rspec
@@ -1,2 +1,2 @@
---format documentation
--color
+--format documentation
diff --git a/.rubocop.yml b/.rubocop.yml
index e4d810a..40a58e0 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -1,480 +1,107 @@
+---
+require: rubocop-rspec
AllCops:
+ DisplayCopNames: true
+ TargetRubyVersion: '2.1'
+ Include:
+ - "./**/*.rb"
Exclude:
- # Ignore HTML related things
- - '**/*.erb'
- # Ignore vendored gems
- - 'vendor/**/*'
- # Ignore code from test fixtures
- - 'spec/fixtures/**/*'
-
-Lint/ConditionPosition:
- Enabled: true
-
-Lint/ElseLayout:
- Enabled: true
-
-Lint/UnreachableCode:
- Enabled: true
-
-Lint/UselessComparison:
- Enabled: true
-
-Lint/EnsureReturn:
- Enabled: true
-
-Lint/HandleExceptions:
- Enabled: true
-
-Lint/LiteralInCondition:
- Enabled: true
-
-Lint/ShadowingOuterLocalVariable:
- Enabled: true
-
-Lint/LiteralInInterpolation:
- Enabled: true
-
-Style/RedundantReturn:
- Enabled: true
-
-Lint/AmbiguousOperator:
- Enabled: true
-
-Lint/AssignmentInCondition:
- Enabled: true
-
-Style/SpaceBeforeComment:
- Enabled: true
-
-# DISABLED - not useful
-Style/HashSyntax:
- Enabled: false
-
-# USES: as shortcut for non nil&valid checking a = x() and a.empty?
-# DISABLED - not useful
-Style/AndOr:
- Enabled: false
-
-# DISABLED - not useful
-Style/RedundantSelf:
- Enabled: false
-
-# DISABLED - not useful
-Metrics/MethodLength:
- Enabled: false
-
-# DISABLED - not useful
-Style/WhileUntilModifier:
- Enabled: false
-
-# DISABLED - the offender is just haskell envy
-Lint/AmbiguousRegexpLiteral:
- Enabled: false
-
-# DISABLED
-Lint/Eval:
- Enabled: false
-
-# DISABLED
-Lint/BlockAlignment:
- Enabled: false
-
-# DISABLED
-Lint/DefEndAlignment:
- Enabled: false
-
-# DISABLED
-Lint/EndAlignment:
- Enabled: false
-
-# DISABLED
-Lint/DeprecatedClassMethods:
- Enabled: false
-
-# DISABLED
-Lint/Loop:
- Enabled: false
-
-# DISABLED
-Lint/ParenthesesAsGroupedExpression:
- Enabled: false
-
-Lint/RescueException:
- Enabled: false
-
-Lint/StringConversionInInterpolation:
- Enabled: false
-
-Lint/UnusedBlockArgument:
- Enabled: false
-
-Lint/UnusedMethodArgument:
- Enabled: false
-
-Lint/UselessAccessModifier:
+ - bin/*
+ - ".vendor/**/*"
+ - Gemfile
+ - Rakefile
+ - pkg/**/*
+ - spec/fixtures/**/*
+ - vendor/**/*
+Metrics/LineLength:
+ Description: People have wide screens, use them.
+ Max: 200
+RSpec/BeforeAfterAll:
+ Description: Beware of using after(:all) as it may cause state to leak between tests.
+ A necessary evil in acceptance testing.
+ Exclude:
+ - spec/acceptance/**/*.rb
+RSpec/HookArgument:
+ Description: Prefer explicit :each argument, matching existing module's style
+ EnforcedStyle: each
+Style/BlockDelimiters:
+ Description: Prefer braces for chaining. Mostly an aesthetical choice. Better to
+ be consistent then.
+ EnforcedStyle: braces_for_chaining
+Style/ClassAndModuleChildren:
+ Description: Compact style reduces the required amount of indentation.
+ EnforcedStyle: compact
+Style/EmptyElse:
+ Description: Enforce against empty else clauses, but allow `nil` for clarity.
+ EnforcedStyle: empty
+Style/FormatString:
+ Description: Following the main puppet project's style, prefer the % format format.
+ EnforcedStyle: percent
+Style/FormatStringToken:
+ Description: Following the main puppet project's style, prefer the simpler template
+ tokens over annotated ones.
+ EnforcedStyle: template
+Style/Lambda:
+ Description: Prefer the keyword for easier discoverability.
+ EnforcedStyle: literal
+Style/RegexpLiteral:
+ Description: Community preference. See https://github.com/voxpupuli/modulesync_config/issues/168
+ EnforcedStyle: percent_r
+Style/TernaryParentheses:
+ Description: Checks for use of parentheses around ternary conditions. Enforce parentheses
+ on complex expressions for better readability, but seriously consider breaking
+ it up.
+ EnforcedStyle: require_parentheses_when_complex
+Style/TrailingCommaInArguments:
+ Description: Prefer always trailing comma on multiline argument lists. This makes
+ diffs, and re-ordering nicer.
+ EnforcedStyleForMultiline: comma
+Style/TrailingCommaInLiteral:
+ Description: Prefer always trailing comma on multiline literals. This makes diffs,
+ and re-ordering nicer.
+ EnforcedStyleForMultiline: comma
+Style/SymbolArray:
+ Description: Using percent style obscures symbolic intent of array's contents.
+ EnforcedStyle: brackets
+RSpec/MessageSpies:
+ EnforcedStyle: receive
+Style/CollectionMethods:
Enabled: true
-
-Lint/UselessAssignment:
+Style/MethodCalledOnDoEndBlock:
Enabled: true
-
-Lint/Void:
+Style/StringMethods:
Enabled: true
-
-Style/AccessModifierIndentation:
+Layout/EndOfLine:
Enabled: false
-
-Style/AccessorMethodName:
+Metrics/AbcSize:
Enabled: false
-
-Style/Alias:
+Metrics/BlockLength:
Enabled: false
-
-Style/AlignArray:
- Enabled: false
-
-Style/AlignHash:
- Enabled: false
-
-Style/AlignParameters:
- Enabled: false
-
-Metrics/BlockNesting:
- Enabled: false
-
-Style/AsciiComments:
- Enabled: false
-
-Style/Attr:
- Enabled: false
-
-Style/BracesAroundHashParameters:
- Enabled: false
-
-Style/CaseEquality:
- Enabled: false
-
-Style/CaseIndentation:
- Enabled: false
-
-Style/CharacterLiteral:
- Enabled: false
-
-Style/ClassAndModuleCamelCase:
- Enabled: false
-
-Style/ClassAndModuleChildren:
- Enabled: false
-
-Style/ClassCheck:
- Enabled: false
-
Metrics/ClassLength:
Enabled: false
-
-Style/ClassMethods:
- Enabled: false
-
-Style/ClassVars:
- Enabled: false
-
-Style/WhenThen:
- Enabled: false
-
-# DISABLED - not useful
-Style/WordArray:
- Enabled: false
-
-Style/UnneededPercentQ:
- Enabled: false
-
-Style/Tab:
- Enabled: false
-
-Style/SpaceBeforeSemicolon:
- Enabled: false
-
-Style/TrailingBlankLines:
- Enabled: false
-
-Style/SpaceInsideBlockBraces:
- Enabled: false
-
-Style/SpaceInsideBrackets:
- Enabled: false
-
-Style/SpaceInsideHashLiteralBraces:
- Enabled: false
-
-Style/SpaceInsideParens:
- Enabled: false
-
-Style/LeadingCommentSpace:
- Enabled: false
-
-Style/SingleSpaceBeforeFirstArg:
- Enabled: false
-
-Style/SpaceAfterColon:
- Enabled: false
-
-Style/SpaceAfterComma:
- Enabled: false
-
-Style/SpaceAfterControlKeyword:
- Enabled: false
-
-Style/SpaceAfterMethodName:
- Enabled: false
-
-Style/SpaceAfterNot:
- Enabled: false
-
-Style/SpaceAfterSemicolon:
- Enabled: false
-
-Style/SpaceAroundEqualsInParameterDefault:
- Enabled: false
-
-Style/SpaceAroundOperators:
- Enabled: false
-
-Style/SpaceBeforeBlockBraces:
- Enabled: false
-
-Style/SpaceBeforeComma:
- Enabled: false
-
-Style/CollectionMethods:
- Enabled: false
-
-Style/CommentIndentation:
- Enabled: false
-
-Style/ColonMethodCall:
- Enabled: false
-
-Style/CommentAnnotation:
- Enabled: false
-
Metrics/CyclomaticComplexity:
Enabled: false
-
-Style/ConstantName:
- Enabled: false
-
-Style/Documentation:
- Enabled: false
-
-Style/DefWithParentheses:
- Enabled: false
-
-Style/DeprecatedHashMethods:
- Enabled: false
-
-Style/DotPosition:
- Enabled: false
-
-# DISABLED - used for converting to bool
-Style/DoubleNegation:
- Enabled: false
-
-Style/EachWithObject:
- Enabled: false
-
-Style/EmptyLineBetweenDefs:
- Enabled: false
-
-Style/IndentArray:
- Enabled: false
-
-Style/IndentHash:
- Enabled: false
-
-Style/IndentationConsistency:
- Enabled: false
-
-Style/IndentationWidth:
- Enabled: false
-
-Style/EmptyLines:
- Enabled: false
-
-Style/EmptyLinesAroundAccessModifier:
- Enabled: false
-
-Style/EmptyLiteral:
+Metrics/MethodLength:
Enabled: false
-
-Metrics/LineLength:
+Metrics/ModuleLength:
Enabled: false
-
-Style/MethodCallParentheses:
+Metrics/ParameterLists:
Enabled: false
-
-Style/MethodDefParentheses:
+Metrics/PerceivedComplexity:
Enabled: false
-
-Style/LineEndConcatenation:
+RSpec/DescribeClass:
Enabled: false
-
-Style/TrailingWhitespace:
+RSpec/ExampleLength:
Enabled: false
-
-Style/StringLiterals:
+RSpec/MessageExpectation:
Enabled: false
-
-Style/TrailingComma:
+RSpec/MultipleExpectations:
Enabled: false
-
-Style/GlobalVars:
+RSpec/NestedGroups:
Enabled: false
-
-Style/GuardClause:
+Style/AsciiComments:
Enabled: false
-
Style/IfUnlessModifier:
Enabled: false
-
-Style/MultilineIfThen:
- Enabled: false
-
-Style/NegatedIf:
- Enabled: false
-
-Style/NegatedWhile:
- Enabled: false
-
-Style/Next:
- Enabled: false
-
-Style/SingleLineBlockParams:
- Enabled: false
-
-Style/SingleLineMethods:
- Enabled: false
-
-Style/SpecialGlobalVars:
- Enabled: false
-
-Style/TrivialAccessors:
- Enabled: false
-
-Style/UnlessElse:
- Enabled: false
-
-Style/VariableInterpolation:
- Enabled: false
-
-Style/VariableName:
- Enabled: false
-
-Style/WhileUntilDo:
- Enabled: false
-
-Style/EvenOdd:
- Enabled: false
-
-Style/FileName:
- Enabled: false
-
-Style/For:
- Enabled: false
-
-Style/Lambda:
- Enabled: false
-
-Style/MethodName:
- Enabled: false
-
-Style/MultilineTernaryOperator:
- Enabled: false
-
-Style/NestedTernaryOperator:
- Enabled: false
-
-Style/NilComparison:
- Enabled: false
-
-Style/FormatString:
- Enabled: false
-
-Style/MultilineBlockChain:
- Enabled: false
-
-Style/Semicolon:
- Enabled: false
-
-Style/SignalException:
- Enabled: false
-
-Style/NonNilCheck:
- Enabled: false
-
-Style/Not:
- Enabled: false
-
-Style/NumericLiterals:
- Enabled: false
-
-Style/OneLineConditional:
- Enabled: false
-
-Style/OpMethod:
- Enabled: false
-
-Style/ParenthesesAroundCondition:
- Enabled: false
-
-Style/PercentLiteralDelimiters:
- Enabled: false
-
-Style/PerlBackrefs:
- Enabled: false
-
-Style/PredicateName:
- Enabled: false
-
-Style/RedundantException:
- Enabled: false
-
-Style/SelfAssignment:
- Enabled: false
-
-Style/Proc:
- Enabled: false
-
-Style/RaiseArgs:
- Enabled: false
-
-Style/RedundantBegin:
- Enabled: false
-
-Style/RescueModifier:
- Enabled: false
-
-Style/RegexpLiteral:
- Enabled: false
-
-Lint/UnderscorePrefixedVariableName:
- Enabled: false
-
-Metrics/ParameterLists:
- Enabled: false
-
-Lint/RequireParentheses:
- Enabled: false
-
-Lint/SpaceBeforeFirstArg:
- Enabled: false
-
-Style/ModuleFunction:
- Enabled: false
-
-Lint/Debugger:
- Enabled: false
-
-Style/IfWithSemicolon:
- Enabled: false
-
-Style/Encoding:
+Style/SymbolProc:
Enabled: false
diff --git a/.travis.yml b/.travis.yml
index 30b04c7..0f10309 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,20 +1,50 @@
---
-language: ruby
sudo: false
+dist: trusty
+language: ruby
cache: bundler
-notifications:
- email:
- on_failure: always
-branches:
- only:
- - master
-bundler_args: --without development system_tests
-before_install: rm Gemfile.lock || true
-script: bundle exec rake test
+before_install:
+ - bundle -v
+ - rm -f Gemfile.lock
+ - gem update --system
+ - gem update bundler
+ - gem --version
+ - bundle -v
+script:
+ - 'bundle exec rake $CHECK'
+bundler_args: --without system_tests
+rvm:
+ - 2.4.1
+env:
+ - PUPPET_GEM_VERSION="~> 5.0" CHECK=spec
matrix:
fast_finish: true
include:
- - rvm: 2.3.1
- env: PUPPET_GEM_VERSION="~> 4.0" STRICT_VARIABLES=yes
- - rvm: 2.4.1
- env: PUPPET_GEM_VERSION="~> 5.0" STRICT_VARIABLES=yes
+ -
+ env: CHECK=rubocop
+ -
+ env: CHECK="syntax lint"
+ -
+ env: CHECK=metadata_lint
+ -
+ env: CHECK=release_checks
+ -
+ env: CHECK=spec
+ -
+ env: PUPPET_GEM_VERSION="~> 4.0" CHECK=spec
+ rvm: 2.1.9
+branches:
+ only:
+ - master
+ - /^v\d/
+notifications:
+ email: false
+deploy:
+ provider: puppetforge
+ user: puppet
+ password:
+ secure: ""
+ on:
+ tags: true
+ all_branches: true
+ condition: "$DEPLOY_TO_FORGE = yes"
diff --git a/Gemfile b/Gemfile
index c9721aa..ce6db39 100644
--- a/Gemfile
+++ b/Gemfile
@@ -1,40 +1,79 @@
-source "https://rubygems.org"
-
-group :test do
- gem "rake"
- gem "puppet", ENV['PUPPET_GEM_VERSION'] || '~> 4.0'
- gem "rspec"
- gem "rspec-puppet"
- gem "puppetlabs_spec_helper"
- gem "metadata-json-lint"
- gem "rspec-puppet-facts"
- gem 'simplecov'
- gem 'coveralls'
- gem "parallel_tests"
-
- # Common puppet-lint plugins
- gem "puppet-lint-absolute_classname-check"
- gem "puppet-lint-leading_zero-check"
- gem "puppet-lint-trailing_comma-check"
- gem "puppet-lint-version_comparison-check"
- gem "puppet-lint-classes_and_types_beginning_with_digits-check"
- gem "puppet-lint-unquoted_string-check"
-
- gem "json_pure", '< 2.0.1'
-
- gem "puppet-blacksmith"
-
- # Changelog generation gems
- gem 'github_changelog_generator', '~> 1.13.0' if RUBY_VERSION < '2.2.2'
- gem 'github_changelog_generator' if RUBY_VERSION >= '2.2.2'
- gem 'rack', '~> 1.0' if RUBY_VERSION < '2.2.2'
+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
+
+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
+ else
+ :gem
+ end
end
+ruby_version_segments = Gem::Version.new(RUBY_VERSION.dup).segments
+minor_version = ruby_version_segments[0..1].join('.')
+
group :development do
+ gem "fast_gettext", '1.1.0', require: false if Gem::Version.new(RUBY_VERSION.dup) <
+ gem "fast_gettext", require: false if Gem::Version.new(RUBY_VERSION.dup) >
+ gem "json_pure", '<= 2.0.1', require: false if Gem::Version.new(RUBY_VERSION.dup) <
+ gem "json", '= 1.8.1', require: false if Gem::Version.new(RUBY_VERSION.dup) =
+ gem "json", '<= 2.0.4', require: false if Gem::Version.new(RUBY_VERSION.dup) =
+ gem "puppet-module-posix-default-r#{minor_version}", require: false, platforms: [:ruby]
+ gem "puppet-module-posix-dev-r#{minor_version}", require: false, platforms: [:ruby]
+ gem "puppet-module-win-default-r#{minor_version}", require: false, platforms: [:mswin, :mingw, :x64_mingw
+ gem "puppet-module-win-dev-r#{minor_version}", require: false, platforms: [:mswin, :mingw, :x64_mingw
+ gem "puppet-blacksmith", '~> 3.4', require: false, platforms: [:ruby]
+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']
+
+gems = {}
+
+gems['puppet'] = location_for(puppet_version)
+
+# If facter or hiera versions have been specified via the environment
+# variables
+
+gems['facter'] = location_for(facter_version) if facter_version
+gems['hiera'] = location_for(hiera_version) if hiera_version
+
+if Gem.win_platform? && puppet_version =~ %r{^(file:///|git://)}
+ # If we're using a Puppet gem on Windows which handles its own win32-xxx gem
+ # dependencies (>= 3.5.0), set the maximum versions (see PUP-6445).
+ gems['win32-dir'] = ['<= 0.4.9', require: false]
+ gems['win32-eventlog'] = ['<= 0.6.5', require: false]
+ gems['win32-process'] = ['<= 0.7.5', require: false]
+ gems['win32-security'] = ['<= 0.2.5', require: false]
+ gems['win32-service'] = ['0.8.8', require: false]
end
-group :system_tests do
- gem "beaker"
- gem "beaker-rspec"
- gem "beaker-puppet_install_helper"
+gems.each do |gem_name, gem_params|
+ gem gem_name, *gem_params
+end
+
+# Evaluate Gemfile.local and ~/.gemfile if they exist
+extra_gemfiles = [
+ "#{__FILE__}.local",
+ File.join(Dir.home, '.gemfile'),
+]
+
+extra_gemfiles.each do |gemfile|
+ if File.file?(gemfile) && File.readable?(gemfile)
+ eval(File.read(gemfile), binding)
+ end
end
+# vim: syntax=ruby
diff --git a/Rakefile b/Rakefile
index 218bdc9..fb58663 100644
--- a/Rakefile
+++ b/Rakefile
@@ -1,74 +1,5 @@
-require 'rubygems'
-require 'bundler/setup'
-
require 'puppetlabs_spec_helper/rake_tasks'
-require 'puppet/version'
-require 'puppet-lint/tasks/puppet-lint'
require 'puppet-syntax/tasks/puppet-syntax'
-require 'metadata-json-lint/rake_task'
-require 'parallel_tests'
-require 'parallel_tests/cli'
-require 'github_changelog_generator/task'
-
-# These gems aren't always present, for instance
-# on Travis with --without development
-begin
- require 'puppet_blacksmith/rake_tasks'
-rescue LoadError
-end
-
-exclude_paths = [
- "bundle/**/*",
- "pkg/**/*",
- "vendor/**/*",
- "spec/**/*",
-]
-
-Rake::Task[:lint].clear
-
-PuppetLint.configuration.relative = true
-PuppetLint.configuration.disable_arrow_alignment
-PuppetLint.configuration.disable_80chars
-PuppetLint.configuration.disable_class_inherits_from_params_class
-PuppetLint.configuration.disable_class_parameter_defaults
-PuppetLint.configuration.disable_documentation
-PuppetLint.configuration.disable_single_quote_string_with_variables
-PuppetLint.configuration.fail_on_warnings = true
-
-PuppetLint::RakeTask.new :lint do |config|
- config.ignore_paths = exclude_paths
-end
-
-PuppetSyntax.exclude_paths = exclude_paths
-
-desc "Run acceptance tests"
-RSpec::Core::RakeTask.new(:acceptance) do |t|
- t.pattern = 'spec/acceptance'
-end
-
-desc "Populate CONTRIBUTORS file"
-task :contributors do
- system("git log --format='%aN' | sort -u > CONTRIBUTORS")
-end
-
-desc "Parallel spec tests"
-task :parallel_spec do
- Rake::Task[:spec_prep].invoke
- ParallelTests::CLI.new.run('--type test -t rspec spec/classes spec/defines spec/unit spec/functions'.split)
- Rake::Task[:spec_clean].invoke
-end
-
-desc "Run syntax, lint, and spec tests."
-task :test => [
- :metadata_lint,
- :syntax,
- :lint,
- :spec,
-]
+require 'puppet_blacksmith/rake_tasks' if Bundler.rubygems.find_name('puppet-blacksmith').any?
-GitHubChangelogGenerator::RakeTask.new :changelog do |config|
- version = (Blacksmith::Modulefile.new).version
- config.future_release = "v#{version}"
- config.header = "# Change log\n\nAll notable changes to this project will be documented in this file.\nEach
- config.exclude_labels = %w{duplicate question invalid wontfix modulesync}
-end
+PuppetLint.configuration.send('relative')
diff --git a/metadata.json b/metadata.json
index 7730b90..381aff7 100644
--- a/metadata.json
+++ b/metadata.json
@@ -27,5 +27,8 @@
"name": "puppet",
"version_requirement": ">=4.0.0"
}
- ]
+ ],
+ "pdk-version": "1.5.0",
+ "template-url": "file:///opt/puppetlabs/pdk/share/cache/pdk-templates.git",
+ "template-ref": "1.5.0-0-gd1b3eca"
}
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 67a2559..e117192 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -1,20 +1,36 @@
+
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
+
include RspecPuppetFacts
-require 'simplecov'
-require 'coveralls'
+default_facts = {
+ puppetversion: Puppet.version,
+ 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'))
+
+if File.exist?(default_facts_path) && File.readable?(default_facts_path)
+ default_facts.merge!(YAML.safe_load(File.read(default_facts_path)))
+end
-SimpleCov.start do
- add_filter '/spec'
- add_filter '/vendor'
- formatter SimpleCov::Formatter::MultiFormatter::new([
- SimpleCov::Formatter::HTMLFormatter,
- Coveralls::SimpleCov::Formatter
- ])
+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)))
end
RSpec.configure do |c|
- c.hiera_config = File.expand_path(File.join(__FILE__, '../fixtures/hiera.yaml'))
+ c.default_facts = default_facts
+ c.before :each do
+ # set to strictest setting for testing
+ # by default Puppet runs at warning level
+ Puppet.settings[:strict] = :warning
+ end
end
(END)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment