gondola 1.2.1 → 1.2.2

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/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- gem "sauce", ">=0.17.5"
3
+ gem "sauce", ">=0.19.0"
4
4
  gem "parallel", ">=0.5.2"
5
5
 
6
6
  group :development do
data/Gemfile.lock CHANGED
@@ -49,6 +49,6 @@ DEPENDENCIES
49
49
  fakeweb (~> 1.3.0)
50
50
  jeweler (~> 1.5.2)
51
51
  parallel (>= 0.5.2)
52
- sauce (>= 0.17.5)
52
+ sauce (>= 0.19.0)
53
53
  shoulda
54
54
  vcr (~> 1.7.1)
data/README.markdown CHANGED
@@ -47,10 +47,9 @@ Will get you started with the basic commands available. The most used and main f
47
47
 
48
48
  The available `[options]` are:
49
49
 
50
- * `-s` or `--super_parallel`: This activates "super\_parallel" mode which will not only execute all browsers in parallel but also all the
51
- test cases. This mode is experimental and may slow down Sauce Labs considerably. Use at your own risk.
52
50
  * `-r` or `--recursive`: This activates recursive search mode. When you supply Gondola with a directory containing tests, using this option will
53
51
  enable sub directory searching.
52
+ * `-q` or `--quiet`: This suppreses the standard output. Best used when you need to run tests in the background.
54
53
 
55
54
  The `[tests]` attribute refers to a list of test cases or test suites:
56
55
 
@@ -68,7 +67,7 @@ The `[tests]` attribute refers to a list of test cases or test suites:
68
67
  {:os => "Windows 2003", :browser => "iexplore", :browser_version => "8" },
69
68
  ]
70
69
 
71
- runner = Gondola::TestRunner.new
70
+ runner = Gondola::SuiteRunner.new
72
71
  runner.add_test "example.html"
73
72
  runner.run({:base_url => "http://www.google.com", :browsers => browsers})
74
73
  results = runner.results
data/bin/gondola CHANGED
@@ -25,15 +25,16 @@ class RunCommand < CmdParse::Command
25
25
  def initialize
26
26
  super('run', false)
27
27
  @opts = {}
28
+ @quiet = false
28
29
  self.short_desc = "Run an entire test suite or one test case"
29
30
  # User supplied options for running a suite
30
31
  self.options = CmdParse::OptionParserWrapper.new do |opt|
31
- opt.on('-s', '--super_parallel', 'Execute all test cases at once') do |sp|
32
- @opts[:super_parallel] = true
33
- end
34
32
  opt.on('-r', '--recursive', 'Execute all sub suites') do |r|
35
33
  @opts[:recursive] = true
36
34
  end
35
+ opt.on('-q', '--quiet', 'Execute quietly') do |q|
36
+ @quiet = true
37
+ end
37
38
  end
38
39
  end
39
40
 
@@ -42,6 +43,46 @@ class RunCommand < CmdParse::Command
42
43
  "Usage: #{commandparser.program_name} run [options] [tests]"
43
44
  end
44
45
 
46
+ # Observer function to watch the progress of runs
47
+ def update(result)
48
+ bs = ""
49
+ result[:browser].each_value { |v| bs = bs + "#{v} " }
50
+ if result[:status] == :in_progress
51
+ puts "#{result[:id]}: Started test \"#{result[:name]}\" with #{bs}"
52
+ else
53
+ num = result[:errors].size
54
+ puts "#{result[:id]}: \"#{result[:name]}\" with #{bs}has completed with #{num} errors"
55
+ end
56
+ end
57
+
58
+ # Parse and print results in an organized manner
59
+ def report(results)
60
+ puts
61
+ results.each do |r|
62
+ puts "Sauce Labs ID : #{r[:id]}"
63
+ puts "Test Name : #{r[:name]}"
64
+ bs = ""
65
+ r[:browser].each_value { |v| bs = bs + "#{v} " }
66
+ puts "Browser : #{bs}"
67
+ if r[:status] == :passed
68
+ puts "Status : Test Passed"
69
+ else
70
+ puts "Status : Test Failed - #{r[:errors].size} error(s)"
71
+ r[:errors].each_with_index do |e,i|
72
+ puts "- Error #{i+1}, Command number #{e[:cmd_num]}:"
73
+ max_key = 0
74
+ e[:command].each_key { |k| max_key = k.size if k.size > max_key }
75
+ max_key = -1 * (max_key + 8)
76
+ e[:command].each_pair do |k,v|
77
+ puts " %1$*2$s : #{v}" % [ "#{k.capitalize} command", max_key ]
78
+ end
79
+ puts " #{e[:error]}"
80
+ end
81
+ end
82
+ puts
83
+ end
84
+ end
85
+
45
86
  # Function that is executed when a user issues a run command
