3ac596100ef5920224e41f18a90fb89dfd62d04e
[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 = ['--color', '--format', 'specdoc']
7     if RCOV_ENABLED
8       t.rcov = true
9     else
10       t.rcov = false
11     end
12     t.rcov_opts = [
13       '--exclude', 'spec',
14       '--exclude', '1\\.8\\/gems',
15       '--exclude', '1\\.9\\/gems'
16     ]
17   end
18
19   Spec::Rake::SpecTask.new(:normal) do |t|
20     t.spec_files = FileList['spec/**/*_spec.rb']
21     t.spec_opts = ['--color', '--format', 'specdoc']
22     t.rcov = false
23   end
24
25   if RCOV_ENABLED
26     RCov::VerifyTask.new(:verify) do |t|
27       t.threshold = 100.0
28       t.index_html = 'coverage/index.html'
29     end
30
31     task :verify => :rcov
32   end
33
34   desc "Generate HTML Specdocs for all specs"
35   Spec::Rake::SpecTask.new(:specdoc) do |t|
36     specdoc_path = File.expand_path(
37       File.join(File.dirname(__FILE__), '../specdoc/'))
38     Dir.mkdir(specdoc_path) if !File.exist?(specdoc_path)
39
40     output_file = File.join(specdoc_path, 'index.html')
41     t.spec_files = FileList['spec/**/*_spec.rb']
42     t.spec_opts = ["--format", "\"html:#{output_file}\"", "--diff"]
43     t.fail_on_error = false
44   end
45
46   namespace :rcov do
47     desc "Browse the code coverage report."
48     task :browse => "spec:rcov" do
49       require "launchy"
50       Launchy::Browser.run("coverage/index.html")
51     end
52   end
53 end
54
55 if RCOV_ENABLED
56   desc "Alias to spec:verify"
57   task "spec" => "spec:verify"
58 else
59   desc "Alias to spec:normal"
60   task "spec" => "spec:normal"
61 end
62
63 task "clobber" => ["spec:clobber_rcov"]