2 require 'rspec/core/rake_task'
5 task :default => [:spec]
7 desc "Run all module spec tests (Requires rspec-puppet gem)"
8 RSpec::Core::RakeTask.new(:spec) do |t|
9 t.rspec_opts = ['--color']
10 t.pattern = 'spec/{classes,defines,unit}/**/*_spec.rb'
13 # This is a helper for the self-symlink entry of fixtures.yml
15 File.dirname(__FILE__)
18 def fixtures(category)
20 fixtures = YAML.load_file(".fixtures.yml")["fixtures"]
26 abort("malformed fixtures.yml")
30 if fixtures.include? category
31 fixtures[category].each do |fixture, source|
32 target = "spec/fixtures/modules/#{fixture}"
33 real_source = eval('"'+source+'"')
34 result[real_source] = target
40 desc "Create the fixtures directory"
42 fixtures("repositories").each do |repo, target|
43 File::exists?(target) || system("git clone #{repo} #{target}")
46 FileUtils::mkdir_p("spec/fixtures/modules")
47 fixtures("symlinks").each do |source, target|
48 File::exists?(target) || FileUtils::ln_s(source, target)
52 desc "Clean up the fixtures directory"
54 fixtures("repositories").each do |repo, target|
55 FileUtils::rm_rf(target)
58 fixtures("symlinks").each do |source, target|
64 Rake::Task[:spec_prep].invoke
65 Rake::Task[:spec].invoke
66 Rake::Task[:spec_clean].invoke
69 desc "Build puppet module package"
71 # This will be deprecated once puppet-module is a face.
73 Gem::Specification.find_by_name('puppet-module')
74 rescue Gem::LoadError, NoMethodError
76 pmod = Puppet::Face['module', :current]
81 desc "Clean a built module package"
83 FileUtils.rm_rf("pkg/")
86 desc "Check puppet manifests with puppet-lint"
88 # This requires pull request: https://github.com/rodjek/puppet-lint/pull/81
89 system("puppet-lint manifests")
90 system("puppet-lint tests")