2007-01-08 11:05:02 -05:00
# 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
2007-01-02 23:57:00 -05:00
SOLRB_VERSION = '0.0.1'
require 'rubygems'
require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'
require 'rake/packagetask'
require 'rake/gempackagetask'
2007-01-08 11:28:19 -05:00
require 'test/functional/test_solr_server'
2007-01-02 23:57:00 -05:00
2007-01-21 14:11:34 -05:00
task :default = > [ :test_units ]
2007-01-02 23:57:00 -05:00
spec = Gem :: Specification . new do | s |
2007-01-12 22:02:26 -05:00
s . name = 'solrb'
2007-01-02 23:57:00 -05:00
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
2007-01-14 20:44:37 -05:00
s . summary = 'Ruby library for working with Apache Solr'
2007-01-21 16:04:39 -05:00
# Omit functional tests from gem for now, as that requires a Solr instance
s . files = Dir . glob ( " lib/**/* " ) . concat ( Dir . glob ( " test/unit/**/* " ) )
2007-01-02 23:57:00 -05:00
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
2007-02-08 19:51:19 -05:00
namespace :package do
desc " Package solrb for use in Rails' /vendor directory. Takes an optional DIR parameter which is the root of the Rails app you'd like to package this for. "
task :vendor do
require " fileutils "
current_dir = File . dirname ( __FILE__ )
vendor_dir = File . join ( ENV [ " DIR " ] || File . join ( current_dir , " pkg " ) , " vendor " )
solr_dir = File . join ( vendor_dir , " solr " )
File . makedirs ( solr_dir )
Dir . glob ( File . join ( current_dir , " lib " , " ** " , " * " ) ) . each do | d |
new_d = d . gsub ( File . join ( current_dir , " lib " ) , vendor_dir )
if File . directory? ( d )
File . makedirs ( new_d )
elsif d =~ / solr \ .rb$ /
File . cp ( d , File . join ( solr_dir , " solr.rb " ) )
elsif d !~ / .svn /
File . cp ( d , new_d )
end
end
end
end
2007-01-30 01:05:21 -05:00
desc " Generate rdoc documentation "
2007-01-02 23:57:00 -05:00
Rake :: RDocTask . new ( 'doc' ) do | rd |
rd . rdoc_files . include ( " lib/**/*.rb " )
2007-01-24 11:16:01 -05:00
rd . rdoc_files . include ( 'README' , 'CHANGES.txt' , 'LICENSE.txt' )
rd . main = 'README'
2007-01-02 23:57:00 -05:00
rd . rdoc_dir = 'doc'
end
2007-01-03 20:00:30 -05:00
2007-01-30 01:05:21 -05:00
desc " Run unit tests "
2007-01-08 11:05:02 -05:00
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' ]
2007-01-03 20:00:30 -05:00
end
2007-01-21 14:11:34 -05:00
# NOTE: test_functionals does not work standalone currently. It needs the TestSolrServer wrapper in the :test task
2007-01-08 11:05:02 -05:00
Rake :: TestTask . new ( :test_functionals ) do | t |
t . pattern = 'test/functional/*_test.rb'
2007-01-03 20:00:30 -05:00
t . verbose = true
2007-01-08 11:05:02 -05:00
t . ruby_opts = [ '-r solr' , '-r test/unit' , '-Itest/functional' ]
2007-01-03 20:00:30 -05:00
end
2007-01-30 01:05:21 -05:00
desc " Run unit and functional tests "
task :test = > [ :test_units ] do
2007-01-21 14:11:34 -05:00
rm_rf " test/data " # remove functional test temp data directory
2007-01-08 15:23:28 -05:00
# wrap functional tests with a test-specific Solr server
got_error = TestSolrServer . wrap ( :quiet = > ENV [ 'SOLR_CONSOLE' ] ? false : true ) do
2007-01-08 11:05:02 -05:00
Rake :: Task [ :test_functionals ] . invoke
end
raise " test failures " if got_error
2007-01-03 20:00:30 -05:00
end
2007-01-08 11:05:02 -05:00
2007-01-30 01:05:21 -05:00
# TODO: consider replacing system() to rcov with the included
# Rake task: http://eigenclass.org/hiki.rb?cmd=view&p=rcov+FAQ&key=rake
2007-01-08 11:05:02 -05:00
namespace :test do
desc 'Measures test coverage'
2007-01-08 11:57:36 -05:00
# borrowed from here: http://clarkware.com/cgi/blosxom/2007/01/05#RcovRakeTask
2007-01-08 11:05:02 -05:00
task :coverage do
2007-01-21 14:11:34 -05:00
rm_rf " coverage "
rm_rf " coverage.data "
2007-01-30 01:05:21 -05:00
TestSolrServer . wrap ( :quiet = > ENV [ 'SOLR_CONSOLE' ] ? false : true ) do
2007-01-08 15:23:28 -05:00
system ( " rcov --aggregate coverage.data --text-summary -Ilib:test/functional test/functional/*_test.rb " )
end
2007-01-12 21:53:39 -05:00
system ( " rcov --aggregate coverage.data --text-summary -Ilib:test/unit test/unit/*_test.rb " )
2007-01-08 11:05:02 -05:00
system ( " open coverage/index.html " ) if PLATFORM [ 'darwin' ]
end
2007-01-30 01:05:21 -05:00
end
2007-01-08 11:05:02 -05:00
2007-01-30 01:05:21 -05:00
def egrep ( pattern )
Dir [ '**/*.rb' ] . each do | fn |
count = 0
open ( fn ) do | f |
while line = f . gets
count += 1
if line =~ pattern
puts " #{ fn } : #{ count } : #{ line } "
end
end
end
end
2007-01-08 11:57:36 -05:00
end
2007-01-30 01:05:21 -05:00
desc " Report TODO/FIXME/TBD tags in the code "
task :todo do
egrep / # .*(FIXME|TODO|TBD) /
end