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 ###############################################