46
87
  def execute(args)
47
88
  if args.length < 1
@@ -49,7 +90,8 @@ class RunCommand < CmdParse::Command
49
90
  exit 1
50
91
  end
51
92
  # Can either provide directory or file
52
- runner = Gondola::TestRunner.new
93
+ runner = Gondola::SuiteRunner.new
94
+ runner.add_observer(self) unless @quiet
53
95
  args.each do |t|
54
96
  if File.exists? t
55
97
  runner.add_test t
@@ -57,25 +99,9 @@ class RunCommand < CmdParse::Command
57
99
  puts "Could not find \"#{t}\""
58
100
  end
59
101
  end
102
+ puts "Contacting Sauce Labs, please wait..." unless @quiet
60
103
  runner.run(@opts)
61
- puts
62
- runner.results.each do |r|
63
- puts "Sauce Labs ID: #{r[:id]}"
64
- puts "Test Name: #{r[:name]}"
65
- puts "Browser: #{r[:browser]}"
66
- if r[:result] == "OK"
67
- puts "Test Passed"
68
- else
69
- puts "Test Failed - #{r[:result].size} error(s)"
70
- r[:result].each_with_index do |e,i|
71
- puts "- Error #{i+1}:"
72
- puts " Selenese Command: #{e[:command][:original]}" if e[:command][:original]
73
- puts " Ruby Command: #{e[:command][:ruby]}" if e[:command][:ruby]
74
- puts " #{e[:error]}"
75
- end
76
- end
77
- puts
78
- end
104
+ report(runner.results) unless @quiet
79
105
  end
80
106
  end
81
107
  cmd.add_command(RunCommand.new)
data/gondola.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{gondola}
8
- s.version = "1.2.1"
8
+ s.version = "1.2.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Matthew Perry"]
12
- s.date = %q{2011-03-25}
12
+ s.date = %q{2011-03-26}
13
13
  s.default_executable = %q{gondola}
14
14
  s.description = %q{
15
15
  Gondola is Ruby command line utility and as well as a library which helps
@@ -36,8 +36,8 @@ Gem::Specification.new do |s|
36
36
  "lib/gondola/converter.rb",
37
37
  "lib/gondola/html_converter.rb",
38
38
  "lib/gondola/selenium.rb",
39
+ "lib/gondola/suiterunner.rb",
39
40
  "lib/gondola/tester.rb",
40
- "lib/gondola/testrunner.rb",
41
41
  "lib/gondola/version.rb",
42
42
  "test/helper.rb",
43
43
  "test/test_converter.rb",
@@ -50,7 +50,7 @@ Gem::Specification.new do |s|
50
50
  "test/test_projects/example2/config.yml",
51
51
  "test/test_projects/example2/gondola_agora_fail.rb",
52
52
  "test/test_projects/example2/gondola_agora_pass.rb",
53
- "test/test_testrunner.rb"
53
+ "test/test_suiterunner.rb"
54
54
  ]
55
55
  s.homepage = %q{http://github.com/perrym5/gondola}
56
56
  s.licenses = ["MIT"]
@@ -64,14 +64,14 @@ Gem::Specification.new do |s|
64
64
  "test/test_pass.rb",
65
65
  "test/test_projects/example2/gondola_agora_fail.rb",
66
66
  "test/test_projects/example2/gondola_agora_pass.rb",
67
- "test/test_testrunner.rb"
67
+ "test/test_suiterunner.rb"
68
68
  ]
69
69
 
70
70
  if s.respond_to? :specification_version then
71
71
  s.specification_version = 3
72
72
 
73
73
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
74
- s.add_runtime_dependency(%q<sauce>, [">= 0.17.5"])
74
+ s.add_runtime_dependency(%q<sauce>, [">= 0.19.0"])
75
75
  s.add_runtime_dependency(%q<parallel>, [">= 0.5.2"])
