RSpec had a new major release. We're not ready to upgrade yet.
[arvados.git] / tasks / spec.rake
1 require 'spec/rake/verify_rcov'
2
3 namespace :spec do
4   Spec::Rake::SpecTask.new(:rcov) do |t|
5     t.spec_files = FileList['spec/**/*_spec.rb']
6     t.spec_opts = ['--require', 'rubygems', '--color', '--format', 'specdoc']
7     if RCOV_ENABLED
8       if `which rcov`.strip == ""
9         STDERR.puts "Please install rcov:"
10         STDERR.puts "sudo gem install relevance-rcov"
11         exit(1)
12       end
13       t.rcov = true
14     else
15       t.rcov = false
16     end
17     t.rcov_opts = [
18       '--exclude', 'spec',
19       '--exclude', '1\\.8\\/gems',
20       '--exclude', '1\\.9\\/gems'
21     ]
22   end
23
24   Spec::Rake::SpecTask.new(:all) do |t|
25     t.spec_files = FileList['spec/**/*_spec.rb']
26     t.spec_opts = ['--require', 'rubygems', '--color', '--format', 'specdoc']
27     t.rcov = false
28   end
29
30   Spec::Rake::SpecTask.new(:fast) do |t|
31     t.spec_files = FileList['spec/**/*_spec.rb'].exclude(
32       'spec/**/*_slow_spec.rb'
33     )
34     t.spec_opts = ['--require', 'rubygems', '--color', '--format', 'specdoc']
35     t.rcov = false
36   end
37
38   if RCOV_ENABLED
39     RCov::VerifyTask.new(:verify) do |t|
40       t.threshold = 100.0
41       t.index_html = 'coverage/index.html'
42     end
43
44     task :verify => :rcov
45   end
46
47   desc 'Generate HTML Specdocs for all specs'
48   Spec::Rake::SpecTask.new(:specdoc) do |t|
49     specdoc_path = File.expand_path(
50       File.join(File.dirname(__FILE__), '../specdoc/'))
51     Dir.mkdir(specdoc_path) if !File.exist?(specdoc_path)
52
53     output_file = File.join(specdoc_path, 'index.html')
54     t.spec_files = FileList['spec/**/*_spec.rb']
55     t.spec_opts = ['--format', "\"html:#{output_file}\"", '--diff']
56     t.fail_on_error = false
57   end
58
59   namespace :rcov do
60     desc 'Browse the code coverage report.'
61     task :browse => 'spec:rcov' do
62       require 'launchy'
63       Launchy::Browser.run('coverage/index.html')
64     end
65   end
66 end
67
68 if RCOV_ENABLED
69   desc 'Alias to spec:verify'
70   task 'spec' => 'spec:verify'
71 else
72   desc 'Alias to spec:all'
73   task 'spec' => 'spec:all'
74 end
75
76 task 'clobber' => ['spec:clobber_rcov']