From 2247df4f6e828d6791a46cb12d4e2df2e0b98dce Mon Sep 17 00:00:00 2001 From: Branan Purvine-Riley Date: Tue, 29 May 2012 13:55:26 -0700 Subject: Update for new gem version of puppetlabs_spec_helper This updates the Rakefile and spec_helper to use the common versions available in the puppetlabs_spec_helper rubygem branch. This mostly just removes a bunch of duplicated code, but it also gives us more flexibility in how the module is tested in the future. --- .gemfile | 5 ++ .travis.yml | 16 ++++ Rakefile | 18 +---- spec/lib/puppet_spec/files.rb | 53 ------------- spec/lib/puppet_spec/fixtures.rb | 28 ------- spec/lib/puppet_spec/matchers.rb | 87 ---------------------- spec/lib/puppet_spec/verbose.rb | 9 --- spec/spec_helper.rb | 26 +------ .../parser/functions/get_module_path_spec.rb | 4 +- 9 files changed, 26 insertions(+), 220 deletions(-) create mode 100644 .gemfile create mode 100644 .travis.yml delete mode 100755 spec/lib/puppet_spec/files.rb delete mode 100755 spec/lib/puppet_spec/fixtures.rb delete mode 100644 spec/lib/puppet_spec/matchers.rb delete mode 100755 spec/lib/puppet_spec/verbose.rb diff --git a/.gemfile b/.gemfile new file mode 100644 index 0000000..7e4ae1d --- /dev/null +++ b/.gemfile @@ -0,0 +1,5 @@ +source :rubygems + +puppetversion = ENV.key?('PUPPET_VERSION') ? "= #{ENV['PUPPET_VERSION']}" : ['>= 2.7'] +gem 'puppet', puppetversion +gem 'puppet_module_spec_helper', :git => 'git://github.com/branan/puppetlabs_spec_helper' diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..0ec5a08 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,16 @@ +language: ruby +rvm: + - 1.8.7 +before_script: +after_script: +script: "rake spec_full" +branches: + only: + - master +env: + - PUPPET_VERSION=2.7.13 + - PUPPET_VERSION=2.7.6 + - PUPPET_VERSION=2.6.9 +notifications: + email: false +gemfile: .gemfile diff --git a/Rakefile b/Rakefile index 01b2a31..277c8e2 100644 --- a/Rakefile +++ b/Rakefile @@ -1,16 +1,2 @@ -require 'rake' -require 'rspec/core/rake_task' - -task :default => [:test] - -desc 'Run RSpec' -RSpec::Core::RakeTask.new(:test) do |t| - t.pattern = 'spec/{unit}/**/*.rb' - t.rspec_opts = ['--color'] -end - -desc 'Generate code coverage' -RSpec::Core::RakeTask.new(:coverage) do |t| - t.rcov = true - t.rcov_opts = ['--exclude', 'spec'] -end +require 'rubygems' +require 'puppet_module_spec_helper/rake_tasks' diff --git a/spec/lib/puppet_spec/files.rb b/spec/lib/puppet_spec/files.rb deleted file mode 100755 index 30fb4fc..0000000 --- a/spec/lib/puppet_spec/files.rb +++ /dev/null @@ -1,53 +0,0 @@ -require 'fileutils' -require 'tempfile' - -# A support module for testing files. -module PuppetSpec::Files - # This code exists only to support tests that run as root, pretty much. - # Once they have finally been eliminated this can all go... --daniel 2011-04-08 - if Puppet.features.posix? then - def self.in_tmp(path) - path =~ /^\/tmp/ or path =~ /^\/var\/folders/ - end - elsif Puppet.features.microsoft_windows? - def self.in_tmp(path) - tempdir = File.expand_path(File.join(Dir::LOCAL_APPDATA, "Temp")) - path =~ /^#{tempdir}/ - end - else - fail "Help! Can't find in_tmp for this platform" - end - - def self.cleanup - $global_tempfiles ||= [] - while path = $global_tempfiles.pop do - fail "Not deleting tmpfile #{path} outside regular tmpdir" unless in_tmp(path) - - begin - FileUtils.rm_r path, :secure => true - rescue Errno::ENOENT - # nothing to do - end - end - end - - def tmpfile(name) - # Generate a temporary file, just for the name... - source = Tempfile.new(name) - path = source.path - source.close! - - # ...record it for cleanup, - $global_tempfiles ||= [] - $global_tempfiles << File.expand_path(path) - - # ...and bam. - path - end - - def tmpdir(name) - path = tmpfile(name) - FileUtils.mkdir_p(path) - path - end -end diff --git a/spec/lib/puppet_spec/fixtures.rb b/spec/lib/puppet_spec/fixtures.rb deleted file mode 100755 index 7f6bc2a..0000000 --- a/spec/lib/puppet_spec/fixtures.rb +++ /dev/null @@ -1,28 +0,0 @@ -module PuppetSpec::Fixtures - def fixtures(*rest) - File.join(PuppetSpec::FIXTURE_DIR, *rest) - end - def my_fixture_dir - callers = caller - while line = callers.shift do - next unless found = line.match(%r{/spec/(.*)_spec\.rb:}) - return fixtures(found[1]) - end - fail "sorry, I couldn't work out your path from the caller stack!" - end - def my_fixture(name) - file = File.join(my_fixture_dir, name) - unless File.readable? file then - fail Puppet::DevError, "fixture '#{name}' for #{my_fixture_dir} is not readable" - end - return file - end - def my_fixtures(glob = '*', flags = 0) - files = Dir.glob(File.join(my_fixture_dir, glob), flags) - unless files.length > 0 then - fail Puppet::DevError, "fixture '#{glob}' for #{my_fixture_dir} had no files!" - end - block_given? and files.each do |file| yield file end - files - end -end diff --git a/spec/lib/puppet_spec/matchers.rb b/spec/lib/puppet_spec/matchers.rb deleted file mode 100644 index 77f5803..0000000 --- a/spec/lib/puppet_spec/matchers.rb +++ /dev/null @@ -1,87 +0,0 @@ -require 'stringio' - -######################################################################## -# Backward compatibility for Jenkins outdated environment. -module RSpec - module Matchers - module BlockAliases - alias_method :to, :should unless method_defined? :to - alias_method :to_not, :should_not unless method_defined? :to_not - alias_method :not_to, :should_not unless method_defined? :not_to - end - end -end - - -######################################################################## -# Custom matchers... -RSpec::Matchers.define :have_matching_element do |expected| - match do |actual| - actual.any? { |item| item =~ expected } - end -end - - -RSpec::Matchers.define :exit_with do |expected| - actual = nil - match do |block| - begin - block.call - rescue SystemExit => e - actual = e.status - end - actual and actual == expected - end - failure_message_for_should do |block| - "expected exit with code #{expected} but " + - (actual.nil? ? " exit was not called" : "we exited with #{actual} instead") - end - failure_message_for_should_not do |block| - "expected that exit would not be called with #{expected}" - end - description do - "expect exit with #{expected}" - end -end - - -RSpec::Matchers.define :have_printed do |expected| - match do |block| - $stderr = $stdout = StringIO.new - - begin - block.call - ensure - $stdout.rewind - @actual = $stdout.read - - $stdout = STDOUT - $stderr = STDERR - end - - if @actual then - case expected - when String - @actual.include? expected - when Regexp - expected.match @actual - else - raise ArgumentError, "No idea how to match a #{@actual.class.name}" - end - end - end - - failure_message_for_should do |actual| - if actual.nil? then - "expected #{expected.inspect}, but nothing was printed" - else - "expected #{expected.inspect} to be printed; got:\n#{actual}" - end - end - - description do - "expect #{expected.inspect} to be printed" - end - - diffable -end diff --git a/spec/lib/puppet_spec/verbose.rb b/spec/lib/puppet_spec/verbose.rb deleted file mode 100755 index d9834f2..0000000 --- a/spec/lib/puppet_spec/verbose.rb +++ /dev/null @@ -1,9 +0,0 @@ -# Support code for running stuff with warnings disabled. -module Kernel - def with_verbose_disabled - verbose, $VERBOSE = $VERBOSE, nil - result = yield - $VERBOSE = verbose - return result - end -end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index f64fcba..0fd4a26 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,28 +1,4 @@ -dir = File.expand_path(File.dirname(__FILE__)) -$LOAD_PATH.unshift File.join(dir, 'lib') - -# Don't want puppet getting the command line arguments for rake or autotest -ARGV.clear - -require 'puppet' -require 'facter' -require 'mocha' -gem 'rspec', '>=2.0.0' -require 'rspec/expectations' - - -# So everyone else doesn't have to include this base constant. -module PuppetSpec - FIXTURE_DIR = File.join(dir = File.expand_path(File.dirname(__FILE__)), "fixtures") unless defined?(FIXTURE_DIR) -end - -# TODO: ultimately would like to move these requires into the puppet_spec_helper.rb file, but the namespaces -# are not currently the same between the two, so tests would need to be modified. Not ready to undertake that -# just yet. -require 'puppet_spec/files' - -require 'puppet_spec_helper' - +require 'puppet_module_spec_helper/puppet_spec_helper' RSpec.configure do |config| diff --git a/spec/unit/puppet/parser/functions/get_module_path_spec.rb b/spec/unit/puppet/parser/functions/get_module_path_spec.rb index d8340f4..e304502 100644 --- a/spec/unit/puppet/parser/functions/get_module_path_spec.rb +++ b/spec/unit/puppet/parser/functions/get_module_path_spec.rb @@ -3,7 +3,7 @@ require 'puppet' require 'fileutils' require 'spec_helper' describe Puppet::Parser::Functions.function(:get_module_path) do - include PuppetSpec::Files + include PuppetlabsSpec::Files def get_scope(environment = 'production') scope = Puppet::Parser::Scope.new @@ -30,7 +30,7 @@ describe Puppet::Parser::Functions.function(:get_module_path) do get_scope.function_get_module_path(['foo']).should == foo_path end it 'should be able to find module paths from the environment' do - conf_file = tmpfile('conffile') + conf_file = tmpfilename('conffile') File.open(conf_file, 'w') do |fh| fh.write("[dansenvironment]\nmodulepath = #{modulepath}") end -- cgit v1.2.3