76
76
  s.add_development_dependency(%q<shoulda>, [">= 0"])
77
77
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
@@ -79,7 +79,7 @@ Gem::Specification.new do |s|
79
79
  s.add_development_dependency(%q<vcr>, ["~> 1.7.1"])
80
80
  s.add_development_dependency(%q<fakeweb>, ["~> 1.3.0"])
81
81
  else
82
- s.add_dependency(%q<sauce>, [">= 0.17.5"])
82
+ s.add_dependency(%q<sauce>, [">= 0.19.0"])
83
83
  s.add_dependency(%q<parallel>, [">= 0.5.2"])
84
84
  s.add_dependency(%q<shoulda>, [">= 0"])
85
85
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
@@ -88,7 +88,7 @@ Gem::Specification.new do |s|
88
88
  s.add_dependency(%q<fakeweb>, ["~> 1.3.0"])
89
89
  end
90
90
  else
91
- s.add_dependency(%q<sauce>, [">= 0.17.5"])
91
+ s.add_dependency(%q<sauce>, [">= 0.19.0"])
92
92
  s.add_dependency(%q<parallel>, [">= 0.5.2"])
93
93
  s.add_dependency(%q<shoulda>, [">= 0"])
94
94
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
@@ -50,7 +50,7 @@ module Gondola
50
50
  selenese = selenese + ", #{cmd[2]}" if cmd[2] != ""
51
51
  selenese = selenese + ")"
52
52
  ruby = html_to_ruby(cmd[0], args)
53
- @commands.push({ :original => selenese, :ruby => ruby })
53
+ @commands.push({ :selenese => selenese, :ruby => ruby })
54
54
  @ruby << ruby
55
55
  @ruby << "\ncmd_inc\n"
56
56
  end
@@ -1,9 +1,11 @@
1
- # Gondola v2 - testrunner.rb:
1
+ # Gondola v2 - suiterunner.rb:
2
2
  # A wrapper for all the tasks required for launching a run
3
3
  # of a test suite or test case on several browsers
4
+ require 'observer'
4
5
 
5
6
  module Gondola
6
- class TestRunner
7
+ class SuiteRunner
8
+ include Observable
7
9
  attr_reader :tests, :results
8
10
 
9
11
  def initialize
@@ -25,32 +27,28 @@ module Gondola
25
27
  if @tests.empty?
26
28
  puts "No tests to run"
27
29
  end
28
- # TODO: Need to implement a super-parallel ability( dangerous )
29
- if opts[:super_parallel] == true
30
- puts "Work in progress, please run again without the super parallel flag"
31
- else
32
- # Iterate over all tests and dispatch each to Sauce Labs
33
- @tests.each do |test|
34
- if File.directory? test
35
- Dir.chdir(test) do
36
- prepend = ""
37
- if opts[:recursive] == true
38
- prepend = "**/"
39
- end
40
- files = Dir.glob(prepend + "*.html")
41
- files.concat(Dir.glob(prepend + "*.rb"))
42
- files.each do |file|
43
- converter,global,browsers = aggregate_data(file, opts)
44
- run_test(converter, global, browsers)
45
- end
30
+
31
+ # Iterate over all tests and dispatch each to Sauce Labs
32
+ @tests.each do |test|
33
+ if File.directory? test
34
+ Dir.chdir(test) do
35
+ prepend = ""
36
+ if opts[:recursive] == true
37
+ prepend = "**/"
46
38
  end
47
- else
48
- file = File.basename(test)
49
- Dir.chdir(File.dirname(test)) do
50
- converter,global,browsers = aggregate_data(file, opts)
51
- run_test(converter, global, browsers)
39
+ files = Dir.glob(prepend + "*.html")
40
+ files.concat(Dir.glob(prepend + "*.rb"))
41
+ files.each do |file|
42
+ converter,global,browsers = aggregate_data(file, opts)
43
+ run_test(converter, global, browsers)
52
44
  end
53
45
  end
46
+ else
47
+ file = File.basename(test)
48
+ Dir.chdir(File.dirname(test)) do
49
+ converter,global,browsers = aggregate_data(file, opts)
50
+ run_test(converter, global, browsers)
51
+ end
54
52
  end
55
53
  end
56
54
  end
@@ -66,10 +64,12 @@ module Gondola
66
64
  elsif File.extname(file) == '.rb'
