Rakefile in mspire-0.2.4 vs Rakefile in mspire-0.3.0
- old
+ new
@@ -1,37 +1,39 @@
require 'rake'
require 'rubygems'
require 'rake/rdoctask'
require 'rake/gempackagetask'
-require 'rake/testtask'
require 'rake/clean'
require 'fileutils'
+require 'spec/rake/spectask'
###############################################
# GLOBAL
###############################################
FL = FileList
NAME = "mspire"
-lib_files = FL["lib/**/*"]
-test_dir_too = FL["test/**/*"]
+$dependencies = %w(libjtp)
+$tfiles_large = 'test_files_large'
+changelog = "changelog.txt"
-little_dist_files = lib_files + FL["INSTALL", "README", "Rakefile", "LICENSE", "changelog.txt", "release_notes.txt", "{bin,script,tutorial}/**/*"]
-dist_files = lib_files + FL["INSTALL", "README", "Rakefile", "LICENSE", "{bin,script,tutorial}/**/*", test_dir_too]
+core_files = FL["INSTALL", "README", "Rakefile", "LICENSE", changelog, "release_notes.txt", "{lib,bin,script,specs,tutorial,test_files}/**/*"]
+big_dist_files = core_files + FL["test_files_large/**/*"]
-dist_files = little_dist_files # comment out to include test files
+dist_files = core_files
+# dist_files = big_dist_files
###############################################
# ENVIRONMENT
###############################################
ENV["OS"] == "Windows_NT" ? WIN32 = true : WIN32 = false
-gemcmd = "gem"
+$gemcmd = "gem"
if WIN32
unless ENV["TERM"] == "cygwin"
- gemcmd << ".cmd"
+ $gemcmd << ".cmd"
end
end
###############################################
# DOC
@@ -79,48 +81,131 @@
###############################################
# TESTS
###############################################
-desc "Run unit tests."
-Rake::TestTask.new do |t|
- reply = `#{gemcmd} list -l #{NAME}`
+namespace :spec do
+ task :autotest do
+ require './specs/rspec_autotest'
+ RspecAutotest.run
+ end
+end
+
+
+task :ensure_dependencies do
+ $dependencies.each do |dep|
+ unless `#{$gemcmd} list -l #{dep}`.include?(dep)
+ abort "ABORTING: install #{dep} before testing!"
+ end
+ end
+end
+
+task :ensure_large_testfiles do
+ if !File.exist?($tfiles_large) and !ENV['SPEC_LARGE'].nil?
+ warn "Not running with large files since #{$tfiles_large} does not exist!"
+ warn "Removing SPEC_LARGE from ENV!"
+ ENV.delete('SPEC_LARGE')
+ end
+end
+
+task :ensure_gem_is_uninstalled do
+ reply = `#{$gemcmd} list -l #{NAME}`
if reply.include? NAME + " ("
puts "GOING to uninstall gem '#{NAME}' for testing"
if WIN32
- %x( #{gemcmd} uninstall -x #{NAME} )
+ %x( #{$gemcmd} uninstall -x #{NAME} )
else
- %x( sudo #{gemcmd} uninstall -x #{NAME} )
+ %x( sudo #{$gemcmd} uninstall -x #{NAME} )
end
end
- # t.libs << "lib" ## done by default
- t.test_files = FL["test/tc_*.rb"]
- #t.verbose = true
end
+desc "Run all specs"
+Spec::Rake::SpecTask.new('spec') do |t|
+ Rake::Task[:ensure_gem_is_uninstalled].invoke
+ Rake::Task[:ensure_dependencies].invoke
+ Rake::Task[:ensure_large_testfiles].invoke
+ t.libs = ['lib']
+ #t.ruby_opts = ['-I', 'lib']
+ t.spec_files = FileList['specs/**/*_spec.rb']
+end
+desc "Run all specs"
+Spec::Rake::SpecTask.new('specl') do |t|
+ Rake::Task[:ensure_gem_is_uninstalled].invoke
+ Rake::Task[:ensure_dependencies].invoke
+ Rake::Task[:ensure_large_testfiles].invoke
+ t.spec_files = FileList['specs/**/*_spec.rb']
+ t.libs = ['lib']
+ #t.ruby_opts = ['-I', 'lib']
+ t.spec_opts = ['--format', 'specdoc' ]
+end
-desc "Run unit tests individual on each test"
-task :test_ind do |t|
- reply = `#{gemcmd} list -l #{NAME}`
- if reply.include? NAME + " ("
- %x( sudo #{gemcmd} uninstall -x #{NAME} )
- end
+desc "Run all specs with RCov"
+Spec::Rake::SpecTask.new('rcov') do |t|
+ Rake::Task[:ensure_gem_is_uninstalled].invoke
+ Rake::Task[:ensure_dependencies].invoke
+ Rake::Task[:ensure_large_testfiles].invoke
+ t.spec_files = FileList['specs/**/*_spec.rb']
+ t.rcov = true
+ t.libs = ['lib']
+ #t.ruby_opts = ['-I', 'lib']
+ t.rcov_opts = ['--exclude', 'specs']
+end
- # t.libs << "lib" ## done by default
- test_files = FL["test/tc_*.rb"]
- test_files.each do |file|
- puts "TESTING: #{file.sub(/test\//,'')}"
- puts `ruby -I lib #{file}`
+task :speci => [:ensure_gem_is_uninstalled, :ensure_dependencies, :ensure_large_testfiles] do
+ # files that match a key word
+ files_to_run = ENV['SPEC'] || FileList['specs/**/*_spec.rb']
+ if ENV['SPECM']
+ files_to_run = files_to_run.select do |file|
+ file.include?(ENV['SPECM'])
+ end
end
- #t.verbose = true
+ files_to_run.each do |spc|
+ puts "------ SPEC=#{spc} ------"
+ system "ruby -I lib -S spec #{spc} --format specdoc"
+ end
end
+#Spec::Rake::SpecTask.new(:spec) do |t|
+# uninstall_gem
+# t.spec_files = FileList['spec/**/spec_*.rb']
+# t.libs = FileList['lib']
+# t.spec_opts = ['--format', 'specdoc']
+#end
+#desc "Run unit tests."
+#Rake::TestTask.new do |t|
+# uninstall_gem
+# # t.libs << "lib" ## done by default
+# t.test_files = FL["test/tc_*.rb"]
+# #t.verbose = true
+#end
+
+#desc "Run unit tests individual on each test"
+#task :test_ind do |t|
+# reply = `#{$gemcmd} list -l #{NAME}`
+# if reply.include? NAME + " ("
+# %x( sudo #{$gemcmd} uninstall -x #{NAME} )
+# end
+#
+# # t.libs << "lib" ## done by default
+# test_files = FL["test/tc_*.rb"]
+# test_files.each do |file|
+# puts "TESTING: #{file.sub(/test\//,'')}"
+# puts `ruby -I lib #{file}`
+# end
+# #t.verbose = true
+#end
+
+
+
+
+
#desc "Run all tests"
#task :test_indiv do
# sys.cd "test" do
# sys["tc_*.rb"].each do |file|
# sys "ruby #{file}"
@@ -138,30 +223,32 @@
tm = Time.now
spec = Gem::Specification.new do |s|
s.platform = Gem::Platform::RUBY
s.name = NAME
- s.version = "0.2.4"
+ s.version = IO.readlines(changelog).grep(/##.*version/).pop.split(/\s+/).last.chomp
s.summary = "Mass Spectrometry Proteomics Objects, Scripts, and Executables"
s.date = "#{tm.year}-#{tm.month}-#{tm.day}"
s.email = "jprince@icmb.utexas.edu"
s.homepage = "http://mspire.rubyforge.org"
s.rubyforge_project = "mspire"
s.description = "mspire is for working with mass spectrometry proteomics data"
s.has_rdoc = true
s.authors = ["John Prince"]
- s.files = little_dist_files
+ s.files = dist_files
s.rdoc_options = rdoc_options
s.extra_rdoc_files = rdoc_extra_includes
s.executables = FL["bin/*"].map {|file| File.basename(file) }
- s.add_dependency('libjtp', '~> 0.1.4')
- s.requirements << '"xmlparser" is the prefered xml parser right now. REXML and regular expressions are used as fallback in some routines.'
+ s.add_dependency('libjtp', '~> 0.2.5')
+ s.add_dependency('axml')
+ s.requirements << '"libxml" is the prefered xml parser right now. libxml, xmlparser, REXML and regular expressions are used as fallback in some routines.'
s.requirements << 'some plotting functions will not be available without the "gnuplot" gem (and underlying gnuplot binary)'
s.requirements << 'the "t2x" binary (in archive) or readw.exe is required to convert .RAW files to mzXML in some applications'
s.requirements << '"rake" is useful for development'
s.requirements << '"webgen (with gems redcloth and bluecloth) is necessary to build web pages'
- s.test_files = FL["test/tc_*.rb"]
+ #s.test_files = FL["test/tc_*.rb"]
+ s.test_files = FL["specs/**/*_spec.rb"]
end
desc "Create packages."
Rake::GemPackageTask.new(spec) do |pkg|
pkg.need_zip = true
@@ -178,23 +265,25 @@
# t.test_files = sys["test/tc_*.rb"]
# t.gem_add_dependency('libjtp', '= 0.1.1')
# t.package_task
#end
+task :remove_pkg do
+ FileUtils.rm_rf "pkg"
+end
-
-
task :install => [:reinstall]
desc "uninstalls the package, packages a fresh one, and installs"
-task :reinstall => [:clean, :package] do
- reply = `#{gemcmd} list -l #{NAME}`
- if reply.include? NAME + " ("
- %x( #{gemcmd} uninstall -x #{NAME} )
+task :reinstall => [:remove_pkg, :clean, :package] do
+ reply = `#{$gemcmd} list -l #{NAME}`
+ if reply.include?(NAME + " (")
+ %x( #{$gemcmd} uninstall -x #{NAME} )
end
FileUtils.cd("pkg") do
- %x( #{gemcmd} install #{NAME} )
+ %x( #{$gemcmd} install #{NAME}*.gem )
end
+
end
###############################################
# CLEANUP
###############################################