mathml 0.8.1 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Rakefile +47 -103
- data/Rakefile.utirake +374 -0
- data/lib/math_ml.rb +9 -1875
- data/lib/math_ml/element.rb +227 -0
- data/lib/math_ml/latex.rb +1105 -0
- data/lib/math_ml/latex/builtin.rb +5 -0
- data/lib/math_ml/latex/builtin/symbol.rb +549 -0
- data/lib/math_ml/symbol/character_reference.rb +2107 -0
- data/lib/math_ml/symbol/entity_reference.rb +2106 -0
- data/lib/math_ml/symbol/utf8.rb +2108 -0
- data/spec/math_ml/element_spec.rb +32 -0
- data/spec/math_ml/latex/macro_spec.rb +122 -0
- data/spec/math_ml/latex/parser_spec.rb +578 -0
- data/spec/math_ml/latex/scanner_spec.rb +202 -0
- data/spec/math_ml/string_spec.rb +29 -0
- data/spec/math_ml/util_spec.rb +700 -0
- data/spec/math_ml_spec.rb +14 -0
- data/spec/util.rb +38 -0
- metadata +61 -44
- data/README +0 -58
- data/symbols/fetch_symbol.rb +0 -446
- data/symbols/fetch_symbol_test.rb +0 -180
- data/symbols/list.txt +0 -518
- data/test/math_ml_test.rb +0 -794
- data/test/math_ml_test_util.rb +0 -48
- data/test/math_ml_test_util_test.rb +0 -22
- data/test/string_test.rb +0 -36
- data/test/util_test.rb +0 -694
data/Rakefile
CHANGED
@@ -1,121 +1,65 @@
|
|
1
|
-
|
2
|
-
require "rake/testtask"
|
3
|
-
require "rake/rdoctask"
|
4
|
-
require "rake/gempackagetask"
|
1
|
+
load "Rakefile.utirake"
|
5
2
|
|
6
|
-
|
7
|
-
CLOBBER.include("eim_xml")
|
3
|
+
VER = "0.10.1"
|
8
4
|
|
9
|
-
|
5
|
+
UtiRake.setup do
|
6
|
+
external("https://hg.hinet.mydns.jp", %w[eim_xml])
|
10
7
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
RDOC_OPTS << "-d" if ENV["DOT"]
|
16
|
-
RDOC_FILES = FileList["lib/**/*.rb"]
|
17
|
-
RDOC_EXTRAS = FileList["README"]
|
18
|
-
["", "ja", "en"].each do |l|
|
19
|
-
dir = RDOC_DIR.dup
|
20
|
-
dir << "#{l}/" unless l.empty?
|
21
|
-
Rake::RDocTask.new("rdoc#{":"+l unless l.empty?}") do |rdoc|
|
22
|
-
rdoc.title = "MathML Library"
|
23
|
-
rdoc.options = RDOC_OPTS.dup
|
24
|
-
rdoc.options << "-l" << l unless l.empty?
|
25
|
-
rdoc.rdoc_dir = dir
|
26
|
-
rdoc.rdoc_files.include(RDOC_FILES, RDOC_EXTRAS)
|
8
|
+
rdoc do |t|
|
9
|
+
t.title = "MathML Library"
|
10
|
+
t.main = "README"
|
11
|
+
t.rdoc_files << FileList["lib/**/*.rb", "README"]
|
27
12
|
end
|
28
|
-
end
|
29
|
-
task "rdoc:all" => ["rdoc", "rdoc:ja", "rdoc:en"]
|
30
|
-
task "rerdoc:all" => ["rerdoc", "rerdoc:ja", "rerdoc:en"]
|
31
|
-
|
32
|
-
|
33
|
-
### Publish document ###
|
34
|
-
task :publish => [:clobber_rdoc, "rdoc:ja", "rdoc:en"] do
|
35
|
-
require "rake/contrib/rubyforgepublisher"
|
36
|
-
cp "index.html", "html/index.html"
|
37
|
-
Rake::RubyForgePublisher.new("mathml", "hiraku").upload
|
38
|
-
end
|
39
13
|
|
40
|
-
|
41
|
-
|
42
|
-
EIMXML_DIR = "./eim_xml"
|
43
|
-
file EIMXML_DIR do |t|
|
44
|
-
sh "hg clone https://hg.hinet.mydns.jp/eim_xml #{t.name}"
|
45
|
-
end
|
46
|
-
task :eim_xml => EIMXML_DIR
|
47
|
-
|
48
|
-
|
49
|
-
### Test ###
|
50
|
-
task :test => "test:apart"
|
51
|
-
namespace :test do
|
52
|
-
def add_libs_for_test(t)
|
53
|
-
t.libs << "test" << "eim_xml/lib" << "../eim_xml/lib"
|
54
|
-
end
|
55
|
-
FileList["test/*_test.rb"].sort{|a,b| File.mtime(a)<=>File.mtime(b)}.reverse.each do |i|
|
56
|
-
Rake::TestTask.new(:apart) do |t|
|
57
|
-
t.test_files = [i]
|
58
|
-
add_libs_for_test(t)
|
59
|
-
end
|
14
|
+
publish("mathml", "hiraku") do
|
15
|
+
cp "index.html", "html/index.html"
|
60
16
|
end
|
61
|
-
task(:apart).comment = "Run tests separately"
|
62
17
|
|
63
|
-
|
64
|
-
|
65
|
-
|
18
|
+
gemspec do |s|
|
19
|
+
s.name = "mathml"
|
20
|
+
s.rubyforge_project = "mathml"
|
21
|
+
s.version = VER
|
22
|
+
s.summary = "MathML Library"
|
23
|
+
s.author = "KURODA Hiraku"
|
24
|
+
s.email = "hiraku@hinet.mydns.jp"
|
25
|
+
s.homepage = "http://mathml.rubyforge.org/"
|
26
|
+
s.add_dependency("eimxml")
|
27
|
+
s.post_install_message = "*"*60 << "\n" << <<EOT << "*"*60
|
28
|
+
[DEPRECATION]
|
29
|
+
"mathml" gem is deprecated.
|
30
|
+
Please use "math_ml" gem instead.
|
31
|
+
EOT
|
66
32
|
end
|
67
|
-
task(:lump).comment = "Run all tests in a lump"
|
68
33
|
|
69
|
-
|
70
|
-
|
71
|
-
|
34
|
+
rcov_spec do |s|
|
35
|
+
s.ruby_opts = %w[-rubygems]
|
36
|
+
s.pattern ||= %w[spec/util.rb spec/**/*_spec.rb]
|
37
|
+
s.pattern = [s.pattern] unless s.pattern.is_a?(Array)
|
38
|
+
# s.pattern << "symbols/**/*_spec.rb"
|
72
39
|
end
|
73
|
-
end
|
74
|
-
|
75
40
|
|
76
|
-
|
77
|
-
|
78
|
-
directory GEM_DIR
|
79
|
-
def build_gem(unstable=false)
|
80
|
-
spec = Gem::Specification.new do |spec|
|
81
|
-
spec.name = "mathml"
|
82
|
-
spec.rubyforge_project = "mathml"
|
83
|
-
spec.version = ENV["VER"] or raise "Need VER=x.y.z(.?)"
|
84
|
-
spec.summary = "MathML Library"
|
85
|
-
spec.author = "KURODA Hiraku"
|
86
|
-
spec.email = "hiraku@hinet.mydns.jp"
|
87
|
-
spec.homepage = "http://mathml.rubyforge.org/"
|
88
|
-
spec.add_dependency("eimxml")
|
89
|
-
spec.files = FILES
|
90
|
-
spec.test_files = Dir.glob("test/*.rb")
|
91
|
-
spec.has_rdoc = true
|
92
|
-
spec.rdoc_options = RDOC_OPTS.dup
|
93
|
-
spec.extra_rdoc_files = RDOC_EXTRAS
|
41
|
+
spec do |s|
|
42
|
+
# s.spec_opts << "-b"
|
94
43
|
end
|
95
|
-
|
96
|
-
spec.version = spec.version.to_s << Time.now.strftime(".%Y.%m%d.%H%M") if unstable
|
97
|
-
b = Gem::Builder.new(spec)
|
98
|
-
gname = b.build
|
99
|
-
mv gname, "#{GEM_DIR}/"
|
100
|
-
end
|
101
|
-
|
102
|
-
desc "Build gem package"
|
103
|
-
task :gem => GEM_DIR do
|
104
|
-
build_gem
|
44
|
+
alias_task
|
105
45
|
end
|
106
46
|
|
107
|
-
|
108
|
-
|
109
|
-
|
47
|
+
namespace :spec do
|
48
|
+
RSpec::Core::RakeTask.new(:symbols) do |s|
|
49
|
+
s.pattern = "./symbols/**/*_spec.rb"
|
50
|
+
s.rspec_opts = %w[-c -I lib -I external/lib]
|
51
|
+
end
|
110
52
|
end
|
111
53
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
54
|
+
task :package do
|
55
|
+
name = "math_ml-#{VER}"
|
56
|
+
cp "external/eim_xml/lib/eim_xml.rb", "pkg/#{name}/lib/"
|
57
|
+
Dir.chdir "pkg" do
|
58
|
+
rm "#{name}.tar.gz"
|
59
|
+
sh "tar zcf #{name}.tar.gz #{name}/"
|
60
|
+
end
|
117
61
|
end
|
118
62
|
|
119
|
-
|
120
|
-
|
121
|
-
|
63
|
+
task :default => :spec
|
64
|
+
task "spec:no_here" => "spec:apart"
|
65
|
+
task :all => [:spec, "spec:symbols"]
|
data/Rakefile.utirake
ADDED
@@ -0,0 +1,374 @@
|
|
1
|
+
# Utility for Rake
|
2
|
+
#
|
3
|
+
# Copyright (C) 2008, KURODA Hiraku <hiraku@hinet.mydns.jp>
|
4
|
+
# You can redistribute it and/or modify it under GPL3.
|
5
|
+
|
6
|
+
require "rake/clean"
|
7
|
+
require "rake/testtask"
|
8
|
+
require "rdoc/task"
|
9
|
+
require "rake/contrib/rubyforgepublisher"
|
10
|
+
require "rubygems/package_task"
|
11
|
+
|
12
|
+
class UtiRake
|
13
|
+
include Rake::DSL
|
14
|
+
|
15
|
+
def self.setup(opt={}, &proc)
|
16
|
+
ur = new
|
17
|
+
ur.setup(opt, &proc)
|
18
|
+
rescue
|
19
|
+
puts $!.class, $!.message, $!.backtrace
|
20
|
+
end
|
21
|
+
|
22
|
+
attr_reader :opt, :spec_proc, :cucumber_proc, :rdoc_proc, :gemspec_proc, :package_proc, :rcov_spec_proc
|
23
|
+
|
24
|
+
def setup(opt={}, &proc)
|
25
|
+
@opt = opt
|
26
|
+
directory "external"
|
27
|
+
CLEAN << "coverage" << "coverage.spec" << "coverage.cuke" << "doc"
|
28
|
+
CLOBBER << "external"
|
29
|
+
|
30
|
+
instance_eval(&proc) if proc
|
31
|
+
|
32
|
+
if need_spec?
|
33
|
+
begin
|
34
|
+
@rspec2_flg = false
|
35
|
+
require "rspec/core/rake_task"
|
36
|
+
@rspec2_flg = true
|
37
|
+
rescue LoadError
|
38
|
+
require "spec/rake/spectask"
|
39
|
+
end
|
40
|
+
define_spec_task
|
41
|
+
end
|
42
|
+
|
43
|
+
if need_cucumber?
|
44
|
+
require "cucumber/rake/task"
|
45
|
+
define_cucumber_task
|
46
|
+
end
|
47
|
+
|
48
|
+
define_rdoc_task
|
49
|
+
define_rcov_task
|
50
|
+
define_package_task
|
51
|
+
define_here_dependency
|
52
|
+
define_alias_task if @alias_task
|
53
|
+
end
|
54
|
+
|
55
|
+
def rspec2?; @rspec2_flg; end
|
56
|
+
|
57
|
+
def spec_task
|
58
|
+
rspec2? ? RSpec::Core::RakeTask : Spec::Rake::SpecTask
|
59
|
+
end
|
60
|
+
|
61
|
+
def need_spec?
|
62
|
+
File.directory?("spec")
|
63
|
+
end
|
64
|
+
|
65
|
+
def need_cucumber?
|
66
|
+
File.directory?("features")
|
67
|
+
end
|
68
|
+
|
69
|
+
def spec(&proc)
|
70
|
+
@spec_proc = proc
|
71
|
+
end
|
72
|
+
|
73
|
+
def cucumber(&proc)
|
74
|
+
@cucumber_proc = proc
|
75
|
+
end
|
76
|
+
|
77
|
+
def rdoc(&proc)
|
78
|
+
@rdoc_proc = proc
|
79
|
+
end
|
80
|
+
|
81
|
+
def gemspec(&proc)
|
82
|
+
@gemspec_proc = proc
|
83
|
+
end
|
84
|
+
|
85
|
+
def rcov_spec(&proc)
|
86
|
+
@rcov_spec_proc = proc
|
87
|
+
end
|
88
|
+
|
89
|
+
def package(&proc)
|
90
|
+
@package_proc = proc
|
91
|
+
end
|
92
|
+
|
93
|
+
def no_here(task)
|
94
|
+
@no_here_task = task
|
95
|
+
end
|
96
|
+
|
97
|
+
def no_here_task
|
98
|
+
@no_here_task || "spec:lump"
|
99
|
+
end
|
100
|
+
|
101
|
+
def alias_task
|
102
|
+
@alias_task = true
|
103
|
+
end
|
104
|
+
|
105
|
+
def hg(cmd)
|
106
|
+
sh "hg #{cmd.to_s}"
|
107
|
+
end
|
108
|
+
|
109
|
+
def external(base_url, *libs)
|
110
|
+
libs = libs.first if libs.first.is_a?(Array)
|
111
|
+
namespace :external do
|
112
|
+
directory "external/lib"
|
113
|
+
libs.each do |lib|
|
114
|
+
libdir = "external/#{lib}"
|
115
|
+
file libdir => "external/lib" do
|
116
|
+
if File.exist?("../#{lib}")
|
117
|
+
Dir.chdir("external") do
|
118
|
+
ln_s "../../#{lib}", "./", :force=>true
|
119
|
+
end
|
120
|
+
end
|
121
|
+
hg "clone #{File.join(base_url, lib)} #{libdir}" unless File.exist?(libdir)
|
122
|
+
Dir["#{libdir}/lib/*"].each do |f|
|
123
|
+
base = File.basename(f)
|
124
|
+
cd "external/lib" do
|
125
|
+
ln_s "../#{lib}/lib/#{base}", "./"
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
if File.exist?(libdir)
|
131
|
+
Dir["#{libdir}/lib/*"].each do |f|
|
132
|
+
base = File.basename(f)
|
133
|
+
file "external/lib/#{base}" => "external/lib" do
|
134
|
+
cd "external/lib" do
|
135
|
+
ln_s "../#{lib}/lib/#{base}", "./"
|
136
|
+
end
|
137
|
+
end
|
138
|
+
task :setup => "external/lib/#{base}"
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
desc "Setup external libraries"
|
143
|
+
task :setup=>libdir
|
144
|
+
end
|
145
|
+
|
146
|
+
task :rake => :setup do
|
147
|
+
libs.each do |lib|
|
148
|
+
Dir.chdir "external/#{lib}" do
|
149
|
+
sh "rake"
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
153
|
+
end
|
154
|
+
@external = true
|
155
|
+
end
|
156
|
+
|
157
|
+
def external?; @external; end
|
158
|
+
|
159
|
+
def define_rdoc_task
|
160
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
161
|
+
rdoc.options << "-S"
|
162
|
+
rdoc.options << "-w" << "3"
|
163
|
+
rdoc.options << "-c" << "UTF-8"
|
164
|
+
rdoc.rdoc_files.include("lib/**/*.rb")
|
165
|
+
rdoc_proc.call(rdoc) if rdoc_proc
|
166
|
+
end
|
167
|
+
task :doc do
|
168
|
+
remove_entry_secure "doc" if File.directory?("doc")
|
169
|
+
sh "rdoc -S -w 3 -c UTF-8 -d -x external"
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
def define_package_task
|
174
|
+
spec = Gem::Specification.new do |s|
|
175
|
+
s.platform = Gem::Platform::RUBY
|
176
|
+
s.files = FileList["Rakefile*", "lib/**/*", "spec/**/*"]
|
177
|
+
s.version = "0.0.0.noversion"
|
178
|
+
gemspec_proc.call(s) if gemspec_proc
|
179
|
+
end
|
180
|
+
|
181
|
+
gem = Gem::PackageTask.new(spec) do |t|
|
182
|
+
t.need_tar_gz = true
|
183
|
+
package_proc.call(t) if package_proc
|
184
|
+
end
|
185
|
+
|
186
|
+
task "utirake:copy_for_package" do
|
187
|
+
mv "Rakefile.utirake", "Rakefile.utirake_#{$$}"
|
188
|
+
cp "external/utirake/utirake.rb", "Rakefile.utirake"
|
189
|
+
end
|
190
|
+
|
191
|
+
file gem.package_dir_path => "utirake:copy_for_package"
|
192
|
+
|
193
|
+
task :gem do
|
194
|
+
rm "Rakefile.utirake"
|
195
|
+
mv "Rakefile.utirake_#{$$}", "Rakefile.utirake"
|
196
|
+
end
|
197
|
+
end
|
198
|
+
|
199
|
+
def publish(project_name, user_id)
|
200
|
+
task :publish => "rdoc" do
|
201
|
+
yield if block_given?
|
202
|
+
Rake::RubyForgePublisher.new(project_name, user_id).upload
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
206
|
+
FILE_SORT = lambda{|a, b| File.mtime(a)<=>File.mtime(b)}
|
207
|
+
|
208
|
+
def spec_files
|
209
|
+
@spec_files ||= FileList["./spec/**/*_spec.rb"].sort(&FILE_SORT).reverse
|
210
|
+
end
|
211
|
+
|
212
|
+
def set_spec_opts(spec)
|
213
|
+
spec.verbose = false
|
214
|
+
if rspec2?
|
215
|
+
spec.rspec_opts ||= []
|
216
|
+
spec.rspec_opts << "-c"
|
217
|
+
spec.rspec_opts << "-I" << "." << "-I" << "./lib" << "-I" << "./external/lib"
|
218
|
+
else
|
219
|
+
spec.spec_opts << "-c"
|
220
|
+
spec.libs << "." << "./lib" << "./external/lib"
|
221
|
+
end
|
222
|
+
end
|
223
|
+
|
224
|
+
def define_spec_task
|
225
|
+
task :spec => "spec:apart"
|
226
|
+
namespace :spec do
|
227
|
+
spec_files.each do |f|
|
228
|
+
desc ""
|
229
|
+
spec_task.new(:apart) do |s|
|
230
|
+
if rspec2?
|
231
|
+
s.pattern = f
|
232
|
+
else
|
233
|
+
s.spec_files = FileList[f]
|
234
|
+
end
|
235
|
+
set_spec_opts(s)
|
236
|
+
spec_proc.call(s) if spec_proc
|
237
|
+
end
|
238
|
+
end
|
239
|
+
task(:apart).comment = "Run all specs separately"
|
240
|
+
|
241
|
+
desc "Run all specs in a lump"
|
242
|
+
spec_task.new(:lump) do |s|
|
243
|
+
s.spec_files = spec_files unless rspec2?
|
244
|
+
set_spec_opts(s)
|
245
|
+
spec_proc.call(s) if spec_proc
|
246
|
+
end
|
247
|
+
|
248
|
+
desc "Run all specs to profile"
|
249
|
+
spec_task.new(:profile) do |s|
|
250
|
+
set_spec_opts(s)
|
251
|
+
if rspec2?
|
252
|
+
s.rspec_opts << "-p"
|
253
|
+
else
|
254
|
+
s.spec_opts << "-f" << "profile"
|
255
|
+
end
|
256
|
+
end
|
257
|
+
|
258
|
+
`grep -sRn '#[[:space:]]*here\\([[:space:]]\\|$\\)' --include='*.rb' spec`.split(/\n/).map{|l|
|
259
|
+
next nil unless l=~/\A(.*?):(\d+):/
|
260
|
+
[$1, $2.to_i]
|
261
|
+
}.compact.sort{|a, b| FILE_SORT.call(a[0], b[0])}.reverse.each do |file, line|
|
262
|
+
desc ""
|
263
|
+
spec_task.new(:here) do |s|
|
264
|
+
set_spec_opts(s)
|
265
|
+
if rspec2?
|
266
|
+
s.pattern = file
|
267
|
+
s.rspec_opts << "-l#{line}"
|
268
|
+
else
|
269
|
+
s.spec_files = [file]
|
270
|
+
s.spec_opts << "-l#{line}"
|
271
|
+
end
|
272
|
+
spec_proc.call(s) if spec_proc
|
273
|
+
end
|
274
|
+
end
|
275
|
+
task :no_here => no_here_task
|
276
|
+
end
|
277
|
+
end
|
278
|
+
|
279
|
+
def set_cucumber_opts(task)
|
280
|
+
task.libs << "."
|
281
|
+
cucumber_proc.call(task) if cucumber_proc
|
282
|
+
end
|
283
|
+
|
284
|
+
def define_cucumber_task
|
285
|
+
Cucumber::Rake::Task.new do |t|
|
286
|
+
set_cucumber_opts(t)
|
287
|
+
end
|
288
|
+
|
289
|
+
unless `grep -sRn '^[[:space:]]*@here$' features`.empty?
|
290
|
+
Cucumber::Rake::Task.new("cucumber:here") do |t|
|
291
|
+
t.cucumber_opts = %w[--tags @here]
|
292
|
+
set_cucumber_opts(t)
|
293
|
+
end
|
294
|
+
end
|
295
|
+
task "cucumber:no_here" => :cucumber
|
296
|
+
end
|
297
|
+
|
298
|
+
def define_here_dependency
|
299
|
+
unless Rake::Task.task_defined?("spec:here") || Rake::Task.task_defined?("cucumber:here")
|
300
|
+
task "spec:here" => "spec:no_here" if need_spec? && !Rake::Task.task_defined?("spec:here")
|
301
|
+
task "cucumber:here" => "cucumber:no_here" if need_cucumber? && !Rake::Task.task_defined?("cucumber:here")
|
302
|
+
end
|
303
|
+
|
304
|
+
task("spec:here").comment = "Run spec only marked '# here'"
|
305
|
+
task("cucumber:here").comment = "only tagged '@here'"
|
306
|
+
end
|
307
|
+
|
308
|
+
def rcov_opts(t, aggregation)
|
309
|
+
t.rcov_opts ||= []
|
310
|
+
t.rcov_opts << "-I" << "./spec:./lib:./external/lib"
|
311
|
+
t.rcov_opts << "--exclude" << "gems\/,features\/,external\/"
|
312
|
+
t.rcov_opts << "--aggregate" << "coverage.data" if aggregation
|
313
|
+
t.rcov = true
|
314
|
+
end
|
315
|
+
|
316
|
+
def define_rcov_each_task(aggregation)
|
317
|
+
if need_spec?
|
318
|
+
spec_task.new do |t|
|
319
|
+
t.verbose = false
|
320
|
+
rcov_opts(t, aggregation)
|
321
|
+
if rspec2?
|
322
|
+
t.rcov_opts << "-o" << "coverage.spec" unless aggregation
|
323
|
+
else
|
324
|
+
set_spec_opts(t)
|
325
|
+
t.spec_files = spec_files
|
326
|
+
t.rcov_dir = "coverage.spec" unless aggregation
|
327
|
+
end
|
328
|
+
rcov_spec_proc.call(t) if rcov_spec_proc
|
329
|
+
end
|
330
|
+
else
|
331
|
+
task "spec"
|
332
|
+
end
|
333
|
+
|
334
|
+
if need_cucumber?
|
335
|
+
Cucumber::Rake::Task.new do |t|
|
336
|
+
set_cucumber_opts(t)
|
337
|
+
rcov_opts(t, aggregation)
|
338
|
+
t.rcov_opts << "-o" << "coverage.cuke" unless aggregation
|
339
|
+
end
|
340
|
+
else
|
341
|
+
task "cucumber"
|
342
|
+
end
|
343
|
+
end
|
344
|
+
|
345
|
+
def define_rcov_task
|
346
|
+
namespace :rcov do
|
347
|
+
define_rcov_each_task(false)
|
348
|
+
end
|
349
|
+
|
350
|
+
desc "Run specs and Cucumber using RCov"
|
351
|
+
task "rcov:lump" do
|
352
|
+
rm "coverage.data" if File.exist?("coverage.data")
|
353
|
+
ns = namespace do
|
354
|
+
define_rcov_each_task(true)
|
355
|
+
end
|
356
|
+
ns.tasks.each do |t|
|
357
|
+
t.invoke
|
358
|
+
end
|
359
|
+
rm "coverage.data"
|
360
|
+
end
|
361
|
+
|
362
|
+
task "rcov:all" => %w[rcov:spec rcov:cucumber rcov:lump]
|
363
|
+
end
|
364
|
+
|
365
|
+
def define_alias_task
|
366
|
+
if Rake::Task.task_defined?("spec:apart")
|
367
|
+
task :apart => "spec:apart"
|
368
|
+
task :lump => "spec:lump"
|
369
|
+
task :here => "spec:here"
|
370
|
+
task :profile => "spec:profile"
|
371
|
+
end
|
372
|
+
task :here => "cucumber:here" if Rake::Task.task_defined?("cucumber:here")
|
373
|
+
end
|
374
|
+
end
|