# The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # the default task is to run both the unit and functional tests # functional tests require that a solr test server is running # but this Rakefil should take care of starting and stopping it # for you # # if you just want to run unit tests: # # rake test_units # # and if you just want to run functional tests # # rake test_functionals # # if you would like to see solr startup messages on STDERR # when starting solr test server during functional tests use: # # rake SOLR_CONSOLE=true SOLRB_VERSION = '0.0.1' require 'rubygems' require 'rake' require 'rake/testtask' require 'rake/rdoctask' require 'rake/packagetask' require 'rake/gempackagetask' require 'test/functional/test_solr_server' task :default => [:test] spec = Gem::Specification.new do |s| s.name = 'solrb' s.version = SOLRB_VERSION s.author = 'Apache Solr' s.email = 'solr-user@lucene.apache.org' s.homepage = 'http://wiki.apache.org/solr/Flare' s.platform = Gem::Platform::RUBY s.summary = 'A ruby library for working with Apache Solr' s.files = Dir.glob("{lib,test}/**/*") s.require_path = 'lib' s.autorequire = 'solr' s.has_rdoc = true end Rake::GemPackageTask.new(spec) do |pkg| pkg.need_zip = true pkg.need_tar = true end Rake::RDocTask.new('doc') do |rd| rd.rdoc_files.include("lib/**/*.rb") rd.main = 'Solr::Connection' rd.rdoc_dir = 'doc' end Rake::TestTask.new(:test_units) do |t| t.pattern = 'test/unit/*_test.rb' t.verbose = true t.ruby_opts = ['-r solr', '-r test/unit', '-Itest/unit'] end Rake::TestTask.new(:test_functionals) do |t| t.pattern = 'test/functional/*_test.rb' t.verbose = true t.ruby_opts = ['-r solr', '-r test/unit', '-Itest/functional'] end task :test do # unit tests don't require a solr server Rake::Task[:test_units].invoke rescue got_error = true # wrap functional tests with a test-specific Solr server got_error = TestSolrServer.wrap(:quiet => ENV['SOLR_CONSOLE'] ? false : true) do Rake::Task[:test_functionals].invoke end raise "test failures" if got_error end namespace :test do desc 'Measures test coverage' # borrowed from here: http://clarkware.com/cgi/blosxom/2007/01/05#RcovRakeTask task :coverage do rm_f "coverage" rm_f "coverage.data" TestSolrServer.wrap do system("rcov --aggregate coverage.data --text-summary -Ilib:test/functional test/functional/*_test.rb") end system("rcov --aggregate coverage.data --text-summary -Ilib:test/unit test/unit/*_test.rb") system("open coverage/index.html") if PLATFORM['darwin'] end end