sauce 0.13.2 → 0.14.0

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.13.2
1
+ 0.14.0
data/lib/sauce.rb CHANGED
@@ -7,3 +7,28 @@ require 'sauce/config'
7
7
  require 'sauce/selenium'
8
8
  require 'sauce/integrations'
9
9
  require 'sauce/connect'
10
+
11
+ module Sauce
12
+ @@cached_sessions = {}
13
+
14
+ def self.cached_session(opts)
15
+ @@cached_sessions[opts] or new_session(opts)
16
+ end
17
+
18
+ private
19
+
20
+ def self.new_session(opts)
21
+ session = nil
22
+ if Sauce::Config.new.local?
23
+ session = ::Selenium::Client::Driver.new(opts)
24
+ else
25
+ session = Sauce::Selenium.new(opts)
26
+ end
27
+ at_exit do
28
+ session.stop
29
+ end
30
+ session.start
31
+ @@cached_sessions[opts] = session
32
+ return session
33
+ end
34
+ end
data/lib/sauce/config.rb CHANGED
@@ -45,6 +45,8 @@ module Sauce
45
45
  if meth.to_s =~ /(.*)=$/
46
46
  @opts[$1.to_sym] = args[0]
47
47
  return args[0]
48
+ elsif meth.to_s =~ /(.*)\?$/
49
+ return @opts[$1.to_sym]
48
50
  else
49
51
  return @opts[meth]
50
52
  end
@@ -232,29 +232,40 @@ if defined?(ActiveSupport::TestCase)
232
232
  unless my_name =~ /^default_test/
233
233
  config = Sauce::Config.new
234
234
  config.browsers.each do |os, browser, version|
235
- if config.local?
236
- @browser = ::Selenium::Client::Driver.new(:host => "127.0.0.1",
237
- :port => 4444,
238
- :browser => "*" + browser,
239
- :url => "http://127.0.0.1:#{config.local_application_port}/")
235
+ if config.single_session?
236
+ if config.local?
237
+ @browser = Sauce.cached_session(:host => "127.0.0.1", :port => 4444, :browser => "*" +
238
+ browser, :url => "http://127.0.0.1:#{config.local_application_port}/")
239
+ else
240
+ @browser = Sauce.cached_session({:os => os, :browser => browser, :browser_version => version,
241
+ :job_name => "#{Rails.root.split[1].to_s} test suite"})
242
+ end
243
+ super(*args, &blk)
240
244
  else
241
- @browser = Sauce::Selenium.new({:os => os, :browser => browser, :browser_version => version,
242
- :job_name => "#{my_name}"})
245
+ if config.local?
246
+ @browser = ::Selenium::Client::Driver.new(:host => "127.0.0.1",
247
+ :port => 4444,
248
+ :browser => "*" + browser,
249
+ :url => "http://127.0.0.1:#{config.local_application_port}/")
250
+ else
251
+ @browser = Sauce::Selenium.new({:os => os, :browser => browser, :browser_version => version,
252
+ :job_name => "#{my_name}"})
253
+ end
254
+ @browser.start
255
+ super(*args, &blk)
256
+ @browser.stop
243
257
  end
244
- @browser.start
245
- super(*args, &blk)
246
- @browser.stop
247
258
  end
248
259
  end
249
260
  end
250
-
251
- # Placeholder so test/unit ignores test cases without any tests.
252
- def default_test
253
- end
254
261
  end
255
262
 
256
263
  class RailsTestCase < ::ActiveSupport::TestCase
257
264
  include SeleniumForTestUnit
265
+
266
+ # Placeholder so test/unit ignores test cases without any tests.
267
+ def default_test
268
+ end
258
269
  end
259
270
  end
260
271
  end
@@ -34,7 +34,8 @@ if defined?(Spec::Rake::SpecTask)
34
34
  desc "" # Hide it from rake -T
35
35
  Spec::Rake::SpecTask.new :runtests do |t|
36
36
  t.spec_opts = ['--options', "\"#{Rails.root.join('spec', 'spec.opts')}\""]
37
- t.spec_files = FileList["spec/selenium/**/*_spec.rb"]
37
+ spec_glob = ENV["SAUCE_SPEC_GLOB"] || "spec/selenium/**/*_spec.rb"
38
+ t.spec_files = FileList[spec_glob]
38
39
  end
39
40
  end
40
41
 
@@ -70,7 +71,8 @@ if defined?(RSpec::Core::RakeTask)
70
71
 
71
72
  desc "" # Hide it from rake -T
72
73
  RSpec::Core::RakeTask.new :runtests do |t|
73
- t.pattern = "spec/selenium/**/*_spec.rb"
74
+ spec_glob = ENV["SAUCE_SPEC_GLOB"] || "spec/selenium/**/*_spec.rb"
75
+ t.pattern = spec_glob
74
76
  end
