class Teaspoon::Console
Public Class Methods
new(options = {})
click to toggle source
# File lib/teaspoon/console.rb, line 6 def initialize(options = {}) @default_options = options @suites = {} Teaspoon::Environment.check_env!(options[:environment]) Teaspoon::Environment.load(options) @server = start_server rescue Teaspoon::ServerError => e Teaspoon.abort(e.message) end
Public Instance Methods
execute(options = {})
click to toggle source
# File lib/teaspoon/console.rb, line 27 def execute(options = {}) execute_without_handling(options) rescue Teaspoon::Failure false rescue Teaspoon::RunnerError => e log(e.message) false rescue Teaspoon::Error => e Teaspoon.abort(e.message) end
execute_without_handling(execute_options = {})
click to toggle source
# File lib/teaspoon/console.rb, line 38 def execute_without_handling(execute_options = {}) @execute_options = execute_options @suites = {} resolve(options[:files]) 0 == suites.inject(0) do |failures, suite| export(suite) if options.include?(:export) failures += run_specs(suite) log("") # empty line for space failures end end
export(suite)
click to toggle source
# File lib/teaspoon/console.rb, line 61 def export(suite) raise Teaspoon::UnknownSuite.new(name: suite) unless Teaspoon.configuration.suite_configs[suite.to_s] log("Teaspoon exporting #{suite} suite at #{base_url_for(suite)}") Teaspoon::Exporter.new(suite, url_for(suite, false), options[:export]).export end
failures?()
click to toggle source
# File lib/teaspoon/console.rb, line 23 def failures? !execute end
options()
click to toggle source
# File lib/teaspoon/console.rb, line 17 def options @execute_options ||= {} @default_options ||= {} @default_options.merge(@execute_options) end
run_specs(suite)
click to toggle source
# File lib/teaspoon/console.rb, line 51 def run_specs(suite) raise Teaspoon::UnknownSuite.new(name: suite) unless Teaspoon.configuration.suite_configs[suite.to_s] 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
Protected Instance Methods
base_url_for(suite)
click to toggle source
# File lib/teaspoon/console.rb, line 99 def base_url_for(suite) ["#{@server.url}#{Teaspoon.configuration.mount_at}", suite].join("/") end
driver()
click to toggle source
# File lib/teaspoon/console.rb, line 93 def driver return @driver if @driver driver = Teaspoon::Driver.fetch(Teaspoon.configuration.driver) @driver = driver.new(Teaspoon.configuration.driver_options) end
filter(suite)
click to toggle source
# File lib/teaspoon/console.rb, line 109 def filter(suite) parts = [] parts << "grep=#{CGI.escape(options[:filter])}" if options[:filter].present? (@suites[suite] || options[:files] || []).flatten.each { |file| parts << "file[]=#{CGI.escape(file)}" } "#{parts.join('&')}" if parts.present? end
log(str)
click to toggle source
# File lib/teaspoon/console.rb, line 116 def log(str) STDOUT.print("#{str}\n") unless Teaspoon.configuration.suppress_log end
resolve(files = [])
click to toggle source
# File lib/teaspoon/console.rb, line 70 def resolve(files = []) return if files.blank? files.uniq.each do |path| if result = Teaspoon::Suite.resolve_spec_for(path) suite = @suites[result[:suite]] ||= [] suite << result[:path] end end end
start_server()
click to toggle source
# File lib/teaspoon/console.rb, line 80 def start_server server = Teaspoon::Server.new log("Starting the Teaspoon server...") unless server.responsive? server.start server end
suites()
click to toggle source
# File lib/teaspoon/console.rb, line 87 def suites return [options[:suite]] if options[:suite].present? return @suites.keys if @suites.present? Teaspoon.configuration.suite_configs.keys end
url_for(suite, console = true)
click to toggle source
# File lib/teaspoon/console.rb, line 103 def url_for(suite, console = true) url = [base_url_for(suite), filter(suite)].compact.join("?") url += "#{(url.include?('?') ? '&' : '?')}reporter=Console" if console url end