From d8aaf6168a941e5094233964d88e87fc20a2304c Mon Sep 17 00:00:00 2001
From: Thu Trang Pham <thuutrangpham@gmail.com>
Date: Fri, 6 Mar 2015 14:10:08 -0500
Subject: [PATCH] Trying to get the database tests to run on travis-ci

---
 .travis.yml         |  5 +++++
 Gemfile             |  4 +++-
 Rakefile            | 19 +------------------
 test/database.yml   |  2 +-
 test/test_helper.rb | 15 +++++++++------
 5 files changed, 19 insertions(+), 26 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index 89716418..943ff7d0 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,4 +1,9 @@
 language: ruby
+env:
+  - DB=
+  - DB=sqlite
+  - DB=postgres
+  - DB=mysql
 rvm:
   - 1.9.3
   - 2.0.0
diff --git a/Gemfile b/Gemfile
index ab421abe..eb405d93 100644
--- a/Gemfile
+++ b/Gemfile
@@ -23,13 +23,15 @@ group :development, :test do
 end
 
 group :test do
+  gem 'sqlite3', :platform => [:ruby, :mswin, :mingw]
+
   platforms :ruby do
     gem 'pg'
-    gem 'sqlite3'
     gem 'mysql2'
   end
 
   platforms :jruby do
+    gem 'jdbc-sqlite3'
     gem 'activerecord-jdbcpostgresql-adapter'
   end
 end
diff --git a/Rakefile b/Rakefile
index 2ee05cce..52ae639e 100644
--- a/Rakefile
+++ b/Rakefile
@@ -9,23 +9,6 @@ def config
 end
 
 namespace :db do
-  require 'active_record'
-  desc 'Migrate the database through scripts in test/db/migrate.'
-  task :migrate => :environment do
-    version = ENV['VERSION'] ? ENV['VERSION'].to_i : nil
-    ActiveRecord::Migrator.migrate('test/db/migrate', version)
-  end
-
-  task :environment do
-    require 'logger'
-    ActiveRecord::Base.logger = Logger.new(STDOUT)
-    ActiveRecord::Base.configurations = config
-    # Establish a database connection
-    db_name = ENV['DB'] || 'sqlite'
-    ActiveRecord::Base.establish_connection(db_name)
-    ActiveRecord::Base.default_timezone = :utc
-  end
-
   task :create do
     if ACCEPTED_DB_VALUES.include? ENV['DB']
       Rake::Task["db:#{ENV['DB']}:create"].invoke
@@ -38,7 +21,7 @@ namespace :db do
     end
   end
 
-  task :reset => [:drop, :create, :migrate]
+  task :reset => [:drop, :create]
 
   namespace :mysql do
     desc 'Create the MySQL test databases'
diff --git a/test/database.yml b/test/database.yml
index 8c1d3bb3..63232ed5 100644
--- a/test/database.yml
+++ b/test/database.yml
@@ -1,7 +1,7 @@
 # test/database.yml
 sqlite:
   adapter: sqlite3
-  database: "test/geocoder_test.sqlite"
+  database: ":memory:"
   timeout: 500
 mysql:
   adapter: mysql2
diff --git a/test/test_helper.rb b/test/test_helper.rb
index 441bab14..6a048dad 100644
--- a/test/test_helper.rb
+++ b/test/test_helper.rb
@@ -4,17 +4,20 @@ require 'test/unit'
 $LOAD_PATH.unshift(File.dirname(__FILE__))
 $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
 
-if ENV['DB']
-  require 'rails'
+require 'yaml'
+configs = YAML.load_file('test/database.yml')
+
+if configs.keys.include? ENV['DB']
   require 'active_record'
 
   # Establish a database connection
-  configs = YAML.load_file('test/database.yml')
   ActiveRecord::Base.configurations = configs
 
   db_name = ENV['DB']
   ActiveRecord::Base.establish_connection(db_name)
   ActiveRecord::Base.default_timezone = :utc
+
+  ActiveRecord::Migrator.migrate('test/db/migrate', nil)
 else
   class MysqlConnection
     def adapter_name
@@ -69,10 +72,10 @@ else
       end
     end
   end
+end
 
-  # simulate Rails module so Railtie gets loaded
-  module Rails
-  end
+# simulate Rails module so Railtie gets loaded
+module Rails
 end
 
 # Require Geocoder after ActiveRecord simulator.
-- 
GitLab