forked from dchelimsky/rspec
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Rakefile
110 lines (95 loc) · 2.98 KB
/
Rakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
require 'bundler'
Bundler::GemHelper.install_tasks
$:.unshift 'lib'
require 'spec/version'
require 'spec/rake/spectask'
require 'spec/ruby'
# Some of the tasks are in separate files since they are also part of the website documentation
load 'resources/rake/examples.rake'
load 'resources/rake/examples_with_rcov.rake'
load 'resources/rake/failing_examples_with_html.rake'
load 'resources/rake/verify_rcov.rake'
task :cleanup_rcov_files do
rm_rf 'coverage.data'
end
if RUBY_VERSION =~ /^1.8/
task :default => [:cleanup_rcov_files, :features, :verify_rcov]
else
task :default => [:spec, :features]
end
desc "Run all specs"
Spec::Rake::SpecTask.new(:spec) do |t|
t.spec_files = FileList['spec/**/*_spec.rb']
t.spec_opts = ['--options', 'spec/spec.opts']
end
namespace :spec do
desc "Run all specs with rcov"
Spec::Rake::SpecTask.new(:rcov) do |t|
t.spec_files = FileList['spec/**/*_spec.rb']
t.spec_opts = ['--options', 'spec/spec.opts']
t.rcov = true
t.rcov_dir = 'coverage'
t.rcov_opts = ['--exclude', "features,kernel,load-diff-lcs\.rb,instance_exec\.rb,lib/spec.rb,lib/spec/runner.rb,^spec/*,bin/spec,examples,/gems,/Library/Ruby,\.autotest,#{ENV['GEM_HOME']}"]
t.rcov_opts << '--sort coverage --text-summary --aggregate coverage.data'
end
desc "Run files listed in spec/spec_files.txt"
Spec::Rake::SpecTask.new(:focus) do |t|
if File.exists?('spec/spec_files.txt')
t.spec_files = File.readlines('spec/spec_files.txt').collect{|f| f.chomp}
end
end
end
begin
require 'cucumber/rake/task'
desc "Run Cucumber features"
if RUBY_VERSION =~ /^1.8/
Cucumber::Rake::Task.new :features do |t|
t.rcov = true
t.rcov_opts = ['--exclude', "features,kernel,load-diff-lcs\.rb,instance_exec\.rb,lib/spec.rb,lib/spec/runner.rb,^spec/*,bin/spec,examples,/gems,/Library/Ruby,\.autotest,#{ENV['GEM_HOME']}"]
t.rcov_opts << '--no-html --aggregate coverage.data'
t.cucumber_opts = %w{--format progress}
end
else
task :features do
sh 'cucumber --profile no_heckle'
end
end
rescue LoadError
puts "You need cucumber installed to run cucumber tasks"
end
desc "Run failing examples (see failure output)"
Spec::Rake::SpecTask.new('failing_examples') do |t|
t.spec_files = FileList['failing_examples/**/*_spec.rb']
t.spec_opts = ['--options', 'spec/spec.opts']
end
def egrep(pattern)
Dir['**/*.rb'].each do |fn|
count = 0
open(fn) do |f|
while line = f.gets
count += 1
if line =~ pattern
puts "#{fn}:#{count}:#{line}"
end
end
end
end
end
desc "Look for TODO and FIXME tags in the code"
task :todo do
egrep /(FIXME|TODO|TBD)/
end
desc "Verifies that there is no uncommitted code"
task :verify_committed do
IO.popen('git status') do |io|
io.each_line do |line|
raise "\n!!! Do a git commit first !!!\n\n" if line =~ /^#\s*modified:/
end
end
end
task :clobber => :clobber_tmp
task :clobber_tmp do
cmd = %q[rm -r tmp]
puts cmd
system cmd if test ?d, 'tmp'
end