polonium 0.1.1 → 0.2.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.
Files changed (38) hide show
  1. data/CHANGES +7 -0
  2. data/README +27 -12
  3. data/Rakefile +2 -2
  4. data/init.rb +9 -0
  5. data/lib/polonium/adapters/rspec.rb +19 -13
  6. data/lib/polonium/adapters/test_unit.rb +1 -1
  7. data/lib/polonium/configuration.rb +32 -97
  8. data/lib/polonium/driver.rb +25 -28
  9. data/lib/polonium/dsl/selenium_dsl.rb +67 -8
  10. data/lib/polonium/element.rb +60 -30
  11. data/lib/polonium/page.rb +13 -2
  12. data/lib/polonium/server_runners/external_server_runner.rb +20 -0
  13. data/lib/polonium/server_runners/mongrel_server_runner.rb +63 -0
  14. data/lib/polonium/server_runners/server_runner.rb +36 -0
  15. data/lib/polonium/server_runners/webrick_server_runner.rb +49 -0
  16. data/lib/polonium/test_case.rb +1 -19
  17. data/lib/polonium/wait_for.rb +4 -1
  18. data/lib/polonium.rb +6 -4
  19. data/spec/polonium/configuration_spec.rb +41 -99
  20. data/spec/polonium/driver_spec.rb +112 -62
  21. data/spec/polonium/element_spec.rb +69 -24
  22. data/spec/polonium/server_runners/external_server_runner_spec.rb +33 -0
  23. data/spec/polonium/server_runners/mongrel_server_runner_spec.rb +69 -0
  24. data/spec/polonium/server_runners/server_runner_spec.rb +36 -0
  25. data/spec/polonium/server_runners/webrick_server_runner_spec.rb +121 -0
  26. data/spec/polonium/test_case_spec.rb +538 -649
  27. data/spec/rspec/options_spec.rb +23 -22
  28. data/spec/spec_helper.rb +0 -18
  29. data/spec/spec_suite.rb +1 -1
  30. data/spec/test_unit/testrunnermediator_spec.rb +2 -2
  31. metadata +50 -41
  32. data/lib/polonium/dsl/test_unit_dsl.rb +0 -61
  33. data/lib/polonium/mongrel_selenium_server_runner.rb +0 -37
  34. data/lib/polonium/server_runner.rb +0 -33
  35. data/lib/polonium/webrick_selenium_server_runner.rb +0 -33
  36. data/spec/polonium/mongrel_selenium_server_runner_spec.rb +0 -35
  37. data/spec/polonium/server_runner_spec.rb +0 -42
  38. data/spec/polonium/webrick_selenium_server_runner_spec.rb +0 -117
@@ -1,30 +1,31 @@
1
1
  require File.expand_path("#{File.dirname(__FILE__)}/rspec_spec_helper")
2
2
 
3
- describe Spec::Runner::Options, "#run_example" do
4
- attr_reader :configuration, :app_server_runner, :the_rspec_options
5
- before do
6
- @original_configuration = Polonium::Configuration.instance
7
- @configuration = Polonium::Configuration.new
8
- @the_rspec_options = Spec::Runner::Options.new(StringIO.new, StringIO.new)
3
+ describe Spec::Runner::Options do
4
+ describe "#run_example" do
5
+ attr_reader :configuration, :app_server_runner, :the_rspec_options
6
+ before do
7
+ @original_configuration = Polonium::Configuration.instance
8
+ @configuration = Polonium::Configuration.new
9
+ Polonium::Configuration.instance = configuration
10
+ @the_rspec_options = Spec::Runner::Options.new(StringIO.new, StringIO.new)
11
+ the_rspec_options.after_suite_parts.push(*rspec_options.after_suite_parts)
9
12
 
