Merge pull request #2 from weppos/update-rspec
[arvados.git] / tasks / spec.rake
1 require 'rake/clean'
2 require 'rspec/core/rake_task'
3
4 CLOBBER.include('coverage', 'specdoc')
5
6 namespace :spec do
7   RSpec::Core::RakeTask.new(:all) do |t|
8   end
9
10   desc 'Generate HTML Specdocs for all specs.'
11   RSpec::Core::RakeTask.new(:specdoc) do |t|
12     specdoc_path = File.expand_path('../../specdoc', __FILE__)
13
14     t.rspec_opts = %W( --format html --out #{File.join(specdoc_path, 'index.html')} )
15     t.fail_on_error = false
16   end
17
18   RSpec::Core::RakeTask.new(:rcov) do |t|
19     if RCOV_ENABLED
20       if `which rcov`.strip == ""
21         STDERR.puts(
22             "Please install rcov and ensure that its binary is in the PATH:"
23         )
24         STDERR.puts("sudo gem install rcov")
25         exit(1)
26       end
27       t.rcov = true
28     else
29       t.rcov = false
30     end
31     t.rcov_opts = %w(
32         --exclude lib/google/api_client/environment.rb,
33                   lib/compat,
34                   spec,
35                   .rvm/gems,
36                   1.8/gems,
37                   1.9/gems,
38                   .rvm,
39                   /Library/Ruby
40     )
41   end
42
43   if RCOV_ENABLED
44     RCov::VerifyTask.new(:verify) do |t|
45       t.threshold = 65.0
46       t.index_html = 'coverage/index.html'
47     end
48
49     task :verify => :rcov
50   end
51
52   namespace :rcov do
53     desc 'Browse the code coverage report.'
54     task :browse => 'spec:rcov' do
55       require 'launchy'
56       Launchy::Browser.run('coverage/index.html')
57     end
58   end
59 end
60
61 if RCOV_ENABLED
62   desc 'Alias to spec:rcov'
63   task 'spec' => 'spec:rcov'
64 else
65   desc 'Alias to spec:all'
66   task 'spec' => 'spec:all'
67 end