75
77
  end
76
78
 
@@ -98,7 +100,8 @@ namespace :test do
98
100
 
99
101
  Rake::TestTask.new(:runtests) do |t|
100
102
  t.libs << "test"
101
- t.pattern = 'test/selenium/**/*_test.rb'
103
+ test_glob = ENV["SAUCE_TEST_GLOB"] || "test/selenium/**/*_test.rb"
104
+ t.pattern = test_glob
102
105
  t.verbose = true
103
106
  end
104
107
  # Hide it from rake -T
@@ -4,9 +4,8 @@ module Sauce
4
4
  class Selenium < Selenium::Client::Driver
5
5
  def initialize(opts={})
6
6
  @config = Sauce::Config.new(opts)
7
- opts.merge!({:host => @config.host, :port => @config.port,
8
- :browser => @config.to_browser_string, :url => @config.browser_url})
9
- super(opts)
7
+ super(opts.merge({:host => @config.host, :port => @config.port,
8
+ :browser => @config.to_browser_string, :url => @config.browser_url}))
10
9
  end
11
10
  end
12
11
  end
@@ -50,7 +50,7 @@ module Sauce
50
50
  def with_rails_server
51
51
  STDERR.puts "Starting Rails server on port 3001..."
52
52
  if File.exists?('script/server')
53
- server = IO.popen("ruby script/server RAILS_ENV=test --port 3001 --daemon")
53
+ server = IO.popen("ruby script/server -e test --port 3001 --daemon")
54
54
  elsif File.exists?('script/rails')
55
55
  server = IO.popen("script/rails server -p 3001 -e test")
56
56
  end