10
- configuration.app_server_engine = :mongrel
11
- @app_server_runner = configuration.create_server_runner
12
-
13
- the_rspec_options.selenium_configuration = configuration
14
- the_rspec_options.selenium_app_runner = app_server_runner
15
- end
13
+ configuration.app_server_engine = :mongrel
14
+ @app_server_runner = configuration.create_app_server_runner
15
+ end
16
16
 
17
- after do
18
- Polonium::Configuration.instance = @original_configuration
19
- end
17
+ after do
18
+ Polonium::Configuration.instance = @original_configuration
19
+ end
20
20
 
21
- it "stops the app server app_server_runner when finished" do
22
- mock.proxy(app_server_runner).stop
23
- the_rspec_options.run_examples
24
- end
21
+ it "stops the app server app_server_runner when finished" do
22
+ mock.proxy(app_server_runner).stop
23
+ the_rspec_options.run_examples
24
+ end
25
25
 
26
- it "stops the Selenium driver when finished" do
27
- mock.proxy(configuration).stop_driver_if_necessary(true)
28
- the_rspec_options.run_examples
26
+ it "stops the Selenium driver when finished" do
27
+ mock.proxy(configuration).stop_driver_if_necessary(true)
28
+ the_rspec_options.run_examples
29
+ end
29
30
  end
30
31
  end
data/spec/spec_helper.rb CHANGED
@@ -15,24 +15,6 @@ require File.dirname(__FILE__) + "/polonium/test_case_spec_helper"
15
15
 
16
16
  Test::Unit.run = true
17
17
 
18
- ProcessStub = Struct.new :host, :port, :name, :cmd, :logdir, :is_running unless Object.const_defined?(:ProcessStub)
19
- ProcessStub.class_eval do
20
- def is_running?
21
- self.is_running
22
- end
23
- def say(msg, options = {})
24
- end
25
- def run
26
- false
27
- end
28
- def start
29
- self.is_running = true
30
- end
31
- def stop
32
- self.is_running = false
33
- end
34
- end
35
-
36
18
  Spec::Runner.configure do |config|
37
19
  config.mock_with :rr
38
20
  end
data/spec/spec_suite.rb CHANGED
@@ -16,4 +16,4 @@ if $0 == __FILE__
16
16
  raise "Failure" unless system("ruby #{dir}/main_spec_suite.rb")
17
17
  raise "Failure" unless system("ruby #{dir}/test_unit_spec_suite.rb")
18
18
  raise "Failure" unless system("ruby #{dir}/rspec_spec_suite.rb")
19
- end
19
+ end
@@ -10,8 +10,8 @@ describe Test::Unit::UI::TestRunnerMediator do
10
10
  suite = Test::Unit::TestSuite.new
11
11
  mediator = Test::Unit::UI::TestRunnerMediator.new(suite)
12
12
 
13
- runner = driver.create_server_runner
14
- mock(driver).create_server_runner {runner}
13
+ runner = driver.create_app_server_runner
14
+ mock(driver).create_app_server_runner {runner}
15
15
  mock(runner).stop
16
16
  mock(driver).stop_driver_if_necessary(true)
17
17
  mediator.run_suite
metadata CHANGED
@@ -1,50 +1,45 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.4
3
- specification_version: 1
4
2
  name: polonium
5
3
  version: !ruby/object:Gem::Version
6
- version: 0.1.1
7
- date: 2008-01-29 00:00:00 -08:00
8
- summary: Selenium RC with enhanced assertions that also runs your rails app.
9
- require_paths:
10
- - lib
11
- email: opensource@pivotallabs.com
12
- homepage: http://pivotallabs.com
13
- rubyforge_project: pivotalrb
14
- description: Selenium RC with enhanced assertions that also runs your rails app.
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">"
22
- - !ruby/object:Gem::Version
23
- version: 0.0.0
24
- version:
4
+ version: 0.2.0
25
5
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
6
  authors:
30
7
  - Pivotal Labs
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-07-18 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: Selenium RC with Rails integration and enhanced assertions.
17
+ email: opensource@pivotallabs.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README
24
+ - CHANGES
31
25
  files:
