From 3e72def10a270cf7e0666440652d5b7dfd8d5011 Mon Sep 17 00:00:00 2001 From: "R. Tyler Croy" Date: Tue, 8 Jan 2013 22:36:33 -0800 Subject: [PATCH] Refactor the sauce-connect code out into a separate sauce-connect.gem This bumps the minor version across all gems to 2.3, due to the change in the dependency structure. Chances are this isn't going to affect many folks, or at least not enough to where I feel comfortable with a jump to 3.x Fixes #102 --- Rakefile | 2 +- bin/sauce | 8 ++++++-- gems/sauce-connect/lib/sauce-connect.rb | 7 ------- gems/sauce-connect/lib/sauce-connect/version.rb | 5 ----- {lib => gems/sauce-connect/lib}/sauce/connect.rb | 2 +- gems/sauce-connect/sauce-connect.gemspec | 15 +++++++-------- lib/sauce.rb | 1 - lib/sauce/capybara.rb | 8 +++++++- lib/sauce/version.rb | 2 +- sauce.gemspec | 4 ++-- spec/integration/connect_integration_spec.rb | 4 +++- spec/sauce/capybara_spec.rb | 1 + spec/spec_helper.rb | 8 +++++--- 13 files changed, 34 insertions(+), 33 deletions(-) delete mode 100644 gems/sauce-connect/lib/sauce-connect.rb delete mode 100644 gems/sauce-connect/lib/sauce-connect/version.rb rename {lib => gems/sauce-connect/lib}/sauce/connect.rb (96%) diff --git a/Rakefile b/Rakefile index 6c0840f..3c2e0a5 100644 --- a/Rakefile +++ b/Rakefile @@ -76,7 +76,7 @@ Rake::RDocTask.new do |rdoc| rdoc.rdoc_files.include('lib/**/*.rb') end -GEMS = ['sauce-jasmine', 'sauce-cucumber'] +GEMS = ['sauce-jasmine', 'sauce-cucumber', 'sauce-connect'] def gem_kind(name) name.split('-')[1] diff --git a/bin/sauce b/bin/sauce index e5fe64d..148d7cf 100755 --- a/bin/sauce +++ b/bin/sauce @@ -1,5 +1,4 @@ #!/usr/bin/env ruby - require 'rubygems' require 'cmdparse' require 'yaml' @@ -26,7 +25,12 @@ end connect = ConnectCommand.new('connect', false) connect.short_desc = 'Connect a Sauce Connect tunnel' connect.set_execution_block do |args| - require 'sauce/connect' + begin + require 'sauce/connect' + rescue LoadError + puts "Please install the sauce-connect gem (`gem install sauce-connect`) in order to use Sauce Connect" + exit 1 + end require 'sauce/config' config = Sauce::Config.new command = "#{Sauce::Connect.connect_command} #{config.username} #{config.access_key} #{ARGV[1 .. -1]}" diff --git a/gems/sauce-connect/lib/sauce-connect.rb b/gems/sauce-connect/lib/sauce-connect.rb deleted file mode 100644 index 91e36c2..0000000 --- a/gems/sauce-connect/lib/sauce-connect.rb +++ /dev/null @@ -1,7 +0,0 @@ -require "sauce-connect/version" - -module Sauce - module Connect - # Your code goes here... - end -end diff --git a/gems/sauce-connect/lib/sauce-connect/version.rb b/gems/sauce-connect/lib/sauce-connect/version.rb deleted file mode 100644 index cc78a79..0000000 --- a/gems/sauce-connect/lib/sauce-connect/version.rb +++ /dev/null @@ -1,5 +0,0 @@ -module Sauce - module Connect - VERSION = "0.0.1" - end -end diff --git a/lib/sauce/connect.rb b/gems/sauce-connect/lib/sauce/connect.rb similarity index 96% rename from lib/sauce/connect.rb rename to gems/sauce-connect/lib/sauce/connect.rb index 33d8820..c7456d9 100644 --- a/lib/sauce/connect.rb +++ b/gems/sauce-connect/lib/sauce/connect.rb @@ -82,7 +82,7 @@ module Sauce end def self.find_sauce_connect - File.expand_path(File.dirname(__FILE__) + '/../../support/Sauce-Connect.jar') + File.expand_path(File.dirname(__FILE__) + '/../../../../support/Sauce-Connect.jar') end def self.connect_command diff --git a/gems/sauce-connect/sauce-connect.gemspec b/gems/sauce-connect/sauce-connect.gemspec index cf1f4fa..4926983 100644 --- a/gems/sauce-connect/sauce-connect.gemspec +++ b/gems/sauce-connect/sauce-connect.gemspec @@ -1,19 +1,18 @@ # -*- encoding: utf-8 -*- -lib = File.expand_path('../lib', __FILE__) -$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib) -require 'sauce-connect/version' - +require File.expand_path(File.dirname(__FILE__) + '/../../lib/sauce/version') Gem::Specification.new do |gem| gem.name = "sauce-connect" - gem.version = Sauce::Connect::VERSION + gem.version = "#{Sauce::MAJOR_VERSION}.0" gem.authors = ["R. Tyler Croy"] gem.email = ["tyler@monkeypox.org"] - gem.description = %q{TODO: Write a gem description} - gem.summary = %q{TODO: Write a gem summary} + gem.description = "" + gem.summary = "" gem.homepage = "" - gem.files = `git ls-files`.split($/) + gem.files = Dir['lib/**/*.rb'] + ['../../support/Sauce-Connect.jar'] gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) } gem.test_files = gem.files.grep(%r{^(test|spec|features)/}) gem.require_paths = ["lib"] + + gem.add_dependency('sauce', "~> #{Sauce::MAJOR_VERSION}.0") end diff --git a/lib/sauce.rb b/lib/sauce.rb index 92c03d4..9682a57 100644 --- a/lib/sauce.rb +++ b/lib/sauce.rb @@ -5,4 +5,3 @@ require 'sauce/client' require 'sauce/config' require 'sauce/selenium' require 'sauce/integrations' -require 'sauce/connect' diff --git a/lib/sauce/capybara.rb b/lib/sauce/capybara.rb index 5e36fc1..8fa9c4c 100644 --- a/lib/sauce/capybara.rb +++ b/lib/sauce/capybara.rb @@ -1,7 +1,6 @@ require 'capybara' require 'sauce/config' -require 'sauce/connect' require 'sauce/selenium' @@ -10,6 +9,13 @@ $sauce_tunnel = nil module Sauce module Capybara def connect_tunnel(options={}) + begin + require 'sauce/connect' + rescue LoadError + puts 'Please install the `sauce-connect` gem if you intend on using Sauce Connect with your tests!' + raise + end + unless $sauce_tunnel.nil? return $sauce_tunnel end diff --git a/lib/sauce/version.rb b/lib/sauce/version.rb index ba0a083..fe37489 100644 --- a/lib/sauce/version.rb +++ b/lib/sauce/version.rb @@ -1,4 +1,4 @@ module Sauce - MAJOR_VERSION = '2.2' + MAJOR_VERSION = '2.3' end diff --git a/sauce.gemspec b/sauce.gemspec index ddd748d..ee65969 100644 --- a/sauce.gemspec +++ b/sauce.gemspec @@ -10,11 +10,11 @@ Gem::Specification.new do |s| s.summary = "A Ruby helper for running tests in Sauce OnDemand" s.description = "A Ruby helper for running tests in Sauce OnDemand, Sauce Labs' browsers in the cloud service" # Include pretty much everything in Git except the examples/ directory - s.files = `git ls-files`.split("\n").collect { |f| f unless f.include? 'examples' }.compact + s.files = Dir['lib/**/*.rb'] s.executables = ['sauce'] s.default_executable = 'sauce' s.require_paths = ["lib"] - s.test_files = Dir['test/*.rb'] + s.test_files = Dir['spec/**/*.rb'] s.add_dependency('net-http-persistent') s.add_dependency('capybara', '~> 1.0') diff --git a/spec/integration/connect_integration_spec.rb b/spec/integration/connect_integration_spec.rb index 1557dbd..ccb2025 100644 --- a/spec/integration/connect_integration_spec.rb +++ b/spec/integration/connect_integration_spec.rb @@ -1,4 +1,6 @@ -require File.expand_path(File.dirname(__FILE__) + '/../spec_helper') +require 'spec_helper' +require 'sauce/connect' + describe 'Sauce::Connect integration testing' do diff --git a/spec/sauce/capybara_spec.rb b/spec/sauce/capybara_spec.rb index 2dafb68..0a08e5d 100644 --- a/spec/sauce/capybara_spec.rb +++ b/spec/sauce/capybara_spec.rb @@ -1,5 +1,6 @@ require 'spec_helper' require 'sauce/capybara' +require 'sauce/connect' describe Sauce::Capybara do describe '#connect_tunnel' do diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index b2f86d7..e36fd1d 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,6 +1,8 @@ -$:.unshift File.expand_path(File.dirname(__FILE__) + '/../lib') -$:.unshift File.expand_path(File.dirname(__FILE__) + '/../gems/sauce-jasmine/lib') -$:.unshift File.expand_path(File.dirname(__FILE__) + '/../gems/sauce-cucumber/lib') +$LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__) + '/../lib') + +['sauce-jasmine', 'sauce-cucumber', 'sauce-connect'].each do |gem| + $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + "/../gems/#{gem}/lib")) +end require 'sauce'