data/sauce.gemspec ADDED
@@ -0,0 +1,124 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = %q{sauce}
8
+ s.version = "0.14.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["Sean Grove", "Eric Allen", "Steven Hazel"]
12
+ s.date = %q{2011-01-24}
13
+ s.default_executable = %q{sauce}
14
+ s.description = %q{A Ruby interface to Sauce Labs' services. Start/stop tunnels, retrieve Selenium logs, access video replays, etc.}
15
+ s.email = %q{help@saucelabs.com}
16
+ s.executables = ["sauce"]
17
+ s.extra_rdoc_files = [
18
+ "LICENSE",
19
+ "README.markdown"
20
+ ]
21
+ s.files = [
22
+ ".document",
23
+ "LICENSE",
24
+ "README.markdown",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "bin/sauce",
28
+ "examples/helper.rb",
29
+ "examples/other_spec.rb",
30
+ "examples/saucelabs_spec.rb",
31
+ "examples/test_saucelabs.rb",
32
+ "examples/test_saucelabs2.rb",
33
+ "generators/sauce/sauce_generator.rb",
34
+ "generators/sauce/templates/sauce.rake",
35
+ "lib/generators/sauce_generator.rb",
36
+ "lib/generators/templates/sauce.rake",
37
+ "lib/sauce.rb",
38
+ "lib/sauce/client.rb",
39
+ "lib/sauce/config.rb",
40
+ "lib/sauce/connect.rb",
41
+ "lib/sauce/gateway_ext.rb",
42
+ "lib/sauce/heroku.rb",
43
+ "lib/sauce/integrations.rb",
44
+ "lib/sauce/job.rb",
45
+ "lib/sauce/raketasks.rb",
46
+ "lib/sauce/selenium.rb",
47
+ "lib/sauce/tunnel.rb",
48
+ "lib/sauce/utilities.rb",
49
+ "sauce.gemspec",
50
+ "support/sauce_connect",
51
+ "support/selenium-server.jar",
52
+ "support/simplejson/LICENSE.txt",
53
+ "support/simplejson/__init__.py",
54
+ "support/simplejson/decoder.py",
55
+ "support/simplejson/encoder.py",
56
+ "support/simplejson/ordered_dict.py",
57
+ "support/simplejson/scanner.py",
58
+ "support/simplejson/tool.py",
59
+ "test/api/test_jobs.rb",
60
+ "test/api/test_tunnels.rb",
61
+ "test/helper.rb",
62
+ "test/test_config.rb",
63
+ "test/test_connect.rb",
64
+ "test/test_selenium.rb"
65
+ ]
66
+ s.homepage = %q{http://github.com/saucelabs/sauce}
67
+ s.require_paths = ["lib"]
68
+ s.rubygems_version = %q{1.4.2}
69
+ s.summary = %q{Ruby access to Sauce Labs' features}
70
+ s.test_files = [
71
+ "examples/helper.rb",
72
+ "examples/other_spec.rb",
73
+ "examples/saucelabs_spec.rb",
74
+ "examples/test_saucelabs.rb",
75
+ "examples/test_saucelabs2.rb",
76
+ "test/api/test_jobs.rb",
77
+ "test/api/test_tunnels.rb",
78
+ "test/helper.rb",
79
+ "test/integrations/test_rails2.rb",
80
+ "test/test_config.rb",
81
+ "test/test_connect.rb",
82
+ "test/test_selenium.rb"
83
+ ]
84
+
85
+ if s.respond_to? :specification_version then
86
+ s.specification_version = 3
87
+
88
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
89
+ s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
90
+ s.add_development_dependency(%q<jeweler>, [">= 1.4.0"])
91
+ s.add_runtime_dependency(%q<rest-client>, [">= 0"])
92
+ s.add_runtime_dependency(%q<net-ssh>, [">= 0"])
93
+ s.add_runtime_dependency(%q<net-ssh-gateway>, [">= 0"])
94
+ s.add_runtime_dependency(%q<selenium-webdriver>, [">= 0.1.2"])
95
+ s.add_runtime_dependency(%q<childprocess>, [">= 0.1.6"])
96
+ s.add_runtime_dependency(%q<json>, [">= 1.2.0"])
97
+ s.add_runtime_dependency(%q<cmdparse>, [">= 2.0.2"])
98
+ s.add_runtime_dependency(%q<highline>, [">= 1.5.0"])
99
+ else
100
+ s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
101
+ s.add_dependency(%q<jeweler>, [">= 1.4.0"])
102
+ s.add_dependency(%q<rest-client>, [">= 0"])
103
+ s.add_dependency(%q<net-ssh>, [">= 0"])
104
+ s.add_dependency(%q<net-ssh-gateway>, [">= 0"])
105
+ s.add_dependency(%q<selenium-webdriver>, [">= 0.1.2"])
106
+ s.add_dependency(%q<childprocess>, [">= 0.1.6"])
107
+ s.add_dependency(%q<json>, [">= 1.2.0"])
108
+ s.add_dependency(%q<cmdparse>, [">= 2.0.2"])
109
+ s.add_dependency(%q<highline>, [">= 1.5.0"])
110
+ end
111
+ else
112
+ s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
113
+ s.add_dependency(%q<jeweler>, [">= 1.4.0"])
114
+ s.add_dependency(%q<rest-client>, [">= 0"])
115
+ s.add_dependency(%q<net-ssh>, [">= 0"])
116
+ s.add_dependency(%q<net-ssh-gateway>, [">= 0"])
117
+ s.add_dependency(%q<selenium-webdriver>, [">= 0.1.2"])
118
+ s.add_dependency(%q<childprocess>, [">= 0.1.6"])
119
+ s.add_dependency(%q<json>, [">= 1.2.0"])
120
+ s.add_dependency(%q<cmdparse>, [">= 2.0.2"])
121
+ s.add_dependency(%q<highline>, [">= 1.5.0"])
122
+ end
123
+ end
124
+
@@ -10,7 +10,8 @@ class TestRails2Integration < Test::Unit::TestCase
10
10
  puts @dir
11
11
  end
12
12
 
13
- def test_foo
13
+ def test_ruby18
14
+
14
15
  end
15
16
 
16
17
  def teardown
data/test/test_config.rb CHANGED
@@ -44,6 +44,12 @@ class TestConfig < Test::Unit::TestCase
44
44
 
45
45
  assert_equal [["A", "B", "C"]], config.browsers
46
46
  end
47
+
48
+ should "Let you set and query boolean flags" do
49
+ config = Sauce::Config.new
50
+ config.foo = true
51
+ assert config.foo?
52
+ end
47
53
  end
48
54
 
49
55
  context "The Sauce.config method" do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sauce
3
3
  version: !ruby/object:Gem::Version
4
- hash: 47
5
- prerelease: false
4
+ hash: 39
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
- - 13
9
- - 2
10
- version: 0.13.2
8
+ - 14
9
+ - 0
10
+ version: 0.14.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sean Grove
@@ -17,7 +17,7 @@ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2011-01-22 00:00:00 -08:00
20
+ date: 2011-01-24 00:00:00 -08:00
21
21
  default_executable: sauce
22
22
  dependencies:
23
23
  - !ruby/object:Gem::Dependency
@@ -209,6 +209,7 @@ files:
209
209
  - lib/sauce/selenium.rb
210
210
  - lib/sauce/tunnel.rb
211
211
  - lib/sauce/utilities.rb
212
+ - sauce.gemspec
212
213
  - support/sauce_connect
213
214
  - support/selenium-server.jar
214
215
  - support/simplejson/LICENSE.txt
@@ -255,7 +256,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
255
256
  requirements: []
256
257
 
257
258
  rubyforge_project:
258
- rubygems_version: 1.3.7
259
+ rubygems_version: 1.4.2
259
260
  signing_key:
260
261
  specification_version: 3
261
262
  summary: Ruby access to Sauce Labs' features