2004-11-23 20:04:44 -05:00
require 'rake/testtask'
2011-05-24 14:08:11 -04:00
require 'rubygems/package_task'
2008-01-21 12:20:51 -05:00
require File . expand_path ( File . dirname ( __FILE__ ) ) + " /test/config "
2011-06-06 15:37:23 -04:00
require File . expand_path ( File . dirname ( __FILE__ ) ) + " /test/support/config "
2008-04-21 00:40:16 -04:00
2009-08-27 14:04:08 -04:00
def run_without_aborting ( * tasks )
errors = [ ]
tasks . each do | task |
begin
Rake :: Task [ task ] . invoke
rescue Exception
errors << task
end
end
abort " Errors running #{ errors . join ( ', ' ) } " if errors . any?
end
2004-11-23 20:04:44 -05:00
2010-08-02 04:37:57 -04:00
desc 'Run mysql, mysql2, sqlite, and postgresql tests by default'
2007-10-14 20:10:09 -04:00
task :default = > :test
2004-11-23 20:04:44 -05:00
2010-08-02 04:37:57 -04:00
desc 'Run mysql, mysql2, sqlite, and postgresql tests'
2009-08-27 14:04:08 -04:00
task :test do
tasks = defined? ( JRUBY_VERSION ) ?
%w( test_jdbcmysql test_jdbcsqlite3 test_jdbcpostgresql ) :
2010-08-02 04:37:57 -04:00
%w( test_mysql test_mysql2 test_sqlite3 test_postgresql )
2009-08-27 14:04:08 -04:00
run_without_aborting ( * tasks )
end
2009-11-10 19:50:15 -05:00
namespace :test do
task :isolated do
tasks = defined? ( JRUBY_VERSION ) ?
%w( isolated_test_jdbcmysql isolated_test_jdbcsqlite3 isolated_test_jdbcpostgresql ) :
2010-08-02 04:37:57 -04:00
%w( isolated_test_mysql isolated_test_mysql2 isolated_test_sqlite3 isolated_test_postgresql )
2009-11-10 19:50:15 -05:00
run_without_aborting ( * tasks )
end
2009-08-27 14:04:08 -04:00
end
2004-11-23 20:04:44 -05:00
2014-05-03 14:15:11 -04:00
desc 'Build MySQL and PostgreSQL test databases'
2013-01-20 12:41:49 -05:00
namespace :db do
2014-05-03 14:15:11 -04:00
task :create = > [ 'db:mysql:build' , 'db:postgresql:build' ]
task :drop = > [ 'db:mysql:drop' , 'db:postgresql:drop' ]
2013-01-20 12:41:49 -05:00
end
2014-05-16 08:58:01 -04:00
%w( mysql mysql2 postgresql sqlite3 sqlite3_mem db2 oracle jdbcmysql jdbcpostgresql jdbcsqlite3 jdbcderby jdbch2 jdbchsqldb ) . each do | adapter |
2014-05-03 14:15:11 -04:00
namespace :test do
Rake :: TestTask . new ( adapter = > " #{ adapter } :env " ) { | t |
adapter_short = adapter == 'db2' ? adapter : adapter [ / ^[a-z0-9]+ / ]
t . libs << 'test'
t . test_files = ( Dir . glob ( " test/cases/**/*_test.rb " ) . reject {
| x | x =~ / \/ adapters \/ /
2015-03-05 13:09:20 -05:00
} + Dir . glob ( " test/cases/adapters/ #{ adapter_short } /**/*_test.rb " ) )
2014-05-03 14:15:11 -04:00
t . warning = true
t . verbose = true
2014-09-27 10:37:44 -04:00
t . ruby_opts = [ " --dev " ] if defined? ( JRUBY_VERSION )
2014-05-03 14:15:11 -04:00
}
namespace :isolated do
task adapter = > " #{ adapter } :env " do
adapter_short = adapter == 'db2' ? adapter : adapter [ / ^[a-z0-9]+ / ]
puts [ adapter , adapter_short ] . inspect
( Dir [ " test/cases/**/*_test.rb " ] . reject {
| x | x =~ / \/ adapters \/ /
} + Dir [ " test/cases/adapters/ #{ adapter_short } /**/*_test.rb " ] ) . all? do | file |
sh ( Gem . ruby , '-w' , " -Itest " , file )
end or raise " Failures "
end
end
2009-05-13 04:06:53 -04:00
end
2007-10-08 01:29:09 -04:00
namespace adapter do
task :test = > " test_ #{ adapter } "
2009-05-13 04:06:53 -04:00
task :isolated_test = > " isolated_test_ #{ adapter } "
2011-06-06 19:51:28 -04:00
# Set the connection environment for the adapter
2011-06-06 19:59:51 -04:00
task ( :env ) { ENV [ 'ARCONN' ] = adapter }
2007-10-08 01:29:09 -04:00
end
2011-06-06 19:51:28 -04:00
# Make sure the adapter test evaluates the env setting task
2014-05-03 14:15:11 -04:00
task " test_ #{ adapter } " = > [ " #{ adapter } :env " , " test: #{ adapter } " ]
task " isolated_test_ #{ adapter } " = > [ " #{ adapter } :env " , " test:isolated: #{ adapter } " ]
2005-03-27 09:10:42 -05:00
end
2005-02-07 09:06:00 -05:00
2011-01-14 17:07:16 -05:00
rule '.sqlite3' do | t |
sh %Q{ sqlite3 " #{ t . name } " "create table a (a integer); drop table a;" }
end
task :test_sqlite3 = > [
'test/fixtures/fixture_database.sqlite3' ,
'test/fixtures/fixture_database_2.sqlite3'
]
2014-05-03 14:15:11 -04:00
namespace :db do
namespace :mysql do
desc 'Build the MySQL test databases'
task :build do
config = ARTest . config [ 'connections' ] [ 'mysql' ]
%x( mysql --user= #{ config [ 'arunit' ] [ 'username' ] } -e "create DATABASE #{ config [ 'arunit' ] [ 'database' ] } DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci " )
%x( mysql --user= #{ config [ 'arunit2' ] [ 'username' ] } -e "create DATABASE #{ config [ 'arunit2' ] [ 'database' ] } DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci " )
end
2014-05-03 14:08:15 -04:00
2014-05-03 14:15:11 -04:00
desc 'Drop the MySQL test databases'
task :drop do
config = ARTest . config [ 'connections' ] [ 'mysql' ]
%x( mysqladmin --user= #{ config [ 'arunit' ] [ 'username' ] } -f drop #{ config [ 'arunit' ] [ 'database' ] } )
%x( mysqladmin --user= #{ config [ 'arunit2' ] [ 'username' ] } -f drop #{ config [ 'arunit2' ] [ 'database' ] } )
end
2005-11-20 02:45:04 -05:00
2014-05-03 14:15:11 -04:00
desc 'Rebuild the MySQL test databases'
task :rebuild = > [ :drop , :build ]
end
2005-11-20 02:45:04 -05:00
2014-05-03 14:15:11 -04:00
namespace :postgresql do
desc 'Build the PostgreSQL test databases'
task :build do
config = ARTest . config [ 'connections' ] [ 'postgresql' ]
%x( createdb -E UTF8 -T template0 #{ config [ 'arunit' ] [ 'database' ] } )
%x( createdb -E UTF8 -T template0 #{ config [ 'arunit2' ] [ 'database' ] } )
2005-11-20 02:45:04 -05:00
2014-05-03 14:15:11 -04:00
# prepare hstore
if %x( createdb --version ) . strip . gsub ( / (.*)( \ d \ . \ d \ . \ d)$ / , " \\ 2 " ) < " 9.1.0 "
puts " Please prepare hstore data type. See http://www.postgresql.org/docs/9.0/static/hstore.html "
end
end
2007-10-08 01:29:09 -04:00
2014-05-03 14:15:11 -04:00
desc 'Drop the PostgreSQL test databases'
task :drop do
config = ARTest . config [ 'connections' ] [ 'postgresql' ]
%x( dropdb #{ config [ 'arunit' ] [ 'database' ] } )
%x( dropdb #{ config [ 'arunit2' ] [ 'database' ] } )
2014-05-03 13:34:18 -04:00
end
2007-10-08 01:29:09 -04:00
2014-05-03 14:15:11 -04:00
desc 'Rebuild the PostgreSQL test databases'
task :rebuild = > [ :drop , :build ]
2014-05-03 13:34:18 -04:00
end
2005-11-20 02:45:04 -05:00
end
2014-05-03 14:15:11 -04:00
task :build_mysql_databases = > 'db:mysql:build'
task :drop_mysql_databases = > 'db:mysql:drop'
task :rebuild_mysql_databases = > 'db:mysql:rebuild'
2006-04-27 18:39:45 -04:00
2014-05-03 14:15:11 -04:00
task :build_postgresql_databases = > 'db:postgresql:build'
task :drop_postgresql_databases = > 'db:postgresql:drop'
task :rebuild_postgresql_databases = > 'db:postgresql:rebuild'
2004-11-23 20:04:44 -05:00
2005-04-13 01:06:40 -04:00
task :lines do
2013-06-28 00:18:30 -04:00
load File . expand_path ( '..' , File . dirname ( __FILE__ ) ) + '/tools/line_statistics'
files = FileList [ " lib/active_record/**/*.rb " ]
CodeTools :: LineStatistics . new ( files ) . print_loc
2005-04-13 01:06:40 -04:00
end
2014-05-03 14:15:11 -04:00
spec = eval ( File . read ( 'activerecord.gemspec' ) )
Gem :: PackageTask . new ( spec ) do | p |
p . gem_spec = spec
end
2004-11-23 20:04:44 -05:00
2005-03-27 08:33:54 -05:00
# Publishing ------------------------------------------------------
2004-11-23 20:04:44 -05:00
2013-06-21 04:57:00 -04:00
desc " Release to rubygems "
2010-02-05 03:03:03 -05:00
task :release = > :package do
require 'rake/gemcutter'
Rake :: Gemcutter :: Tasks . new ( spec ) . define
Rake :: Task [ 'gem:push' ] . invoke
end