From ea80f3ebffa47197964a6a94250e61bd554a87a2 Mon Sep 17 00:00:00 2001 From: David Butler Date: Wed, 19 Dec 2012 23:56:35 -0800 Subject: [PATCH] Added JRuby compatibility * Added skipping MRI/YARV gems on JRuby in .gemspec * Added JRuby specific gems into Gemfile * Added skipping Curb tests on JRuby * Added `jruby-19mode` into Travis-CI matrix Closes #555 --- .travis.yml | 1 + Gemfile | 13 +++++++++++++ test/test_helper.rb | 13 ++++++++++++- test/unit/http_client_test.rb | 35 +++++++++++++++++++---------------- tire.gemspec | 15 +++++++++------ 5 files changed, 54 insertions(+), 23 deletions(-) diff --git a/.travis.yml b/.travis.yml index 9e7e85ac..c9dfe364 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,6 +8,7 @@ rvm: - 1.9.3 - 1.8.7 - ree + - jruby-19mode env: - TEST_COMMAND="rake test:unit" diff --git a/Gemfile b/Gemfile index 1dec5308..c008f6f9 100644 --- a/Gemfile +++ b/Gemfile @@ -2,3 +2,16 @@ source "http://rubygems.org" # Specify your gem's dependencies in tire.gemspec gemspec + +unless defined?(RUBY_VERSION) && RUBY_VERSION < '1.9' + gem "turn", "~> 0.9" +end + +platform :jruby do + gem "jdbc-sqlite3" + gem "activerecord-jdbcsqlite3-adapter" + + if defined?(RUBY_VERSION) && RUBY_VERSION < '1.9' + gem "json" + end +end \ No newline at end of file diff --git a/test/test_helper.rb b/test/test_helper.rb index d170a3ed..43410812 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -6,13 +6,24 @@ require 'pathname' require 'test/unit' +JRUBY = defined?(JRUBY_VERSION) + if ENV['JSON_LIBRARY'] puts "Using '#{ENV['JSON_LIBRARY']}' JSON library" require ENV['JSON_LIBRARY'] +elsif JRUBY + require 'json' else require 'yajl/json_gem' end -require 'sqlite3' + +if JRUBY + require 'jdbc/sqlite3' + require 'active_record' + require 'active_record/connection_adapters/jdbcsqlite3_adapter' +else + require 'sqlite3' +end require 'shoulda' require 'turn/autorun' unless ENV["TM_FILEPATH"] || defined?(RUBY_VERSION) && RUBY_VERSION < '1.9' diff --git a/test/unit/http_client_test.rb b/test/unit/http_client_test.rb index 149334ef..2f6fee7c 100644 --- a/test/unit/http_client_test.rb +++ b/test/unit/http_client_test.rb @@ -1,5 +1,4 @@ require 'test_helper' -require 'tire/http/clients/curb' module Tire module HTTP @@ -46,27 +45,31 @@ class ClientTest < Test::Unit::TestCase end - context "Curb" do - setup do - Configuration.client Client::Curb - end + if defined?(Curl) + require 'tire/http/clients/curb' + + context "Curb" do + setup do + Configuration.client Client::Curb + end - teardown do - Configuration.client Client::RestClient - end + teardown do + Configuration.client Client::RestClient + end - should "use POST method if request body passed" do - ::Curl::Easy.any_instance.expects(:http_post) + should "use POST method if request body passed" do + ::Curl::Easy.any_instance.expects(:http_post) - response = Configuration.client.get "http://localhost:3000", '{ "query_string" : { "query" : "apple" }}' - end + response = Configuration.client.get "http://localhost:3000", '{ "query_string" : { "query" : "apple" }}' + end - should "use GET method if request body is nil" do - ::Curl::Easy.any_instance.expects(:http_get) + should "use GET method if request body is nil" do + ::Curl::Easy.any_instance.expects(:http_get) - response = Configuration.client.get "http://localhost:9200/articles/article/1" - end + response = Configuration.client.get "http://localhost:9200/articles/article/1" + end + end end diff --git a/tire.gemspec b/tire.gemspec index f2c05707..2091932a 100644 --- a/tire.gemspec +++ b/tire.gemspec @@ -35,18 +35,21 @@ Gem::Specification.new do |s| # = Development dependencies # s.add_development_dependency "bundler", "~> 1.0" - s.add_development_dependency "yajl-ruby", "~> 1.0" s.add_development_dependency "shoulda" s.add_development_dependency "mocha" s.add_development_dependency "minitest", "~> 2.12" s.add_development_dependency "activerecord", ">= 3.0" - s.add_development_dependency "sqlite3" s.add_development_dependency "mongoid", "~> 2.2" - s.add_development_dependency "bson_ext" s.add_development_dependency "redis-persistence" - s.add_development_dependency "curb" - s.add_development_dependency "oj" - s.add_development_dependency "turn", "~> 0.9" if defined?(RUBY_VERSION) && RUBY_VERSION > '1.9' + s.add_development_dependency "faraday" + + unless defined?(JRUBY_VERSION) + s.add_development_dependency "yajl-ruby", "~> 1.0" + s.add_development_dependency "sqlite3" + s.add_development_dependency "bson_ext" + s.add_development_dependency "curb" + s.add_development_dependency "oj" + end s.description = <<-DESC Tire is a Ruby client for the ElasticSearch search engine/database.