67
65
  converter = Gondola::Converter.new(file)
68
66
  end
67
+
69
68
  # Load file config data
70
69
  conf = config_from_file(file)
71
70
  # Merge in user-supplied data
72
71
  conf.merge! opts
72
+
73
73
  # Set global information
74
74
  global = {}
75
75
  global[:job_name] = converter.name
@@ -90,6 +90,7 @@ module Gondola
90
90
  unless File.directory? file
91
91
  return config_from_file(File.expand_path(File.dirname(file)))
92
92
  end
93
+
93
94
  # Load any config files in the current directory only if
94
95
  # a config hasn't already been found
95
96
  conf = {}
@@ -105,6 +106,7 @@ module Gondola
105
106
  data = false
106
107
  end
107
108
  end
109
+
108
110
  # Recurse through the parent directories and merge the
109
111
  # current configuration
110
112
  unless file == File.dirname(file)
@@ -116,24 +118,35 @@ module Gondola
116
118
  # Function to run and parallelize the given test on the given browsers
117
119
  def run_test(converter, global, browsers)
118
120
  # Spawn n threads
119
- Parallel.map(browsers, :in_threads => browsers.size) do |request|
121
+ Parallel.map(browsers, :in_threads => browsers.size) do |browser|
120
122
  # Add global information to this request
121
- request.merge! global
122
- # Request a new selenium object from Sauce
123
- selenium = Gondola::Selenium.new(request)
124
- # Begin test using a tester object
125
- tester = Gondola::Tester.new(selenium, converter)
126
- browser_string = "#{request[:os]} #{request[:browser]} #{request[:browser_version]}"
127
- puts "Starting test \"#{converter.name}\" with #{browser_string}"
123
+ request = browser.merge global
124
+ # Initialize the tester object with a request and a converter
125
+ tester = Gondola::Tester.new(request, converter)
126
+
127
+ # Initialize test
128
+ tester.setup
129
+ changed # Notify Observers
130
+ result = {
131
+ :id => tester.job_id,
132
+ :name => global[:job_name],
133
+ :browser => browser,
134
+ :status => tester.status
135
+ }
136
+ # Send information to any observers
137
+ notify_observers(result)
138
+
139
+ # Run test
128
140
  tester.begin
129
- puts "Test \"#{converter.name}\" on #{browser_string} finished with #{tester.errors.size} error(s)"
130
- result = { :name => converter.name, :browser => browser_string, :id => tester.job_id }
131
- if tester.errors.empty?
132
- result[:result] = "OK"
133
- else
134
- result[:result] = tester.errors
135
- end
136
- @results.push(result)
141
+ changed # Notify Observers
142
+ result[:status] = tester.status
143
+ # Record the results of the test
144
+ result[:errors] = tester.errors
145
+ # Send information to any observers
146
+ notify_observers(result)
147
+
148
+ # Add result to the suiterunner's list
149
+ @results.push result
137
150
  end
138
151
  end
139
152
  end
@@ -8,95 +8,98 @@ module Gondola
8
8
  end
9
9
 
10
10
  class Tester
11
- attr_reader :cmd_num, :errors, :job_id
12
- attr_accessor :sel
11
+ attr_reader :cmd_num, :errors, :job_id, :status
13
12
 
14
- def initialize(sel, converter)
15
- @sel = sel
13
+ def initialize(req, converter)
14
+ @sel = Gondola::Selenium.new req
16
15
  @converter = converter
17
16
  @cmd_num = 0
18
17
  @errors = []
19
18
  end
20
19
 
21
- def begin
20
+ # Start a new Sauce Labs' job and return the session_id
21
+ def setup
22
22
  begin
23
23
  @sel.start()
24
24
  @job_id = @sel.session_id
25
+ @status = :in_progress
26
+ rescue ::Selenium::Client::CommandError => e
27
+ add_error e.message
28
+ finish
29
+ end
30
+ @job_id
31
+ end
32
+
33
+ # Issue all the test commands, catching any errors
34
+ def begin
35
+ begin
25
36
  eval(@converter.ruby)
26
- rescue AssertionError => e
37
+ rescue AssertionError
27
38
  rescue ::Selenium::Client::CommandError => e
28
- @errors.push({ :command => @converter.commands[@cmd_num],
29
- :error => e.message })
39
+ add_error e.message
30
40
  ensure