32
26
  - CHANGES
33
27
  - README
34
28
  - Rakefile
29
+ - init.rb
30
+ - lib/polonium/server_runners/webrick_server_runner.rb
31
+ - lib/polonium/server_runners/external_server_runner.rb
32
+ - lib/polonium/server_runners/server_runner.rb
33
+ - lib/polonium/server_runners/mongrel_server_runner.rb
35
34
  - lib/polonium/dsl/selenium_dsl.rb
36
- - lib/polonium/dsl/test_unit_dsl.rb
37
35
  - lib/polonium/adapters/test_unit.rb
38
36
  - lib/polonium/adapters/rspec.rb
39
37
  - lib/polonium/element.rb
40
- - lib/polonium/mongrel_selenium_server_runner.rb
41
38
  - lib/polonium/extensions/module.rb
42
39
  - lib/polonium/tasks/selenium_test_task.rb
43
40
  - lib/polonium/page.rb
44
41
  - lib/polonium/driver.rb
45
- - lib/polonium/webrick_selenium_server_runner.rb
46
42
  - lib/polonium/values_match.rb
47
- - lib/polonium/server_runner.rb
48
43
  - lib/polonium/wait_for.rb
49
44
  - lib/polonium/test_case.rb
50
45
  - lib/polonium/configuration.rb
@@ -58,34 +53,48 @@ files:
58
53
  - spec/main_spec_suite.rb
59
54
  - spec/test_unit/test_unit_spec_helper.rb
60
55
  - spec/test_unit/testrunnermediator_spec.rb
56
+ - spec/polonium/server_runners/server_runner_spec.rb
57
+ - spec/polonium/server_runners/mongrel_server_runner_spec.rb
58
+ - spec/polonium/server_runners/external_server_runner_spec.rb
59
+ - spec/polonium/server_runners/webrick_server_runner_spec.rb
61
60
  - spec/polonium/driver_spec.rb
62
- - spec/polonium/server_runner_spec.rb
63
61
  - spec/polonium/test_case_spec_helper.rb
64
62
  - spec/polonium/test_case_spec.rb
65
63
  - spec/polonium/page_spec.rb
66
64
  - spec/polonium/element_spec.rb
67
65
  - spec/polonium/extensions/module_spec.rb
68
66
  - spec/polonium/test_case_class_method_spec.rb
69
- - spec/polonium/webrick_selenium_server_runner_spec.rb
70
67
  - spec/polonium/values_match_spec.rb
71
68
  - spec/polonium/configuration_spec.rb
72
- - spec/polonium/mongrel_selenium_server_runner_spec.rb
73
69
  - spec/rspec_spec_suite.rb
74
- test_files: []
75
-
70
+ has_rdoc: true
71
+ homepage: http://pivotallabs.com
72
+ post_install_message:
76
73
  rdoc_options:
77
74
  - --main
78
75
  - README
79
76
  - --inline-source
80
77
  - --line-numbers
81
- extra_rdoc_files:
82
- - README
83
- - CHANGES
84
- executables: []
85
-
86
- extensions: []
87
-
78
+ require_paths:
79
+ - lib
80
+ required_ruby_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: "0"
85
+ version:
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: "0"
91
+ version:
88
92
  requirements: []
89
93
 
90
- dependencies: []
94
+ rubyforge_project: pivotalrb
95
+ rubygems_version: 1.0.1
96
+ signing_key:
97
+ specification_version: 2
98
+ summary: Selenium RC with Rails integration and enhanced assertions.
99
+ test_files: []
91
100
 
