/
Rakefile
165 lines (126 loc) · 4.19 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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
require 'rake/clean'
require 'rake/gempackagetask'
require 'hanna/rdoctask'
require 'rake/testtask'
require 'shoulda/tasks'
require 'rake/runtest'
require 'monkeyspecdoc' # http://jgre.org/2008/09/03/monkeyspecdoc/
require 'fileutils'
include FileUtils
task :default => :test
# TESTS ===============================================================
Rake::TestTask.new(:test_old) do |t|
require 'monkeyspecdoc'
test_files = FileList['test/**/*_test.rb'] || []
t.test_files = test_files
t.ruby_opts = ['-rubygems'] if defined? Gem
t.verbose = true
# t.warning = true
end
namespace :test do
#about 'Measures test coverage'
task :coverage do
rm_f "coverage"
rm_f "coverage.data"
rcov = "rcov -Itest --aggregate coverage.data -T -x ' rubygems/*,/Library/Ruby/Site/*,gems/*,rcov*'"
system("#{rcov} --html test/**/*_test.rb")
system("open coverage/index.html") if RUBY_PLATFORM['darwin']
end
task :list do
puts Dir.glob(File.join('test', '**', '*_test.rb'))
end
# Run individual test groups with:
# rake test:05
# rake test:60
# etc...
('00'..'99').each do |group|
task group.to_sym do
Rake.run_tests "test/#{group}*/*_test.rb"
end
# And also individual test files
# rake test:50:10
# etc...
('00'..'99').each do |test|
namespace group.to_sym do
task test.to_sym do
Rake.run_tests "test/#{group}*/{00,#{test}}*_test.rb"
end
end
end
end
end
task :test do
#all_tests = Dir.glob(File.join('test', '{05,20,50}*', '*_test.rb')) || []
#all_tests.sort.each do |file|
# load file
#end
Rake.run_tests 'test/**/*_test.rb'
end
# From: shoulda/tasks/list_tests.rake
namespace :shoulda do
#about "List the names of the test methods in a specification like format"
task :list_fixed do
$LOAD_PATH.unshift("test")
require 'test/unit'
require 'active_support'
# bug in test unit. Set to true to stop from running.
Test::Unit.run = true
test_files = Dir.glob(File.join('test', '**', '*_test.rb'))
test_files.each do |file|
load file
klass = File.basename(file, '.rb').classify
#unless Object.const_defined?(klass.to_s) # => raises: wrong constant name 00SetupTest
unless Object.constants.member?(klass.to_s) # fixed
puts "Skipping #{klass} because it doesn't map to a Class"
next
end
klass = klass.constantize
puts klass.name.gsub('Test', '')
test_methods = klass.instance_methods.grep(/^test/).map {|s| s.gsub(/^test: /, '')}.sort
test_methods.each {|m| puts " " + m }
end
end
end
# PACKAGE =============================================================
name = "rudy"
load "#{name}.gemspec"
version = @spec.version
Rake::GemPackageTask.new(@spec) do |p|
p.need_tar = true if RUBY_PLATFORM !~ /mswin/
end
task :release => [ "publish:gem", :clean, "publish:rdoc" ] do
$: << File.join(File.dirname(__FILE__), 'lib')
require "rudy"
abort if Drydock.debug?
end
task :install => [ :rdoc, :package ] do
sh %{sudo gem install pkg/#{name}-#{version}.gem}
end
task :uninstall => [ :clean ] do
sh %{sudo gem uninstall #{name}}
end
# Rubyforge Release / Publish Tasks ==================================
#about 'Publish website to rubyforge'
task 'publish:rdoc' => 'doc/index.html' do
sh "scp -rp doc/* rubyforge.org:/var/www/gforge-projects/#{name}/"
end
#about 'Public release to rubyforge'
task 'publish:gem' => [:package] do |t|
sh <<-end
rubyforge add_release -o Any -a CHANGES.txt -f -n README.rdoc #{name} #{name} #{@spec.version} pkg/#{name}-#{@spec.version}.gem &&
rubyforge add_file -o Any -a CHANGES.txt -f -n README.rdoc #{name} #{name} #{@spec.version} pkg/#{name}-#{@spec.version}.tgz
end
end
Rake::RDocTask.new do |t|
t.rdoc_dir = 'doc'
t.title = @spec.summary
t.options << '--line-numbers' << '-A cattr_accessor=object'
t.options << '--charset' << 'utf-8'
t.rdoc_files.include('LICENSE.txt')
t.rdoc_files.include('README.rdoc')
t.rdoc_files.include('CHANGES.txt')
#t.rdoc_files.include('Rudyfile') # why is the formatting f'd?
t.rdoc_files.include('bin/*')
t.rdoc_files.include('lib/**/*.rb')
end
CLEAN.include [ 'pkg', '*.gem', '.config', 'doc', 'coverage*' ]