31
- begin
32
- if @errors.empty?
33
- @sel.passed!
34
- else
35
- @sel.failed!
36
- end
37
- @sel.stop()
38
- rescue ::Selenium::Client::CommandError => e
39
- $stderr.puts e.message + "(Most likely, the test was closed early on Sauce Labs' end)"
40
- end
41
+ finish
41
42
  end
42
43
  end
43
44
 
44
45
  private
45
46
 
46
- def cmd_inc
47
- @cmd_num+=1
48
- end
49
-
50
- def assert(expr)
51
- raise AssertionError, "Assertion Failed" unless verify(expr)
47
+ # Shutdown the Sauce Labs' job and report the status
48
+ # of the test
49
+ def finish
50
+ begin
51
+ if @errors.empty?
52
+ @status = :passed
53
+ @sel.passed!
54
+ else
55
+ @status = :failed
56
+ @sel.failed!
57
+ end
58
+ @sel.stop()
59
+ rescue ::Selenium::Client::CommandError
60
+ end
52
61
  end
53
62
 
54
- def assert_not(expr)
55
- raise AssertionError, "Assertion Failed" unless verify_not(expr)
63
+ def cmd_inc
64
+ @cmd_num+=1
56
65
  end
57
66
 
58
- def assert_equal(eq, expr)
59
- raise AssertionError, "Assertion Failed" unless verify_equal(eq, expr)
67
+ # Add the current command to the error list
68
+ # with the given description
69
+ def add_error(desc)
70
+ @errors.push({
71
+ :cmd_num => @cmd_num,
72
+ :command => @converter.commands[@cmd_num],
73
+ :error => desc
74
+ })
60
75
  end
61
76
 
62
- def assert_not_equal(eq, expr)
63
- raise AssertionError, "Assertion Failed" unless verify_not_equal(eq, expr)
77
+ # Handle all the assert functions by just making the respective
78
+ # verify call and throwing an exception to end the flow
79
+ def method_missing(method, *args)
80
+ if method.to_s =~ /^assert(.*)/
81
+ raise AssertionError unless send "verify#{$1}".to_sym, *args
82
+ end
64
83
  end
65
84
 
66
85
  def verify(expr)
67
- unless expr
68
- @errors.push({ :command => @converter.commands[@cmd_num],
69
- :error => "returned false, expecting true" })
70
- return false
71
- end
72
- return true
86
+ add_error "ERROR: Command returned false, expecting true" unless expr
87
+ return expr
73
88
  end
74
89
 
75
90
  def verify_not(expr)
76
- if expr
77
- @errors.push({ :command => @converter.commands[@cmd_num],
78
- :error => "returned true, expecting false" })
79
- return false
80
- end
81
- return true
91
+ add_error "ERROR: Command returned true, expecting false" if expr
92
+ return !expr
82
93
  end
83
94
 
84
95
  def verify_equal(eq, expr)
85
- unless eq == expr
86
- @errors.push({ :command => @converter.commands[@cmd_num],
87
- :error => "returned '#{expr}', expecting '#{eq}'" })
88
- return false
89
- end
90
- return true
96
+ add_error "ERROR: Command returned '#{expr}', expecting '#{eq}'" unless eq == expr
97
+ return eq == expr
91
98
  end
92
99
 
93
100
  def verify_not_equal(eq, expr)
94
- if eq == expr
95
- @errors.push({ :command => @converter.commands[@cmd_num],
96
- :error => "returned '#{expr}', expecting anything but" })
97
- return false
98
- end
99
- return true
101
+ add_error "ERROR: Command returned '#{expr}', expecting anything but" unless eq != expr
102
+ return eq != expr
100
103
  end
101
104
  end
102
105
  end
@@ -1,3 +1,3 @@
1
1
  module Gondola
2
- VERSION = "1.2.1"
2
+ VERSION = "1.2.2"
3
3
  end
data/lib/gondola.rb CHANGED
@@ -3,7 +3,7 @@ require 'gondola/selenium'
3
3
  require 'gondola/converter'
4
4
  require 'gondola/html_converter'
5
5
  require 'gondola/tester'
6
- require 'gondola/testrunner'
6
+ require 'gondola/suiterunner'
7
7
  require 'gondola/version'
8
8
  require 'sauce'
9
9
  require 'parallel'