@@ -1,61 +0,0 @@
1
- module Polonium
2
- module TestUnitDsl
3
- include SeleniumDsl
4
- class << self
5
- def page_assertion(name)
6
- module_eval(
7
- "def assert_#{name}(value, params={})\n" +
8
- " page.assert_#{name}(value, params)\n" +
9
- "end",
10
- __FILE__,
11
- __LINE__ - 4
12
- )
13
- end
14
-
15
- def element_assertion(name)
16
- module_eval(
17
- "def assert_#{name}(locator, *args)\n" +
18
- " element(locator).assert_#{name}(*args)\n" +
19
- "end",
20
- __FILE__,
21
- __LINE__ - 4
22
- )
23
- end
24
- end
25
-
26
- page_assertion :title
27
- page_assertion :text_present
28
- page_assertion :text_not_present
29
- page_assertion :location_ends_with
30
- deprecate :assert_location_ends_in, :assert_location_ends_with
31
-
32
- element_assertion :value
33
- element_assertion :selected
34
- element_assertion :checked
35
- element_assertion :not_checked
36
- element_assertion :text
37
- element_assertion :element_present
38
- element_assertion :element_not_present
39
- element_assertion :next_sibling
40
- element_assertion :contains_in_order
41
- element_assertion :visible
42
- element_assertion :not_visible
43
-
44
- def assert_attribute(element_locator, attribute_name, expected_value)
45
- element(element_locator).assert_attribute(attribute_name, expected_value)
46
- end
47
-
48
- # Assert and wait for locator element to contain text.
49
- def assert_element_contains(locator, text, options = {})
50
- element(locator).assert_contains(text, options)
51
- end
52
-
53
- # Assert and wait for locator element to not contain text.
54
- def assert_element_does_not_contain(locator, text, options={})
55
- element(locator).assert_does_not_contain(text, options)
56
- end
57
- deprecate :assert_element_does_not_contain_text, :assert_element_does_not_contain
58
- deprecate :wait_for_element_to_not_contain_text, :assert_element_does_not_contain
59
- deprecate :wait_for_text_in_order, :assert_contains_in_order
60
- end
61
- end
@@ -1,37 +0,0 @@
1
- module Polonium
2
- class MongrelSeleniumServerRunner < ServerRunner
3
- def start
4
- mongrel_configurator = configuration.create_mongrel_configurator
5
- initialize_server(mongrel_configurator)
6
-
7
- @thread_class.start do
8
- start_server(mongrel_configurator)
9
- end
10
- @started = true
11
- end
12
-
13
- protected
14
- def start_server(mongrel_configurator)
15
- mongrel_configurator.run
16
- mongrel_configurator.log "Mongrel running at #{configuration.internal_app_server_host}:#{configuration.internal_app_server_port}"
17
- mongrel_configurator.join
18
- end
19
-
20
- def initialize_server(config)
21
- configuration = self.configuration
22
- config.listener do |*args|
23
- mongrel = (args.first || self)
24
- mongrel.log "Starting Rails in environment #{defaults[:environment]} ..."
25
- mongrel.uri "/", :handler => mongrel.rails
26
- mongrel.log "Rails loaded."
27
-
28
- mongrel.log "Loading any Rails specific GemPlugins"
29
- mongrel.load_plugins
30
- configuration.app_server_initialization.call(mongrel)
31
- end
32
- end
33
-
34
- def stop_server
35
- end
36
- end
37
- end
@@ -1,33 +0,0 @@
1
- module Polonium
2
- class ServerRunner
3
- attr_accessor :configuration, :thread_class
4
- def initialize
5
- @started = false
6
- end
7
-
8
- def start
9
- @thread_class.start do
10
- start_server
11
- end
12
- @started = true
13
- end
14
-
15
- def stop
16
- stop_server
17
- @started = false
18
- end
19
-
20
- def started?
21
- @started
22
- end
23
-
24
- protected
25
- def start_server
26
- raise NotImplementedError.new("this is abstract!")
27
- end
28
-
29
- def stop_server
30
- raise NotImplementedError.new("this is abstract!")
31
- end
32
- end
33
- end
@@ -1,33 +0,0 @@
1
- module Polonium
2
- class WebrickSeleniumServerRunner < ServerRunner
3
- attr_accessor :socket, :dispatch_servlet, :environment_path, :server
4
-
5
- protected
6
- def start_server
7
- socket.do_not_reverse_lookup = true # patch for OS X
8
-
9
- @server = configuration.create_webrick_server
10
- mount_parameters = {
11
- :port => configuration.internal_app_server_port,
12
- :ip => configuration.internal_app_server_host,
13
- :environment => configuration.rails_env.dup,
14
- :server_root => configuration.server_root,
15
- :server_type => WEBrick::SimpleServer,
16
- :charset => "UTF-8",
17
- :mime_types => WEBrick::HTTPUtils::DefaultMimeTypes,
18
- :working_directory => File.expand_path(configuration.rails_root.to_s)
19
- }
20
- server.mount('/', dispatch_servlet, mount_parameters)
21
-
22
- trap("INT") { stop_server }
23
-
24
- require @environment_path
25
- require "dispatcher"
26
- server.start
27
- end
28
-
29
- def stop_server
30
- server.shutdown
31
- end
32
- end
33
- end
@@ -1,35 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
-
3
- module Polonium
4
- describe MongrelSeleniumServerRunner, "#start_server" do
5
- attr_reader :configuration
6
- before do
7
- @configuration = Configuration.new
8
- end
9
-
10
- it "initializes server and runs app_server_initialization callback" do
11
- mongrel_configurator = configuration.create_mongrel_configurator
12
- stub(configuration).create_mongrel_configurator {mongrel_configurator}
13
- mock(mongrel_configurator).run
14
- stub(mongrel_configurator).log
15
- mock(mongrel_configurator).join
16
- fake_rails = "fake rails"
17
- mock(mongrel_configurator).rails {fake_rails}
18
- mock(mongrel_configurator).uri("/", {:handler => fake_rails})
19
- mock(mongrel_configurator).load_plugins
20
- mock(mongrel_configurator).listener.yields(mongrel_configurator)
21
-
22
- callback_mongrel = nil
23
- configuration.app_server_initialization = proc do |mongrel|
24
- callback_mongrel = mongrel
25
- end
26
- runner = configuration.create_mongrel_runner
27
- stub(runner).defaults do; {:environment => ""}; end
28
- runner.thread_class = mock_thread_class = "mock_thread_class"
29
- mock(mock_thread_class).start.yields
30
-
31
- runner.start
32
- callback_mongrel.should == mongrel_configurator
33
- end
34
- end
35
- end
@@ -1,42 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
-
3
- module Polonium
4
- describe ServerRunner do
5
- before(:each) do
6
- @runner = Polonium::ServerRunner.new
7
- class << @runner
8
- public :start_server, :stop_server
9
- end
10
- end
11
-
12
- it "should initialize started? to be false" do
13
- @runner.started?.should == false
14
- end
15
-
16
- it "start method should start new thread and set started" do
17
- start_server_called = false
18
- (class << @runner; self; end).class_eval do
19
- define_method :start_server do; start_server_called = true; end
20
- end
21
- def @runner.stop_server; end
22
- mock_thread_class = "mock_thread_class"
23
- mock(mock_thread_class).start {|block| block.call}
24
- @runner.thread_class = mock_thread_class
25
-
26
- @runner.start
27
- start_server_called.should equal(true)
28
- @runner.started?.should equal(true)
29
- end
30
-
31
- it "stop method should set started? to false" do
32
- def @runner.stop_server; end
33
- @runner.instance_eval {@started = true}
34
- @runner.stop
35
- @runner.started?.should == false
36
- end
37
-
38
- it "start_server method should raise a NotImplementedError by default" do
39
- proc {@runner.start_server}.should raise_error(NotImplementedError)
40
- end
41
- end
42
- end
@@ -1,117 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
-
3
- module Polonium
4
- describe WebrickSeleniumServerRunner do
5
- attr_reader :configuration
6
- before(:each) do
7
- Object.const_set(:RAILS_ROOT, "foobar")
8
- end
9
-
10
- after(:each) do
11
- Object.instance_eval {remove_const :RAILS_ROOT}
12
- end
13
-
14
- it "start method should set socket.do_not_reverse_lookup to true and" do
15
- runner = create_runner_that_is_stubbed_so_start_method_works
16
- runner.start
17
- end
18
-
19
- it "start method should initialize the HttpServer with parameters" do
20
- runner = create_runner_that_is_stubbed_so_start_method_works
21
- runner.start
22
- end
23
-
24
- it "start method should mount and start the server" do
25
- runner = create_runner_that_is_stubbed_so_start_method_works
26
- runner.start
27
- end
28
-
29
- it "start method should require the environment and dispatcher" do
30
- runner = create_runner_that_is_stubbed_so_start_method_works
31
-
32
- mock(runner).require("foobar")
33
- mock(runner).require("dispatcher")
34
-
35
- runner.environment_path = "foobar"
36
- runner.start
37
- end
38
-
39
- it "start method should require environment when rails_root is not set" do
40
- runner = create_runner_that_is_stubbed_so_start_method_works
41
- requires = []
42
- stub(runner).require {|val| requires << val}
43
-
44
- runner.start
45
- requires.any? {|r| r =~ /\/config\/environment/}.should == true
46
- end
47
-
48
- it "start method should trap server.shutdown" do
49
- runner = create_runner_that_is_stubbed_so_start_method_works
50
-
51
- (class << runner; self; end).class_eval {attr_reader :trap_signal_name}
52
- def runner.trap(signal_name, &block)
53
- @trap_signal_name = signal_name
54
- block.call
55
- end
56
- mock(@mock_server).shutdown.once
57
-
58
- runner.start
59
- runner.trap_signal_name.should == "INT"
60
- end
61
-
62
- it "should shutdown webrick server" do
63
- runner = create_runner_that_is_stubbed_so_start_method_works
64
- runner.start
65
- mock(@mock_server).shutdown.once
66
- runner.stop
67
- end
68
-
69
- def create_runner_that_is_stubbed_so_start_method_works()
70
- configuration = Polonium::Configuration.new
71
- runner = configuration.create_webrick_runner
72
- class << runner; public :start_server; end
73
-
74
- def runner.require(*args)
75
- end
76
-
77
- mock_socket = "mock_socket"
78
- runner.socket = mock_socket
79
- stub(mock_socket).do_not_reverse_lookup=(true)
80
-
81
- @mock_server = mock_server = "mock_server"
82
- (class << configuration; self; end).class_eval do
83
- define_method :create_webrick_server do
84
- mock_server
85
- end
86
- end
87
-
88
- configuration.internal_app_server_port = 4000
89
- configuration.internal_app_server_host = "localhost"
90
- configuration.rails_env = "test"
91
- stub(@mock_server).mount('/')
92
- mock(@mock_server).mount(
93
- '/',
94
- DispatchServlet,
95
- {
96
- :port => configuration.internal_app_server_port,
97
- :ip => configuration.internal_app_server_host,
98
- :environment => configuration.rails_env,
99
- :server_root => File.expand_path("#{configuration.rails_root}/public/"),
100
- :server_type => WEBrick::SimpleServer,
101
- :charset => "UTF-8",
102
- :mime_types => WEBrick::HTTPUtils::DefaultMimeTypes,
103
- :working_directory => File.expand_path(configuration.rails_root.to_s)
104
- }
105
- )
106
-
107
- mock(@mock_server).start.once
108
-
109
- mock_thread_class = "mock_thread_class"
110
- runner.thread_class = mock_thread_class
111
- mock(mock_thread_class).start {|block| block.call}
112
-
113
- return runner
114
- end
115
-
116
- end
117
- end