lib/teaspoon/console.rb in teaspoon-0.8.0 vs lib/teaspoon/console.rb in teaspoon-0.9.0
- old
+ new
@@ -1,58 +1,72 @@
require "teaspoon/environment"
module Teaspoon
class Console
-
def initialize(options = {})
- @options = options
+ @default_options = options
@suites = {}
- Teaspoon::Environment.load(@options)
+ Teaspoon::Environment.load(options)
@server = start_server
rescue Teaspoon::ServerException => e
abort(e.message)
end
+ def options
+ @execute_options ||= {}
+ @default_options ||= {}
+ @default_options.merge(@execute_options)
+ end
+
def failures?
!execute
end
def execute(options = {})
execute_without_handling(options)
rescue Teaspoon::Failure
false
+ rescue Teaspoon::RunnerException => e
+ log(e.message)
+ false
rescue Teaspoon::Error => e
abort(e.message)
end
- def execute_without_handling(options = {})
- @options.merge!(options)
+ def execute_without_handling(execute_options = {})
+ @execute_options = execute_options
@suites = {}
- resolve(@options[:files])
+ resolve(options[:files])
0 == suites.inject(0) do |failures, suite|
- export(suite) if @options.include?(:export)
+ export(suite) if options.include?(:export)
failures += run_specs(suite)
log("") # empty line for space
failures
end
end
def run_specs(suite)
- raise Teaspoon::UnknownSuite, "Unknown suite: \"#{suite}\"" unless Teaspoon.configuration.suite_configs[suite.to_s]
+ unless Teaspoon.configuration.suite_configs[suite.to_s]
+ raise Teaspoon::UnknownSuite, "Unknown suite: \"#{suite}\""
+ end
+
log("Teaspoon running #{suite} suite at #{base_url_for(suite)}")
runner = Teaspoon::Runner.new(suite)
driver.run_specs(runner, url_for(suite))
raise Teaspoon::Failure if Teaspoon.configuration.fail_fast && runner.failure_count > 0
runner.failure_count
end
def export(suite)
- raise Teaspoon::UnknownSuite, "Unknown suite: \"#{suite}\"" unless Teaspoon.configuration.suite_configs[suite.to_s]
+ unless Teaspoon.configuration.suite_configs[suite.to_s]
+ raise Teaspoon::UnknownSuite, "Unknown suite: \"#{suite}\""
+ end
+
log("Teaspoon exporting #{suite} suite at #{base_url_for(suite)}")
- Teaspoon::Exporter.new(suite, url_for(suite, false), @options[:export]).export
+ Teaspoon::Exporter.new(suite, url_for(suite, false), options[:export]).export
end
protected
def resolve(files = [])
@@ -64,18 +78,18 @@
end
end
end
def start_server
- log("Starting the Teaspoon server...")
server = Teaspoon::Server.new
+ log("Starting the Teaspoon server...") unless server.responsive?
server.start
server
end
def suites
- return [@options[:suite]] if @options[:suite].present?
+ return [options[:suite]] if options[:suite].present?
return @suites.keys if @suites.present?
Teaspoon.configuration.suite_configs.keys
end
def driver
@@ -85,22 +99,22 @@
rescue NameError
raise Teaspoon::UnknownDriver, "Unknown driver: \"#{Teaspoon.configuration.driver}\""
end
def base_url_for(suite)
- ["#{@server.url}#{Teaspoon.configuration.mount_at}", suite].join('/')
+ ["#{@server.url}#{Teaspoon.configuration.mount_at}", suite].join("/")
end
def url_for(suite, console = true)
- url = [base_url_for(suite), filter(suite)].compact.join('?')
- url += "#{(url.include?("?") ? "&" : "?")}reporter=Console" if console
+ url = [base_url_for(suite), filter(suite)].compact.join("?")
+ url += "#{(url.include?('?') ? '&' : '?')}reporter=Console" if console
url
end
def filter(suite)
parts = []
- parts << "grep=#{URI::encode(@options[:filter])}" if @options[:filter].present?
- (@suites[suite] || @options[:files] || []).flatten.each { |file| parts << "file[]=#{URI::encode(file)}" }
+ parts << "grep=#{URI::encode(options[:filter])}" if options[:filter].present?
+ (@suites[suite] || options[:files] || []).flatten.each { |file| parts << "file[]=#{URI::encode(file)}" }
"#{parts.join('&')}" if parts.present?
end
def log(str, force = false)
STDOUT.print("#{str}\n") if force || !Teaspoon.configuration.suppress_log