@@ -47,6 +47,7 @@ class TestConverter < Test::Unit::TestCase
47
47
  cmd_inc
48
48
  }.lines.map { |l| l.strip! }.join("\n")
49
49
  assert_equal expected, @converter.ruby
50
+ assert_equal 19, @converter.commands.size
50
51
  end
51
52
 
52
53
  should "properly extract the name of the test from the given file" do
@@ -98,6 +99,7 @@ class TestConverter < Test::Unit::TestCase
98
99
  cmd_inc
99
100
  }.lines.map { |l| l.strip! }.join("\n")
100
101
  assert_equal expected, @converter.ruby
102
+ assert_equal 17, @converter.commands.size
101
103
  end
102
104
 
103
105
  should "properly extract the name of the test from the given file" do
data/test/test_fail.rb CHANGED
@@ -9,44 +9,46 @@ end
9
9
  class TestFail < Test::Unit::TestCase
10
10
  context "A Ruby Failing Test" do
11
11
  setup do
12
- @runner = Gondola::TestRunner.new
12
+ @runner = Gondola::SuiteRunner.new
13
13
  @runner.add_test "test/test_projects/example2/gondola_agora_fail.rb"
14
14
  end
15
15
 
16
16
  should "result in a failing test" do
17
17
  VCR.use_cassette('failing_test1', :record => :new_episodes) do
18
18
  @runner.run({ :browsers => [{:os => "Windows 2003", :browser => "firefox", :browser_version => "3.6"}] })
19
- expected = [{
20
- :command=>{
21
- :ruby=>"assert @sel.is_text_present(\"Producer FAIL\")\n"
22
- },
23
- :error=>"returned false, expecting true"
24
- }]
25
- assert @runner.results.size == 1
26
- assert_equal expected, @runner.results[0][:result]
27
19
  end
20
+ expected = [{
21
+ :cmd_num=>12,
22
+ :command=>{
23
+ :ruby=>"assert @sel.is_text_present(\"Producer FAIL\")\n"
24
+ },
25
+ :error=>"ERROR: Command returned false, expecting true"
26
+ }]
27
+ assert @runner.results.size == 1
28
+ assert_equal expected, @runner.results[0][:errors]
28
29
  end
29
30
  end
30
31
 
31
32
  context "An HTML Failing Test" do
32
33
  setup do
33
- @runner = Gondola::TestRunner.new
34
+ @runner = Gondola::SuiteRunner.new
34
35
  @runner.add_test "test/test_projects/example1/gondola_agora_fail.html"
35
36
  end
36
37
 
37
38
  should "result in a failing test" do
38
39
  VCR.use_cassette('failing_test2', :record => :new_episodes) do
39
40
  @runner.run({ :browsers => [{:os => "Windows 2003", :browser => "firefox", :browser_version => "3.6"}] })
40
- expected = [{
41
- :command=>{
42
- :original=>"assertTextPresent(\"Producer FAIL\")",
43
- :ruby=>"assert @sel.is_text_present(\"Producer FAIL\")"
44
- },
45
- :error=>"returned false, expecting true"
46
- }]
47
- assert @runner.results.size == 1
48
- assert_equal expected, @runner.results[0][:result]
49
41
  end
42
+ expected = [{
43
+ :cmd_num=>11,
44
+ :command=>{
45
+ :selenese=>"assertTextPresent(\"Producer FAIL\")",
46
+ :ruby=>"assert @sel.is_text_present(\"Producer FAIL\")"
47
+ },
48
+ :error=>"ERROR: Command returned false, expecting true"
49
+ }]
50
+ assert @runner.results.size == 1
51
+ assert_equal expected, @runner.results[0][:errors]
50
52
  end
51
53
  end
52
54
  end
data/test/test_pass.rb CHANGED
@@ -7,9 +7,9 @@ VCR.config do |c|
7
7
  end
8
8
 
9
9
  class TestPass < Test::Unit::TestCase
10
- context "A Ruby Failing Test" do
10
+ context "A Ruby Passing Test" do
11
11
  setup do
12
- @runner = Gondola::TestRunner.new
12
+ @runner = Gondola::SuiteRunner.new
13
13
  @runner.add_test "test/test_projects/example2/gondola_agora_pass.rb"
14
14
  end
15
15
 
