activerecord-jdbc-adapter 1.0.3-java → 50.1-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +33 -0
- data/.travis.yml +79 -0
- data/.yardopts +4 -0
- data/CONTRIBUTING.md +50 -0
- data/Gemfile +91 -0
- data/History.md +1191 -0
- data/LICENSE.txt +22 -17
- data/README.md +169 -0
- data/RUNNING_TESTS.md +127 -0
- data/Rakefile +294 -5
- data/Rakefile.jdbc +20 -0
- data/activerecord-jdbc-adapter.gemspec +55 -0
- data/lib/active_record/connection_adapters/as400_adapter.rb +2 -0
- data/lib/active_record/connection_adapters/db2_adapter.rb +1 -0
- data/lib/active_record/connection_adapters/firebird_adapter.rb +1 -0
- data/lib/active_record/connection_adapters/mariadb_adapter.rb +1 -0
- data/lib/active_record/connection_adapters/sqlserver_adapter.rb +1 -0
- data/lib/activerecord-jdbc-adapter.rb +0 -5
- data/lib/arel/visitors/compat.rb +60 -0
- data/lib/arel/visitors/db2.rb +128 -6
- data/lib/arel/visitors/derby.rb +103 -10
- data/lib/arel/visitors/firebird.rb +79 -0
- data/lib/arel/visitors/h2.rb +25 -0
- data/lib/arel/visitors/hsqldb.rb +18 -10
- data/lib/arel/visitors/postgresql_jdbc.rb +6 -0
- data/lib/arel/visitors/sql_server.rb +225 -0
- data/lib/arel/visitors/sql_server/ng42.rb +293 -0
- data/lib/arjdbc.rb +11 -21
- data/lib/arjdbc/abstract/connection_management.rb +35 -0
- data/lib/arjdbc/abstract/core.rb +64 -0
- data/lib/arjdbc/abstract/database_statements.rb +64 -0
- data/lib/arjdbc/abstract/statement_cache.rb +58 -0
- data/lib/arjdbc/abstract/transaction_support.rb +86 -0
- data/lib/arjdbc/db2.rb +3 -1
- data/lib/arjdbc/db2/adapter.rb +630 -250
- data/lib/arjdbc/db2/as400.rb +130 -0
- data/lib/arjdbc/db2/column.rb +167 -0
- data/lib/arjdbc/db2/connection_methods.rb +44 -0
- data/lib/arjdbc/derby.rb +1 -5
- data/lib/arjdbc/derby/active_record_patch.rb +13 -0
- data/lib/arjdbc/derby/adapter.rb +409 -217
- data/lib/arjdbc/derby/connection_methods.rb +16 -14
- data/lib/arjdbc/derby/schema_creation.rb +15 -0
- data/lib/arjdbc/discover.rb +62 -50
- data/lib/arjdbc/firebird.rb +3 -1
- data/lib/arjdbc/firebird/adapter.rb +365 -62
- data/lib/arjdbc/firebird/connection_methods.rb +23 -0
- data/lib/arjdbc/h2.rb +2 -3
- data/lib/arjdbc/h2/adapter.rb +273 -6
- data/lib/arjdbc/h2/connection_methods.rb +23 -8
- data/lib/arjdbc/hsqldb.rb +2 -3
- data/lib/arjdbc/hsqldb/adapter.rb +204 -77
- data/lib/arjdbc/hsqldb/connection_methods.rb +24 -10
- data/lib/arjdbc/hsqldb/explain_support.rb +35 -0
- data/lib/arjdbc/hsqldb/schema_creation.rb +11 -0
- data/lib/arjdbc/informix.rb +4 -2
- data/lib/arjdbc/informix/adapter.rb +78 -54
- data/lib/arjdbc/informix/connection_methods.rb +8 -9
- data/lib/arjdbc/jdbc.rb +59 -2
- data/lib/arjdbc/jdbc/adapter.rb +356 -166
- data/lib/arjdbc/jdbc/adapter_java.jar +0 -0
- data/lib/arjdbc/jdbc/adapter_require.rb +46 -0
- data/lib/arjdbc/jdbc/base_ext.rb +15 -0
- data/lib/arjdbc/jdbc/callbacks.rb +27 -18
- data/lib/arjdbc/jdbc/column.rb +79 -20
- data/lib/arjdbc/jdbc/connection.rb +5 -119
- data/lib/arjdbc/jdbc/connection_methods.rb +32 -4
- data/lib/arjdbc/jdbc/error.rb +65 -0
- data/lib/arjdbc/jdbc/extension.rb +41 -29
- data/lib/arjdbc/jdbc/java.rb +5 -6
- data/lib/arjdbc/jdbc/jdbc.rake +3 -126
- data/lib/arjdbc/jdbc/railtie.rb +2 -9
- data/lib/arjdbc/jdbc/rake_tasks.rb +3 -10
- data/lib/arjdbc/jdbc/serialized_attributes_helper.rb +3 -0
- data/lib/arjdbc/jdbc/type_cast.rb +166 -0
- data/lib/arjdbc/jdbc/type_converter.rb +35 -19
- data/lib/arjdbc/mssql.rb +6 -3
- data/lib/arjdbc/mssql/adapter.rb +630 -298
- data/lib/arjdbc/mssql/column.rb +200 -0
- data/lib/arjdbc/mssql/connection_methods.rb +66 -17
- data/lib/arjdbc/mssql/explain_support.rb +99 -0
- data/lib/arjdbc/mssql/limit_helpers.rb +189 -50
- data/lib/arjdbc/mssql/lock_methods.rb +77 -0
- data/lib/arjdbc/mssql/types.rb +343 -0
- data/lib/arjdbc/mssql/utils.rb +82 -0
- data/lib/arjdbc/mysql.rb +2 -3
- data/lib/arjdbc/mysql/adapter.rb +86 -356
- data/lib/arjdbc/mysql/connection_methods.rb +159 -23
- data/lib/arjdbc/oracle/adapter.rb +714 -263
- data/lib/arjdbc/postgresql.rb +2 -3
- data/lib/arjdbc/postgresql/_bc_time_cast_patch.rb +24 -0
- data/lib/arjdbc/postgresql/adapter.rb +570 -400
- data/lib/arjdbc/postgresql/base/array_decoder.rb +26 -0
- data/lib/arjdbc/postgresql/base/array_encoder.rb +25 -0
- data/lib/arjdbc/postgresql/base/array_parser.rb +95 -0
- data/lib/arjdbc/postgresql/base/pgconn.rb +11 -0
- data/lib/arjdbc/postgresql/column.rb +51 -0
- data/lib/arjdbc/postgresql/connection_methods.rb +57 -18
- data/lib/arjdbc/postgresql/name.rb +24 -0
- data/lib/arjdbc/postgresql/oid_types.rb +192 -0
- data/lib/arjdbc/railtie.rb +11 -0
- data/lib/arjdbc/sqlite3.rb +2 -3
- data/lib/arjdbc/sqlite3/adapter.rb +518 -198
- data/lib/arjdbc/sqlite3/connection_methods.rb +49 -24
- data/lib/arjdbc/sybase.rb +2 -2
- data/lib/arjdbc/sybase/adapter.rb +7 -6
- data/lib/arjdbc/tasks.rb +13 -0
- data/lib/arjdbc/tasks/database_tasks.rb +52 -0
- data/lib/arjdbc/tasks/databases.rake +91 -0
- data/lib/arjdbc/tasks/databases3.rake +215 -0
- data/lib/arjdbc/tasks/databases4.rake +39 -0
- data/lib/arjdbc/tasks/db2_database_tasks.rb +104 -0
- data/lib/arjdbc/tasks/derby_database_tasks.rb +95 -0
- data/lib/arjdbc/tasks/h2_database_tasks.rb +31 -0
- data/lib/arjdbc/tasks/hsqldb_database_tasks.rb +70 -0
- data/lib/arjdbc/tasks/jdbc_database_tasks.rb +169 -0
- data/lib/arjdbc/tasks/mssql_database_tasks.rb +46 -0
- data/lib/arjdbc/util/quoted_cache.rb +60 -0
- data/lib/arjdbc/util/serialized_attributes.rb +98 -0
- data/lib/arjdbc/util/table_copier.rb +110 -0
- data/lib/arjdbc/version.rb +1 -6
- data/lib/generators/jdbc/USAGE +9 -0
- data/lib/generators/jdbc/jdbc_generator.rb +8 -0
- data/lib/jdbc_adapter.rb +1 -1
- data/lib/jdbc_adapter/rake_tasks.rb +3 -2
- data/lib/jdbc_adapter/version.rb +2 -1
- data/pom.xml +114 -0
- data/rails_generators/jdbc_generator.rb +1 -1
- data/rails_generators/templates/config/initializers/jdbc.rb +8 -5
- data/rails_generators/templates/lib/tasks/jdbc.rake +7 -4
- data/rakelib/01-tomcat.rake +51 -0
- data/rakelib/02-test.rake +132 -0
- data/rakelib/bundler_ext.rb +11 -0
- data/rakelib/compile.rake +67 -22
- data/rakelib/db.rake +61 -0
- data/rakelib/rails.rake +204 -29
- data/src/java/arjdbc/ArJdbcModule.java +286 -0
- data/src/java/arjdbc/db2/DB2Module.java +76 -0
- data/src/java/arjdbc/db2/DB2RubyJdbcConnection.java +126 -0
- data/src/java/arjdbc/derby/DerbyModule.java +99 -243
- data/src/java/arjdbc/derby/DerbyRubyJdbcConnection.java +152 -0
- data/src/java/arjdbc/firebird/FirebirdRubyJdbcConnection.java +174 -0
- data/src/java/arjdbc/{jdbc/JdbcConnectionFactory.java → h2/H2Module.java} +20 -6
- data/src/java/arjdbc/h2/H2RubyJdbcConnection.java +27 -12
- data/src/java/arjdbc/hsqldb/HSQLDBModule.java +73 -0
- data/src/java/arjdbc/informix/InformixRubyJdbcConnection.java +7 -6
- data/src/java/arjdbc/jdbc/AdapterJavaService.java +7 -29
- data/src/java/arjdbc/jdbc/Callable.java +44 -0
- data/src/java/arjdbc/jdbc/ConnectionFactory.java +132 -0
- data/src/java/arjdbc/jdbc/DataSourceConnectionFactory.java +157 -0
- data/src/java/arjdbc/jdbc/DriverConnectionFactory.java +63 -0
- data/src/java/arjdbc/jdbc/DriverWrapper.java +119 -0
- data/src/java/arjdbc/jdbc/JdbcResult.java +130 -0
- data/src/java/arjdbc/jdbc/RubyJdbcConnection.java +3622 -948
- data/src/java/arjdbc/mssql/MSSQLModule.java +90 -0
- data/src/java/arjdbc/mssql/MSSQLRubyJdbcConnection.java +181 -0
- data/src/java/arjdbc/mysql/MySQLModule.java +99 -81
- data/src/java/arjdbc/mysql/MySQLRubyJdbcConnection.java +294 -0
- data/src/java/arjdbc/oracle/OracleModule.java +80 -0
- data/src/java/arjdbc/oracle/OracleRubyJdbcConnection.java +387 -17
- data/src/java/arjdbc/postgresql/ByteaUtils.java +157 -0
- data/src/java/arjdbc/postgresql/PgResultSetMetaDataWrapper.java +23 -0
- data/src/java/arjdbc/postgresql/PostgreSQLModule.java +77 -0
- data/src/java/arjdbc/postgresql/PostgreSQLResult.java +184 -0
- data/src/java/arjdbc/postgresql/PostgreSQLRubyJdbcConnection.java +952 -0
- data/src/java/arjdbc/sqlite3/SQLite3Module.java +73 -0
- data/src/java/arjdbc/sqlite3/SQLite3RubyJdbcConnection.java +525 -0
- data/src/java/arjdbc/util/CallResultSet.java +826 -0
- data/src/java/arjdbc/util/DateTimeUtils.java +580 -0
- data/src/java/arjdbc/util/ObjectSupport.java +65 -0
- data/src/java/arjdbc/util/QuotingUtils.java +138 -0
- data/src/java/arjdbc/util/StringCache.java +63 -0
- data/src/java/arjdbc/util/StringHelper.java +159 -0
- metadata +245 -268
- data/History.txt +0 -369
- data/Manifest.txt +0 -180
- data/README.txt +0 -181
- data/lib/active_record/connection_adapters/oracle_adapter.rb +0 -1
- data/lib/arel/engines/sql/compilers/db2_compiler.rb +0 -9
- data/lib/arel/engines/sql/compilers/derby_compiler.rb +0 -6
- data/lib/arel/engines/sql/compilers/h2_compiler.rb +0 -6
- data/lib/arel/engines/sql/compilers/hsqldb_compiler.rb +0 -15
- data/lib/arel/engines/sql/compilers/jdbc_compiler.rb +0 -6
- data/lib/arel/engines/sql/compilers/mssql_compiler.rb +0 -46
- data/lib/arel/visitors/mssql.rb +0 -44
- data/lib/arjdbc/jdbc/compatibility.rb +0 -51
- data/lib/arjdbc/jdbc/core_ext.rb +0 -24
- data/lib/arjdbc/jdbc/discover.rb +0 -18
- data/lib/arjdbc/jdbc/driver.rb +0 -44
- data/lib/arjdbc/jdbc/missing_functionality_helper.rb +0 -87
- data/lib/arjdbc/jdbc/quoted_primary_key.rb +0 -28
- data/lib/arjdbc/jdbc/require_driver.rb +0 -16
- data/lib/arjdbc/mimer.rb +0 -2
- data/lib/arjdbc/mimer/adapter.rb +0 -142
- data/lib/arjdbc/mssql/tsql_helper.rb +0 -61
- data/lib/arjdbc/oracle.rb +0 -3
- data/lib/arjdbc/oracle/connection_methods.rb +0 -11
- data/lib/pg.rb +0 -4
- data/rakelib/package.rake +0 -92
- data/rakelib/test.rake +0 -81
- data/src/java/arjdbc/jdbc/SQLBlock.java +0 -48
- data/src/java/arjdbc/mssql/MssqlRubyJdbcConnection.java +0 -127
- data/src/java/arjdbc/postgresql/PostgresqlRubyJdbcConnection.java +0 -57
- data/src/java/arjdbc/sqlite3/Sqlite3RubyJdbcConnection.java +0 -64
- data/test/abstract_db_create.rb +0 -117
- data/test/activerecord/connection_adapters/type_conversion_test.rb +0 -31
- data/test/activerecord/connections/native_jdbc_mysql/connection.rb +0 -25
- data/test/db/db2.rb +0 -11
- data/test/db/derby.rb +0 -12
- data/test/db/h2.rb +0 -11
- data/test/db/hsqldb.rb +0 -13
- data/test/db/informix.rb +0 -11
- data/test/db/jdbc.rb +0 -11
- data/test/db/jndi_config.rb +0 -40
- data/test/db/logger.rb +0 -3
- data/test/db/mssql.rb +0 -9
- data/test/db/mysql.rb +0 -10
- data/test/db/oracle.rb +0 -34
- data/test/db/postgres.rb +0 -9
- data/test/db/sqlite3.rb +0 -11
- data/test/db2_simple_test.rb +0 -66
- data/test/derby_migration_test.rb +0 -68
- data/test/derby_multibyte_test.rb +0 -12
- data/test/derby_simple_test.rb +0 -99
- data/test/generic_jdbc_connection_test.rb +0 -29
- data/test/h2_simple_test.rb +0 -41
- data/test/has_many_through.rb +0 -79
- data/test/helper.rb +0 -5
- data/test/hsqldb_simple_test.rb +0 -6
- data/test/informix_simple_test.rb +0 -48
- data/test/jdbc_common.rb +0 -25
- data/test/jndi_callbacks_test.rb +0 -40
- data/test/jndi_test.rb +0 -25
- data/test/manualTestDatabase.rb +0 -191
- data/test/models/add_not_null_column_to_table.rb +0 -12
- data/test/models/auto_id.rb +0 -18
- data/test/models/data_types.rb +0 -28
- data/test/models/entry.rb +0 -43
- data/test/models/mixed_case.rb +0 -25
- data/test/models/reserved_word.rb +0 -18
- data/test/models/string_id.rb +0 -18
- data/test/models/validates_uniqueness_of_string.rb +0 -19
- data/test/mssql_db_create_test.rb +0 -26
- data/test/mssql_identity_insert_test.rb +0 -19
- data/test/mssql_legacy_types_test.rb +0 -58
- data/test/mssql_limit_offset_test.rb +0 -136
- data/test/mssql_multibyte_test.rb +0 -18
- data/test/mssql_simple_test.rb +0 -55
- data/test/mysql_db_create_test.rb +0 -27
- data/test/mysql_info_test.rb +0 -113
- data/test/mysql_multibyte_test.rb +0 -10
- data/test/mysql_nonstandard_primary_key_test.rb +0 -42
- data/test/mysql_simple_test.rb +0 -49
- data/test/oracle_simple_test.rb +0 -18
- data/test/oracle_specific_test.rb +0 -83
- data/test/pick_rails_version.rb +0 -3
- data/test/postgres_db_create_test.rb +0 -32
- data/test/postgres_drop_db_test.rb +0 -16
- data/test/postgres_mixed_case_test.rb +0 -29
- data/test/postgres_nonseq_pkey_test.rb +0 -38
- data/test/postgres_reserved_test.rb +0 -22
- data/test/postgres_schema_search_path_test.rb +0 -44
- data/test/postgres_simple_test.rb +0 -51
- data/test/postgres_table_alias_length_test.rb +0 -15
- data/test/simple.rb +0 -546
- data/test/sqlite3_simple_test.rb +0 -233
- data/test/sybase_jtds_simple_test.rb +0 -28
|
@@ -10,6 +10,6 @@ class JdbcGenerator < Rails::Generator::Base
|
|
|
10
10
|
|
|
11
11
|
protected
|
|
12
12
|
def banner
|
|
13
|
-
"Usage: #{$0} jdbc\nGenerate JDBC bootstrapping files for your Rails application."
|
|
13
|
+
"Usage: #{$0} jdbc\nGenerate JDBC bootstrapping files for your Rails (2.x) application."
|
|
14
14
|
end
|
|
15
15
|
end
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
# This file was generated by the "jdbc" generator, which is provided
|
|
2
|
-
#
|
|
1
|
+
# This file was generated by the "jdbc" generator, which is provided by the
|
|
2
|
+
# activerecord-jdbc-adapter gem.
|
|
3
3
|
#
|
|
4
|
-
# This file allows the JDBC
|
|
5
|
-
#
|
|
6
|
-
#
|
|
4
|
+
# This file allows the JDBC adapters to be hooked into ActiveRecord such that
|
|
5
|
+
# you don't have to change anything else in your Rails application.
|
|
6
|
+
#
|
|
7
|
+
# NOTE: This is only needed on Rails 2.x - without Bundler since when you're
|
|
8
|
+
# using Bundler than `gem 'activerecord-jdbc-adapter'` will automatically
|
|
9
|
+
# `require 'arjdbc'` by default (unless you set it to `require: false`).
|
|
7
10
|
require 'arjdbc' if defined?(JRUBY_VERSION)
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
# This file was generated by the "jdbc" generator, which is provided
|
|
2
|
-
#
|
|
1
|
+
# This file was generated by the "jdbc" generator, which is provided by the
|
|
2
|
+
# activerecord-jdbc-adapter gem.
|
|
3
3
|
#
|
|
4
|
-
# This file allows you to use Rails' various db:* tasks with JDBC.
|
|
4
|
+
# This file allows you to use Rails' various db:* tasks with the JDBC adapters.
|
|
5
|
+
#
|
|
6
|
+
# NOTE: Only needed on Rails 2.x and it's fine to delete this file otherwise,
|
|
7
|
+
# since on Rails 3.x AR-JDBC provides a Railtie that loads the Rake tasks.
|
|
5
8
|
if defined?(JRUBY_VERSION)
|
|
6
9
|
require 'arjdbc'
|
|
7
|
-
require 'arjdbc/
|
|
10
|
+
require 'arjdbc/tasks'
|
|
8
11
|
end
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
namespace :'tomcat-jndi' do # contains a FS JNDI impl (for tests)
|
|
2
|
+
|
|
3
|
+
TOMCAT_MAVEN_REPO = 'http://repo2.maven.org/maven2/org/apache/tomcat'
|
|
4
|
+
TOMCAT_VERSION = '7.0.54'
|
|
5
|
+
|
|
6
|
+
DOWNLOAD_DIR = File.expand_path('../test/jars', File.dirname(__FILE__))
|
|
7
|
+
|
|
8
|
+
#tomcat_jar = "tomcat-embed-core.jar"
|
|
9
|
+
#tomcat_uri = "#{TOMCAT_MAVEN_REPO}/embed/tomcat-embed-core/#{TOMCAT_VERSION}/tomcat-embed-core-#{TOMCAT_VERSION}.jar"
|
|
10
|
+
|
|
11
|
+
catalina_jar = "tomcat-catalina.jar"
|
|
12
|
+
catalina_uri = "#{TOMCAT_MAVEN_REPO}/tomcat-catalina/#{TOMCAT_VERSION}/tomcat-catalina-#{TOMCAT_VERSION}.jar"
|
|
13
|
+
|
|
14
|
+
juli_jar = "tomcat-juli.jar"
|
|
15
|
+
juli_uri = "#{TOMCAT_MAVEN_REPO}/tomcat-juli/#{TOMCAT_VERSION}/tomcat-juli-#{TOMCAT_VERSION}.jar"
|
|
16
|
+
|
|
17
|
+
task :download do
|
|
18
|
+
require 'open-uri'; require 'tmpdir'
|
|
19
|
+
|
|
20
|
+
temp_dir = File.join(Dir.tmpdir, (Time.now.to_f * 1000).to_i.to_s)
|
|
21
|
+
FileUtils.mkdir temp_dir
|
|
22
|
+
|
|
23
|
+
downloads = Hash.new
|
|
24
|
+
downloads[juli_jar] = juli_uri
|
|
25
|
+
downloads[catalina_jar] = catalina_uri
|
|
26
|
+
|
|
27
|
+
Dir.chdir(temp_dir) do
|
|
28
|
+
FileUtils.mkdir DOWNLOAD_DIR unless File.exist?(DOWNLOAD_DIR)
|
|
29
|
+
downloads.each do |jar, uri|
|
|
30
|
+
puts "downloading #{uri}"
|
|
31
|
+
file = open(uri)
|
|
32
|
+
FileUtils.cp file.path, File.join(DOWNLOAD_DIR, jar)
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
FileUtils.rm_r temp_dir
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
task :check do
|
|
40
|
+
jar_path = File.join(DOWNLOAD_DIR, catalina_jar)
|
|
41
|
+
unless File.exist?(jar_path)
|
|
42
|
+
Rake::Task['tomcat-jndi:download'].invoke
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
task :clear do
|
|
47
|
+
jar_path = File.join(DOWNLOAD_DIR, catalina_jar)
|
|
48
|
+
rm jar_path if File.exist?(jar_path)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
end
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
|
|
2
|
+
test_tasks = [ 'test_mysql', 'test_sqlite3', 'test_postgresql_with_hint' ]
|
|
3
|
+
if defined?(JRUBY_VERSION)
|
|
4
|
+
test_tasks.push :test_derby, :test_hsqldb, :test_h2
|
|
5
|
+
test_tasks.push :test_jndi, :test_jdbc
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
desc "Run \"most\" available test_xxx tasks"
|
|
9
|
+
task :test => test_tasks
|
|
10
|
+
|
|
11
|
+
task 'test_postgresql_with_hint' do
|
|
12
|
+
require File.expand_path('../../test/shared_helper', __FILE__)
|
|
13
|
+
if PostgresHelper.have_postgres?(false)
|
|
14
|
+
Rake::Task['test_postgresql'].invoke
|
|
15
|
+
else
|
|
16
|
+
puts "NOTE: won't run test_postgresql"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
Rake::TestTask.class_eval { attr_reader :test_files }
|
|
21
|
+
|
|
22
|
+
def test_task_for(adapter, options = {})
|
|
23
|
+
desc = options[:desc] || options[:comment] || "Run tests against #{options[:database_name] || adapter}"
|
|
24
|
+
adapter = adapter.to_s.downcase
|
|
25
|
+
driver = adapter if ( driver = options[:driver] ).nil?
|
|
26
|
+
prereqs = options[:prereqs] || []
|
|
27
|
+
unless prereqs.frozen?
|
|
28
|
+
prereqs = [ prereqs ].flatten; # prereqs << 'test_appraisal_hint'
|
|
29
|
+
end
|
|
30
|
+
name = options[:name] || "test_#{adapter}"
|
|
31
|
+
test_task = Rake::TestTask.new(name => prereqs) do |test_task|
|
|
32
|
+
files = options[:files] || begin
|
|
33
|
+
FileList["test/#{adapter}*_test.rb"] + FileList["test/db/#{adapter}/**/*_test.rb"]
|
|
34
|
+
end
|
|
35
|
+
test_task.test_files = files
|
|
36
|
+
test_task.libs = []
|
|
37
|
+
if defined?(JRUBY_VERSION)
|
|
38
|
+
test_task.libs << 'lib'
|
|
39
|
+
test_task.libs << "jdbc-#{driver}/lib" if driver && File.exists?("jdbc-#{driver}/lib")
|
|
40
|
+
test_task.libs.push *FileList["activerecord-jdbc#{adapter}*/lib"]
|
|
41
|
+
end
|
|
42
|
+
test_task.libs << 'test'
|
|
43
|
+
test_task.options = '--use-color=t'
|
|
44
|
+
test_task.verbose = true if $VERBOSE
|
|
45
|
+
yield(test_task) if block_given?
|
|
46
|
+
end
|
|
47
|
+
task = Rake::Task[name]
|
|
48
|
+
# reset the description set-up by Rake::TestTask :
|
|
49
|
+
if task.instance_variable_defined? :@full_comment
|
|
50
|
+
task.instance_variable_set(:@full_comment, nil)
|
|
51
|
+
else
|
|
52
|
+
task.instance_variable_get(:@comments).clear
|
|
53
|
+
end
|
|
54
|
+
task.add_description(desc)
|
|
55
|
+
test_task
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
test_task_for :Derby, :desc => 'Run tests against (embedded) DerbyDB'
|
|
59
|
+
test_task_for :H2, :desc => 'Run tests against H2 database engine'
|
|
60
|
+
test_task_for :HSQLDB, :desc => 'Run tests against HyperSQL (Java) database'
|
|
61
|
+
test_task_for :MSSQL, :driver => :jtds, :database_name => 'MS-SQL (SQLServer)'
|
|
62
|
+
test_task_for :MySQL #, :prereqs => 'db:mysql'
|
|
63
|
+
task :test_mysql2 => :test_mysql
|
|
64
|
+
test_task_for :PostgreSQL, :driver => ENV['JDBC_POSTGRES_VERSION'] || 'postgres' #, :prereqs => 'db:postgresql'
|
|
65
|
+
task :test_postgres => :test_postgresql # alias
|
|
66
|
+
test_task_for :SQLite3, :driver => ENV['JDBC_SQLITE_VERSION']
|
|
67
|
+
task :test_sqlite => :test_sqlite3 # alias
|
|
68
|
+
test_task_for :Firebird
|
|
69
|
+
|
|
70
|
+
test_task_for :MariaDB, :files => FileList["test/db/mysql/*_test.rb"] do |test_task| #, :prereqs => 'db:mysql'
|
|
71
|
+
test_task.ruby_opts << '-rdb/mariadb_config'
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# ensure driver for these DBs is on your class-path
|
|
75
|
+
[ :Oracle, :DB2, :Informix, :CacheDB ].each do |adapter|
|
|
76
|
+
test_task_for adapter, :desc => "Run tests against #{adapter} (ensure driver is on class-path)"
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
#test_task_for :MSSQL, :name => 'test_sqlserver', :driver => nil, :database_name => 'MS-SQL using SQLJDBC'
|
|
80
|
+
|
|
81
|
+
test_task_for :AS400, :desc => "Run tests against AS400 (DB2) (ensure driver is on class-path)",
|
|
82
|
+
:files => FileList["test/db2*_test.rb"] + FileList["test/db/db2/*_test.rb"]
|
|
83
|
+
|
|
84
|
+
#task :test_jdbc => [ :test_jdbc_mysql, :test_jdbc_derby ] if defined?(JRUBY_VERSION)
|
|
85
|
+
|
|
86
|
+
test_task_for 'JDBC', :desc => 'Run tests against plain JDBC adapter (uses MySQL and Derby)',
|
|
87
|
+
:prereqs => [ 'db:mysql' ], :files => FileList['test/*jdbc_*test.rb'] do |test_task|
|
|
88
|
+
test_task.libs << 'jdbc-mysql/lib' << 'jdbc-derby/lib'
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
# TODO since Derby AR 5.x support is not implemented we only run JNDI with MySQL :
|
|
92
|
+
#task :test_jndi => [ :test_jndi_mysql, :test_jndi_derby ] if defined?(JRUBY_VERSION)
|
|
93
|
+
task :test_jndi => [ :test_jndi_mysql ] if defined?(JRUBY_VERSION)
|
|
94
|
+
|
|
95
|
+
jndi_classpath = [ 'test/jars/tomcat-juli.jar', 'test/jars/tomcat-catalina.jar' ]
|
|
96
|
+
|
|
97
|
+
jndi_classpath.each do |jar_path|
|
|
98
|
+
file(jar_path) { Rake::Task['tomcat-jndi:download'].invoke }
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
get_jndi_classpath_opt = lambda do
|
|
102
|
+
cp = jndi_classpath.map { |jar_path| File.expand_path("../#{jar_path}", File.dirname(__FILE__)) }
|
|
103
|
+
"-J-cp \"#{cp.join(File::PATH_SEPARATOR)}\""
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
test_task_for 'JNDI_Derby', :desc => 'Run tests against a Derby JNDI connection',
|
|
107
|
+
:prereqs => jndi_classpath, :files => FileList['test/*jndi_derby*test.rb'] do |test_task|
|
|
108
|
+
test_task.libs << 'jdbc-derby/lib'
|
|
109
|
+
test_task.ruby_opts << get_jndi_classpath_opt.call
|
|
110
|
+
#test_task.verbose = true
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
test_task_for 'JNDI_MySQL', :desc => 'Run tests against a MySQL JNDI connection',
|
|
114
|
+
:prereqs => [ 'db:mysql' ] + jndi_classpath, :files => FileList['test/*jndi_mysql*test.rb'] do |test_task|
|
|
115
|
+
test_task.libs << 'jdbc-mysql/lib'
|
|
116
|
+
test_task.ruby_opts << get_jndi_classpath_opt.call
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
test_task_for :MySQL, :name => 'test_jdbc_mysql',
|
|
120
|
+
:prereqs => 'db:mysql', :database_name => 'MySQL (using adapter: jdbc)' do |test_task|
|
|
121
|
+
test_task.ruby_opts << '-rdb/jdbc_mysql' # replaces require 'db/mysql'
|
|
122
|
+
end
|
|
123
|
+
test_task_for :PostgreSQL, :name => 'test_jdbc_postgresql', :driver => 'postgres',
|
|
124
|
+
:prereqs => 'db:postgresql', :database_name => 'PostgreSQL (using adapter: jdbc)' do |test_task|
|
|
125
|
+
test_task.ruby_opts << '-rdb/jdbc_postgres' # replaces require 'db/postgres'
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
# NOTE: Sybase testing is currently broken, please fix it if you're on Sybase :
|
|
129
|
+
#test_task_for :Sybase, :desc => "Run tests against Sybase (using jTDS driver)"
|
|
130
|
+
#task :test_sybase_jtds => :test_sybase # alias
|
|
131
|
+
#test_task_for :Sybase, :name => 'sybase_jconnect',
|
|
132
|
+
# :desc => "Run tests against Sybase (ensure jConnect driver is on class-path)"
|
data/rakelib/compile.rake
CHANGED
|
@@ -1,25 +1,70 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
jar_file = File.join(*%w(lib arjdbc jdbc adapter_java.jar))
|
|
2
|
+
begin
|
|
3
|
+
require 'ant'
|
|
4
|
+
directory classes = "pkg/classes"
|
|
5
|
+
CLEAN << classes
|
|
6
|
+
|
|
7
|
+
driver_jars = []
|
|
8
|
+
# PostgreSQL driver :
|
|
9
|
+
driver_jars << Dir.glob("jdbc-postgres/lib/*.jar").sort.last
|
|
10
|
+
|
|
11
|
+
file jar_file => FileList['src/java/**/*.java', 'pkg/classes'] do
|
|
12
|
+
rm_rf FileList["#{classes}/**/*"]
|
|
13
|
+
ant.javac :srcdir => "src/java", :destdir => "pkg/classes",
|
|
14
|
+
:source => "7", :target => "7", :debug => true, :deprecation => true,
|
|
15
|
+
:classpath => "${java.class.path}:${sun.boot.class.path}:#{driver_jars.join(':')}",
|
|
16
|
+
:includeantRuntime => false
|
|
17
|
+
|
|
18
|
+
ant.tstamp do |ts|
|
|
19
|
+
ts.format(:property => 'TODAY', :pattern => 'yyyy-MM-dd HH:mm:ss')
|
|
20
|
+
end
|
|
14
21
|
|
|
15
|
-
|
|
22
|
+
begin
|
|
23
|
+
require 'arjdbc/version'
|
|
24
|
+
rescue LoadError
|
|
25
|
+
path = File.expand_path('../lib', File.dirname(__FILE__))
|
|
26
|
+
unless $LOAD_PATH.include?(path)
|
|
27
|
+
$LOAD_PATH << path; retry
|
|
28
|
+
end
|
|
29
|
+
end
|
|
16
30
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
31
|
+
gem_version = Gem::Version.create(ArJdbc::VERSION)
|
|
32
|
+
if gem_version.segments.last == 'DEV'
|
|
33
|
+
version = gem_version.segments[0...-1] # 1.3.0.DEV -> 1.3.0
|
|
34
|
+
else
|
|
35
|
+
version = gem_version.segments.dup
|
|
36
|
+
end
|
|
37
|
+
version = version.join('.')
|
|
38
|
+
|
|
39
|
+
ant.manifest :file => 'MANIFEST.MF' do |mf|
|
|
40
|
+
mf.attribute :name => 'Built-By', :value => '${user.name}'
|
|
41
|
+
mf.attribute :name => 'Built-Time', :value => '${TODAY}'
|
|
42
|
+
mf.attribute :name => 'Built-Jdk', :value => '${java.version}'
|
|
43
|
+
mf.attribute :name => 'Built-JRuby', :value => JRUBY_VERSION
|
|
44
|
+
|
|
45
|
+
mf.attribute :name => 'Specification-Title', :value => 'ActiveRecord-JDBC'
|
|
46
|
+
mf.attribute :name => 'Specification-Version', :value => '1.3'
|
|
47
|
+
mf.attribute :name => 'Specification-Vendor', :value => 'JRuby'
|
|
48
|
+
mf.attribute :name => 'Implementation-Version', :value => version
|
|
49
|
+
mf.attribute :name => 'Implementation-Vendor', :value => 'The JRuby Team'
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
ant.jar :basedir => "pkg/classes", :includes => "**/*.class",
|
|
53
|
+
:destfile => jar_file, :manifest => 'MANIFEST.MF'
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
desc "Compile the native Java code."
|
|
57
|
+
task :jar => jar_file
|
|
58
|
+
|
|
59
|
+
namespace :jar do
|
|
60
|
+
task :force do
|
|
61
|
+
rm jar_file if File.exist?(jar_file)
|
|
62
|
+
Rake::Task['jar'].invoke
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
rescue LoadError
|
|
67
|
+
task :jar do
|
|
68
|
+
puts "Run 'jar' with JRuby to re-compile the agent extension class"
|
|
69
|
+
end
|
|
24
70
|
end
|
|
25
|
-
file jar_name => :java_compile
|
data/rakelib/db.rake
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
namespace :db do
|
|
2
|
+
|
|
3
|
+
desc "Creates the test database for MySQL"
|
|
4
|
+
task :mysql do
|
|
5
|
+
require File.expand_path('../../test/shared_helper', __FILE__)
|
|
6
|
+
fail "could not create test database: mysql executable not found" unless mysql = which('mysql')
|
|
7
|
+
load 'test/db/mysql_config.rb' # rescue nil
|
|
8
|
+
enc = MYSQL_CONFIG[:encoding] || 'utf8' # 'utf8mb4'
|
|
9
|
+
puts MYSQL_CONFIG.inspect if $VERBOSE
|
|
10
|
+
# DROP USER arjdbc@localhost; __ERROR 1396 (HY000): Operation CREATE USER failed__
|
|
11
|
+
script = sql_script <<-SQL, 'mysql'
|
|
12
|
+
DROP DATABASE IF EXISTS `#{MYSQL_CONFIG[:database]}`;
|
|
13
|
+
CREATE DATABASE `#{MYSQL_CONFIG[:database]}` DEFAULT CHARACTER SET `#{enc}` COLLATE `#{enc}_general_ci`;
|
|
14
|
+
GRANT ALL PRIVILEGES ON `#{MYSQL_CONFIG[:database]}`.* TO #{MYSQL_CONFIG[:username]}@localhost;
|
|
15
|
+
GRANT ALL PRIVILEGES ON `test\_%`.* TO #{MYSQL_CONFIG[:username]}@localhost;
|
|
16
|
+
SET PASSWORD FOR #{MYSQL_CONFIG[:username]}@localhost = PASSWORD('#{MYSQL_CONFIG[:password]}');
|
|
17
|
+
SQL
|
|
18
|
+
params = { '-u' => 'root' }
|
|
19
|
+
if ENV['DATABASE_YML']; require 'yaml'
|
|
20
|
+
params['-p'] = YAML.load(File.new(ENV['DATABASE_YML']))["production"]["password"]
|
|
21
|
+
end
|
|
22
|
+
params['-u'] = ENV['MY_USER'] if ENV['MY_USER']
|
|
23
|
+
params['-p'] = ENV['MY_PASSWORD'] if ENV['MY_PASSWORD']
|
|
24
|
+
puts "Creating MySQL (test) database: #{MYSQL_CONFIG[:database]}"
|
|
25
|
+
sh "cat #{script.path} | #{mysql} -f #{params.map {|k, v| "#{k}#{v}"}.join(' ')}", :verbose => $VERBOSE # so password is not echoed
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
desc "Creates the test database for PostgreSQL"
|
|
29
|
+
task :postgresql do
|
|
30
|
+
require File.expand_path('../../test/shared_helper', __FILE__)
|
|
31
|
+
fail 'could not create test database: psql executable not found' unless psql = which('psql')
|
|
32
|
+
fail 'could not create test database: missing "postgres" role' unless PostgresHelper.postgres_role?
|
|
33
|
+
load 'test/db/postgres_config.rb' # rescue nil
|
|
34
|
+
puts POSTGRES_CONFIG.inspect if $VERBOSE
|
|
35
|
+
script = sql_script <<-SQL, 'psql'
|
|
36
|
+
DROP DATABASE IF EXISTS #{POSTGRES_CONFIG[:database]};
|
|
37
|
+
DROP USER IF EXISTS #{POSTGRES_CONFIG[:username]};
|
|
38
|
+
CREATE USER #{POSTGRES_CONFIG[:username]} CREATEDB SUPERUSER LOGIN PASSWORD '#{POSTGRES_CONFIG[:password]}';
|
|
39
|
+
CREATE DATABASE #{POSTGRES_CONFIG[:database]} OWNER #{POSTGRES_CONFIG[:username]}
|
|
40
|
+
TEMPLATE template0
|
|
41
|
+
ENCODING '#{POSTGRES_CONFIG[:encoding]}' LC_COLLATE '#{POSTGRES_CONFIG[:collate]}' LC_CTYPE '#{POSTGRES_CONFIG[:collate]}';
|
|
42
|
+
SQL
|
|
43
|
+
params = { '-U' => ENV['PSQL_USER'] || 'postgres' }
|
|
44
|
+
params['-q'] = nil unless $VERBOSE
|
|
45
|
+
puts "Creating PostgreSQL (test) database: #{POSTGRES_CONFIG[:database]}"
|
|
46
|
+
sh "cat #{script.path} | #{psql} #{params.to_a.join(' ')}", :verbose => $VERBOSE
|
|
47
|
+
end
|
|
48
|
+
task :postgres => :postgresql
|
|
49
|
+
|
|
50
|
+
private
|
|
51
|
+
|
|
52
|
+
def sql_script(sql_content, name = 'sql_script')
|
|
53
|
+
require 'tempfile'; script = Tempfile.new(name)
|
|
54
|
+
script.puts sql_content
|
|
55
|
+
yield(script) if block_given?
|
|
56
|
+
script.close
|
|
57
|
+
at_exit { script.unlink }
|
|
58
|
+
script
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
end
|
data/rakelib/rails.rake
CHANGED
|
@@ -1,41 +1,216 @@
|
|
|
1
1
|
namespace :rails do
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
2
|
+
|
|
3
|
+
%w(MySQL SQLite3 PostgreSQL).each do |adapter|
|
|
4
|
+
|
|
5
|
+
desc "Run Rails ActiveRecord tests with #{adapter} (JDBC)"
|
|
6
|
+
task "test_#{adapter = adapter.downcase}" do
|
|
7
|
+
puts "Use TESTOPTS=\"--verbose\" to pass --verbose to runners." if ARGV.include? '--verbose'
|
|
8
|
+
|
|
9
|
+
if ENV['RAILS']
|
|
10
|
+
ar_path = File.join(ENV['RAILS'], 'activerecord')
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
unless ar_path && File.exist?(ar_path)
|
|
14
|
+
ar_path = `bundle info --path activerecord`.chomp
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
unless File.exist? ar_test_dir = File.join(ar_path, 'test')
|
|
18
|
+
raise "can not directly load Rails tests;" +
|
|
19
|
+
" try setting a local repository path e.g. export RAILS=`pwd`/../rails"
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
driver = "jdbc-#{ENV['DRIVER'] ? ENV['DRIVER'].downcase : (adapter =~ /postgres/i ? 'postgres' : adapter)}"
|
|
23
|
+
adapter = 'mysql2' if adapter.eql?('mysql')
|
|
24
|
+
|
|
25
|
+
root_dir = File.expand_path('..', File.dirname(__FILE__))
|
|
26
|
+
env = {}
|
|
27
|
+
env['ARCONFIG'] = ENV['ARCONFIG'] || File.join(root_dir, 'test/rails', 'config.yml')
|
|
28
|
+
env['ARCONN'] = adapter
|
|
29
|
+
env['BUNDLE_GEMFILE'] = ENV['BUNDLE_GEMFILE'] || File.join(root_dir, 'Gemfile') # use AR-JDBC's with Rails tests
|
|
30
|
+
env['EXCLUDE_DIR'] = File.join(root_dir, 'test/rails/excludes', adapter) # minitest-excludes
|
|
31
|
+
|
|
32
|
+
libs = [
|
|
33
|
+
File.join(root_dir, 'lib'),
|
|
34
|
+
File.join(root_dir, driver, 'lib'),
|
|
35
|
+
File.join(root_dir, 'test/rails'),
|
|
36
|
+
ar_test_dir
|
|
37
|
+
]
|
|
38
|
+
|
|
39
|
+
test_files_finder = lambda do
|
|
40
|
+
Dir.chdir(ar_path) do # taken from Rails' *activerecord/Rakefile* :
|
|
41
|
+
( Dir.glob("test/cases/**/*_test.rb").reject { |x| x =~ /\/adapters\// } +
|
|
42
|
+
Dir.glob("test/cases/adapters/#{adapter}/**/*_test.rb") )
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
task_stub = Class.new(Rake::TestTask) { def define; end }.new # no-op define
|
|
47
|
+
test_loader_code = task_stub.run_code # :rake test-loader
|
|
48
|
+
|
|
49
|
+
ruby_opts_string = "-I\"#{libs.join(File::PATH_SEPARATOR)}\""
|
|
50
|
+
ruby_opts_string += " -C \"#{ar_path}\""
|
|
51
|
+
ruby_opts_string += " -rbundler/setup"
|
|
52
|
+
ruby_opts_string += " -rminitest -rminitest/excludes" unless ENV['NO_EXCLUDES'].eql?('true')
|
|
53
|
+
file_list = ENV["TEST"] ? FileList[ ENV["TEST"] ] : test_files_finder.call
|
|
54
|
+
file_list_string = file_list.map { |fn| "\"#{fn}\"" }.join(' ')
|
|
55
|
+
# test_loader_code = "-e \"ARGV.each{|f| require f}\"" # :direct
|
|
56
|
+
option_list = ( ENV["TESTOPTS"] || ENV["TESTOPT"] || ENV["TEST_OPTS"] || '' )
|
|
57
|
+
|
|
58
|
+
args = "#{ruby_opts_string} #{test_loader_code} #{file_list_string} #{option_list}"
|
|
59
|
+
env_sh env, "#{FileUtils::RUBY} #{args}" do |ok, status|
|
|
60
|
+
if !ok && status.respond_to?(:signaled?) && status.signaled?
|
|
61
|
+
raise SignalException.new(status.termsig)
|
|
62
|
+
elsif !ok
|
|
63
|
+
fail "Command failed with status (#{status.exitstatus})"
|
|
64
|
+
end
|
|
65
|
+
end
|
|
8
66
|
end
|
|
9
|
-
|
|
67
|
+
task :test_mysql2 => :test_mysql
|
|
68
|
+
|
|
69
|
+
FileUtils.module_eval do
|
|
70
|
+
|
|
71
|
+
def env_sh(env, *cmd, &block)
|
|
72
|
+
options = (Hash === cmd.last) ? cmd.pop : {}
|
|
73
|
+
shell_runner = block_given? ? block : create_shell_runner(cmd)
|
|
74
|
+
set_verbose_option(options)
|
|
75
|
+
options[:noop] ||= Rake::FileUtilsExt.nowrite_flag
|
|
76
|
+
Rake.rake_check_options options, :noop, :verbose
|
|
77
|
+
|
|
78
|
+
cmd = env.map { |k,v| "#{k}=\"#{v}\"" }.join(' ') + ' ' + cmd.join(' ')
|
|
79
|
+
Rake.rake_output_message cmd if options[:verbose]
|
|
80
|
+
|
|
81
|
+
unless options[:noop]
|
|
82
|
+
res = Kernel.system(cmd)
|
|
83
|
+
status = $?
|
|
84
|
+
status = Rake::PseudoStatus.new(1) if !res && status.nil?
|
|
85
|
+
shell_runner.call(res, status)
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def env_system(env, cmd)
|
|
90
|
+
Kernel.system(env.map { |k,v| "#{k}=\"#{v}\"" }.join(' ') + ' ' + cmd)
|
|
91
|
+
end
|
|
10
92
|
|
|
11
|
-
def _driver(n)
|
|
12
|
-
case n
|
|
13
|
-
when /postgres/
|
|
14
|
-
'postgres'
|
|
15
|
-
else
|
|
16
|
-
n
|
|
17
93
|
end
|
|
94
|
+
|
|
18
95
|
end
|
|
19
96
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
97
|
+
namespace :db do
|
|
98
|
+
namespace :mysql do
|
|
99
|
+
desc 'Build the MySQL test databases'
|
|
100
|
+
task :build do
|
|
101
|
+
config = ARTest.config['connections']['mysql2']
|
|
102
|
+
%x( mysql --user=#{config['arunit']['username']} --password=#{config['arunit']['password']} -e "create DATABASE #{config['arunit']['database']} DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci ")
|
|
103
|
+
%x( mysql --user=#{config['arunit2']['username']} --password=#{config['arunit2']['password']} -e "create DATABASE #{config['arunit2']['database']} DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_unicode_ci ")
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
desc 'Drop the MySQL test databases'
|
|
107
|
+
task :drop do
|
|
108
|
+
config = ARTest.config['connections']['mysql2']
|
|
109
|
+
%x( mysqladmin --user=#{config['arunit']['username']} --password=#{config['arunit']['password']} -f drop #{config['arunit']['database']} )
|
|
110
|
+
%x( mysqladmin --user=#{config['arunit2']['username']} --password=#{config['arunit2']['password']} -f drop #{config['arunit2']['database']} )
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
desc 'Rebuild the MySQL test databases'
|
|
114
|
+
task :rebuild => [:drop, :build]
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
namespace :postgresql do
|
|
118
|
+
desc 'Build the PostgreSQL test databases'
|
|
119
|
+
task :build do
|
|
120
|
+
config = ARTest.config['connections']['postgresql']
|
|
121
|
+
%x( createdb -E UTF8 -T template0 #{config['arunit']['database']} )
|
|
122
|
+
%x( createdb -E UTF8 -T template0 #{config['arunit2']['database']} )
|
|
123
|
+
|
|
124
|
+
# prepare hstore
|
|
125
|
+
if %x( createdb --version ).strip.gsub(/(.*)(\d\.\d\.\d)$/, "\\2") < "9.1.0"
|
|
126
|
+
puts "Please prepare hstore data type. See http://www.postgresql.org/docs/current/static/hstore.html"
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
desc 'Drop the PostgreSQL test databases'
|
|
131
|
+
task :drop do
|
|
132
|
+
config = ARTest.config['connections']['postgresql']
|
|
133
|
+
%x( dropdb #{config['arunit']['database']} )
|
|
134
|
+
%x( dropdb #{config['arunit2']['database']} )
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
desc 'Rebuild the PostgreSQL test databases'
|
|
138
|
+
task :rebuild => [:drop, :build]
|
|
26
139
|
end
|
|
27
140
|
end
|
|
28
141
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
142
|
+
# NOTE: we expect to, hopefully, not be using these anymore - delete at WILL!
|
|
143
|
+
namespace :test do
|
|
144
|
+
task :all do
|
|
145
|
+
driver = ENV['DRIVER'] || ENV['ADAPTER']
|
|
146
|
+
raise "need a DRIVER (DRIVER=mysql)" unless driver
|
|
147
|
+
rails_dir = _rails_dir
|
|
148
|
+
ENV['ARCONFIG'] = File.join(_ar_jdbc_dir, 'test', 'rails', 'config.yml')
|
|
149
|
+
|
|
150
|
+
Dir.chdir(File.join(rails_dir, 'activerecord')) do
|
|
151
|
+
sh FileUtils::RUBY, '-S', 'rake',
|
|
152
|
+
"RUBYLIB=#{_ruby_lib(rails_dir, driver)}",
|
|
153
|
+
_target(driver)
|
|
154
|
+
end
|
|
155
|
+
end
|
|
156
|
+
|
|
157
|
+
%w(MySQL SQLite3 Postgres).each do |adapter|
|
|
158
|
+
task adapter.downcase do
|
|
159
|
+
ENV['ADAPTER'] = adapter
|
|
160
|
+
Rake::Task['rails:test:all'].invoke
|
|
161
|
+
end
|
|
162
|
+
|
|
163
|
+
namespace adapter.downcase do
|
|
164
|
+
task "base_test" do
|
|
165
|
+
ENV['TEST'] ||= 'test/cases/base_test.rb'
|
|
166
|
+
ENV['ADAPTER'] = adapter
|
|
167
|
+
Rake::Task['rails:test:all'].invoke
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
private
|
|
173
|
+
|
|
174
|
+
def _ar_jdbc_dir
|
|
175
|
+
@ar_jdbc_dir ||= File.expand_path('..', File.dirname(__FILE__))
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
def _rails_dir
|
|
179
|
+
rails_dir = ENV['RAILS'] || File.join('..', 'rails')
|
|
180
|
+
unless File.directory? rails_dir
|
|
181
|
+
raise "can't find RAILS source at '#{rails_dir}' (maybe set ENV['RAILS'])"
|
|
182
|
+
end
|
|
183
|
+
rails_dir = File.join(rails_dir, '..') if rails_dir =~ /activerecord$/
|
|
184
|
+
File.expand_path(rails_dir)
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
def _ruby_lib(rails_dir, driver)
|
|
188
|
+
ar_jdbc_dir = _ar_jdbc_dir
|
|
189
|
+
|
|
190
|
+
if driver =~ /postgres/i
|
|
191
|
+
adapter, driver = 'postgresql', 'postgres'
|
|
192
|
+
else
|
|
193
|
+
adapter, driver = driver.downcase, adapter
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
[File.join(ar_jdbc_dir, 'lib'),
|
|
197
|
+
File.join(ar_jdbc_dir, 'test', 'rails'),
|
|
198
|
+
File.join(ar_jdbc_dir, "jdbc-#{driver}", 'lib'),
|
|
199
|
+
File.join(ar_jdbc_dir, "activerecord-jdbc#{adapter}-adapter", 'lib'),
|
|
200
|
+
File.expand_path('activesupport/lib', rails_dir),
|
|
201
|
+
File.expand_path('activemodel/lib', rails_dir),
|
|
202
|
+
File.expand_path('activerecord/lib', rails_dir)
|
|
203
|
+
].join(':')
|
|
39
204
|
end
|
|
205
|
+
|
|
206
|
+
def _target(name)
|
|
207
|
+
case name
|
|
208
|
+
when /postgres/i
|
|
209
|
+
'test_postgresql'
|
|
210
|
+
else
|
|
211
|
+
"test_jdbc#{name.downcase}"
|
|
212
|
+
end
|
|
213
|
+
end
|
|
214
|
+
|
|
40
215
|
end
|
|
41
216
|
end
|