diff --git a/.gemfile b/.gemfile index e4be447..9aad840 100644 --- a/.gemfile +++ b/.gemfile @@ -1,12 +1,5 @@ source :rubygems puppetversion = ENV.key?('PUPPET_VERSION') ? "= #{ENV['PUPPET_VERSION']}" : ['>= 2.7'] - gem 'puppet', puppetversion - -group :test do - gem 'rake', '>= 0.9.0' - gem 'rspec', '>= 2.8.0' - gem 'rspec-puppet', '>= 0.1.1' - gem 'mocha', '>= 0.11.0' -end +gem 'puppetlabs_spec_helper', '>= 0.1.0' diff --git a/.travis.yml b/.travis.yml index 9b65a73..066317e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,7 +4,7 @@ rvm: before_script: - "[ '2.6.9' = $PUPPET_VERSION ] && git clone git://github.com/puppetlabs/puppetlabs-create_resources.git spec/fixtures/modules/create_resources || true" after_script: -script: "rake spec_full" +script: "rake spec" branches: only: - master diff --git a/Rakefile b/Rakefile index ab25667..cd3d379 100644 --- a/Rakefile +++ b/Rakefile @@ -1,91 +1 @@ -require 'rake' -require 'rspec/core/rake_task' -require 'yaml' - -task :default => [:spec] - -desc "Run all module spec tests (Requires rspec-puppet gem)" -RSpec::Core::RakeTask.new(:spec) do |t| - t.rspec_opts = ['--color'] - t.pattern = 'spec/{classes,defines,unit}/**/*_spec.rb' -end - -# This is a helper for the self-symlink entry of fixtures.yml -def source_dir - File.dirname(__FILE__) -end - -def fixtures(category) - begin - fixtures = YAML.load_file(".fixtures.yml")["fixtures"] - rescue Errno::ENOENT - return {} - end - - if not fixtures - abort("malformed fixtures.yml") - end - - result = {} - if fixtures.include? category - fixtures[category].each do |fixture, source| - target = "spec/fixtures/modules/#{fixture}" - real_source = eval('"'+source+'"') - result[real_source] = target - end - end - return result -end - -desc "Create the fixtures directory" -task :spec_prep do - fixtures("repositories").each do |repo, target| - File::exists?(target) || system("git clone #{repo} #{target}") - end - - FileUtils::mkdir_p("spec/fixtures/modules") - fixtures("symlinks").each do |source, target| - File::exists?(target) || FileUtils::ln_s(source, target) - end -end - -desc "Clean up the fixtures directory" -task :spec_clean do - fixtures("repositories").each do |repo, target| - FileUtils::rm_rf(target) - end - - fixtures("symlinks").each do |source, target| - FileUtils::rm(target) - end -end - -task :spec_full do - Rake::Task[:spec_prep].invoke - Rake::Task[:spec].invoke - Rake::Task[:spec_clean].invoke -end - -desc "Build puppet module package" -task :build do - # This will be deprecated once puppet-module is a face. - begin - Gem::Specification.find_by_name('puppet-module') - rescue Gem::LoadError, NoMethodError - require 'puppet/face' - pmod = Puppet::Face['module', :current] - pmod.build('./') - end -end - -desc "Clean a built module package" -task :clean do - FileUtils.rm_rf("pkg/") -end - -desc "Check puppet manifests with puppet-lint" -task :lint do - # This requires pull request: https://github.com/rodjek/puppet-lint/pull/81 - system("puppet-lint manifests") - system("puppet-lint tests") -end +require 'puppetlabs_spec_helper/rake_tasks' diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 660e218..2c6f566 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,18 +1 @@ -require 'rubygems' -require 'puppet' -require 'rspec-puppet' - -def param_value(subject, type, title, param) - subject.resource(type, title).send(:parameters)[param.to_sym] -end - -Puppet.parse_config -puppet_module_path = Puppet[:modulepath] - -fixture_path = File.expand_path(File.join(File.dirname(__FILE__), 'fixtures')) - -RSpec.configure do |c| - fixture_module_path = File.join(fixture_path, 'modules') - c.module_path = [fixture_module_path, puppet_module_path].join(":") - c.manifest_dir = File.join(fixture_path, 'manifests') -end +require 'puppetlabs_spec_helper/module_spec_helper'