Merge pull request #64 from branan/rakefile_clean
[puppet-modules/puppetlabs-apt.git] / Rakefile
1 require 'rake'
2 require 'rspec/core/rake_task'
3 require 'yaml'
4
5 task :default => [:spec]
6
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'
11 end
12
13 # This is a helper for the self-symlink entry of fixtures.yml
14 def source_dir
15   File.dirname(__FILE__)
16 end
17
18 def fixtures(category)
19   begin
20     fixtures = YAML.load_file(".fixtures.yml")["fixtures"]
21   rescue Errno::ENOENT
22     return {}
23   end
24
25   if not fixtures
26     abort("malformed fixtures.yml")
27   end
28
29   result = {}
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
35     end
36   end
37   return result
38 end
39
40 desc "Create the fixtures directory"
41 task :spec_prep do
42   fixtures("repositories").each do |repo, target|
43     File::exists?(target) || system("git clone #{repo} #{target}")
44   end
45
46   FileUtils::mkdir_p("spec/fixtures/modules")
47   fixtures("symlinks").each do |source, target|
48     File::exists?(target) || FileUtils::ln_s(source, target)
49   end
50 end
51
52 desc "Clean up the fixtures directory"
53 task :spec_clean do
54   fixtures("repositories").each do |repo, target|
55     FileUtils::rm_rf(target)
56   end
57
58   fixtures("symlinks").each do |source, target|
59     FileUtils::rm(target)
60   end
61 end
62
63 task :spec_full do
64   Rake::Task[:spec_prep].invoke
65   Rake::Task[:spec].invoke
66   Rake::Task[:spec_clean].invoke
67 end
68
69 desc "Build puppet module package"
70 task :build do
71   # This will be deprecated once puppet-module is a face.
72   begin
73     Gem::Specification.find_by_name('puppet-module')
74   rescue Gem::LoadError, NoMethodError
75     require 'puppet/face'
76     pmod = Puppet::Face['module', :current]
77     pmod.build('./')
78   end
79 end
80
81 desc "Clean a built module package"
82 task :clean do
83   FileUtils.rm_rf("pkg/")
84 end
85
86 desc "Check puppet manifests with puppet-lint"
87 task :lint do
88   # This requires pull request: https://github.com/rodjek/puppet-lint/pull/81
89   system("puppet-lint manifests")
90   system("puppet-lint tests")
91 end