@@ -17,14 +17,14 @@ class TestPass < Test::Unit::TestCase
17
17
  VCR.use_cassette('passing_test1', :record => :new_episodes) do
18
18
  @runner.run({ :browsers => [{:os => "Windows 2003", :browser => "firefox", :browser_version => "3.6"}] })
19
19
  assert @runner.results.size == 1
20
- assert_equal "OK", @runner.results[0][:result]
20
+ assert_equal :passed, @runner.results[0][:status]
21
21
  end
22
22
  end
23
23
  end
24
24
 
25
- context "An HTML Failing Test" do
25
+ context "An HTML Passing Test" do
26
26
  setup do
27
- @runner = Gondola::TestRunner.new
27
+ @runner = Gondola::SuiteRunner.new
28
28
  @runner.add_test "test/test_projects/example1/gondola_agora_pass.html"
29
29
  end
30
30
 
@@ -32,7 +32,7 @@ class TestPass < Test::Unit::TestCase
32
32
  VCR.use_cassette('passing_test2', :record => :new_episodes) do
33
33
  @runner.run({ :browsers => [{:os => "Windows 2003", :browser => "firefox", :browser_version => "3.6"}] })
34
34
  assert @runner.results.size == 1
35
- assert_equal "OK", @runner.results[0][:result]
35
+ assert_equal :passed, @runner.results[0][:status]
36
36
  end
37
37
  end
38
38
  end
@@ -1,6 +1,6 @@
1
1
  require 'helper'
2
2
 
3
- class MockTestRunner < Gondola::TestRunner
3
+ class MockSuiteRunner < Gondola::SuiteRunner
4
4
  attr_accessor :files_ran
5
5
 
6
6
  def initialize
@@ -14,10 +14,10 @@ class MockTestRunner < Gondola::TestRunner
14
14
  end
15
15
  end
16
16
 
17
- class TestRunner < Test::Unit::TestCase
17
+ class SuiteRunner < Test::Unit::TestCase
18
18
  context "Recursive projects" do
19
19
  setup do
20
- @runner = MockTestRunner.new
20
+ @runner = MockSuiteRunner.new
21
21
  @runner.add_test "test/test_projects/"
22
22
  @runner.run :recursive => true
23
23
  end
@@ -34,7 +34,7 @@ class TestRunner < Test::Unit::TestCase
34
34
 
35
35
  context "Configs" do
36
36
  setup do
37
- @runner = MockTestRunner.new
37
+ @runner = MockSuiteRunner.new
38
38
  @runner.add_test "test/test_projects/"
39
39
  end
40
40
 
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: gondola
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 1.2.1
5
+ version: 1.2.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Matthew Perry
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-03-25 00:00:00 -04:00
13
+ date: 2011-03-26 00:00:00 -04:00
14
14
  default_executable: gondola
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.17.5
23
+ version: 0.19.0
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: *id001
@@ -112,8 +112,8 @@ files:
112
112
  - lib/gondola/converter.rb
113
113
  - lib/gondola/html_converter.rb
114
114
  - lib/gondola/selenium.rb
115
+ - lib/gondola/suiterunner.rb
115
116
  - lib/gondola/tester.rb
116
- - lib/gondola/testrunner.rb
117
117
  - lib/gondola/version.rb
118
118
  - test/helper.rb
119
119
  - test/test_converter.rb
@@ -126,7 +126,7 @@ files:
126
126
  - test/test_projects/example2/config.yml
127
127
  - test/test_projects/example2/gondola_agora_fail.rb
128
128
  - test/test_projects/example2/gondola_agora_pass.rb
129
- - test/test_testrunner.rb
129
+ - test/test_suiterunner.rb
130
130
  has_rdoc: true
131
131
  homepage: http://github.com/perrym5/gondola
132
132
  licenses:
@@ -141,7 +141,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
141
141
  requirements:
142
142
  - - ">="
143
143
  - !ruby/object:Gem::Version
144
- hash: -2033131404099204936
144
+ hash: 145022769040170971
145
145
  segments:
146
146
  - 0
147
147
  version: "0"
@@ -165,4 +165,4 @@ test_files:
165
165
  - test/test_pass.rb
166
166
  - test/test_projects/example2/gondola_agora_fail.rb
167
167
  - test/test_projects/example2/gondola_agora_pass.rb
168
- - test/test_testrunner.rb
168
+ - test/test_suiterunner.rb