lib/spork/runner.rb in spork-0.5.10 vs lib/spork/runner.rb in spork-0.5.11
- old
+ new
@@ -1,12 +1,13 @@
require 'optparse'
require 'spork/server'
+require 'spork/test_framework'
module Spork
# This is used by bin/spork. It's wrapped in a class because it's easier to test that way.
class Runner
- attr_reader :server
+ attr_reader :test_framework
def self.run(args, output, error)
self.new(args, output, error).run
end
@@ -28,77 +29,51 @@
opt.parse!(args)
if @options[:help]
@output.puts opt
@output.puts
- @output.puts supported_servers_text
+ @output.puts supported_test_frameworks_text
exit(0)
end
end
- def supported_servers_text
+ def supported_test_frameworks_text
text = StringIO.new
text.puts "Supported test frameworks:"
- text.puts Spork::Server.supported_servers.sort { |a,b| a.server_name <=> b.server_name }.map { |s| (s.available? ? '(*) ' : '( ) ') + s.server_name }
+ text.puts Spork::TestFramework.supported_test_frameworks.sort { |a,b| a.short_name <=> b.short_name }.map { |s| (s.available? ? '(*) ' : '( ) ') + s.short_name }
text.puts "\nLegend: ( ) - not detected in project (*) - detected\n"
text.string
end
# Returns a server for the specified (or the detected default) testing framework. Returns nil if none detected, or if the specified is not supported or available.
- def find_server
- if options[:server_matcher]
- @server = Spork::Server.supported_servers(options[:server_matcher]).first
- unless @server
- @error.puts <<-ERROR
-#{options[:server_matcher].inspect} didn't match a supported test framework.
-
-#{supported_servers_text}
- ERROR
- return
- end
-
- unless @server.available?
- @error.puts <<-USEFUL_ERROR
-I can't find the helper file #{@server.helper_file} for the #{@server.server_name} testing framework.
-Are you running me from the project directory?
- USEFUL_ERROR
- return
- end
- else
- @server = Spork::Server.available_servers.first
- if @server.nil?
- @error.puts <<-USEFUL_ERROR
-I can't find any testing frameworks to use.
-Are you running me from a project directory?
- USEFUL_ERROR
- return
- end
- end
- @server
+ def find_test_framework
+ Spork::TestFramework.factory(@output, @error, options[:server_matcher])
+ rescue Spork::TestFramework::NoFrameworksAvailable => e
+ @error.puts e.message
+ rescue Spork::TestFramework::FactoryException => e
+ @error.puts "#{e.message}\n\n#{supported_test_frameworks_text}"
end
def run
- return false unless find_server
+ return false unless test_framework = find_test_framework
ENV["DRB"] = 'true'
- @error.puts "Using #{server.server_name}"
+ @error.puts "Using #{test_framework.short_name}"
@error.flush
- server.port = options[:port]
-
case
when options[:bootstrap]
- server.bootstrap
+ test_framework.bootstrap
when options[:diagnose]
require 'spork/diagnoser'
- Spork::Diagnoser.install_hook!(server.entry_point)
- server.preload
+ Spork::Diagnoser.install_hook!(test_framework.entry_point)
+ test_framework.preload
Spork::Diagnoser.output_results(@output)
return true
else
- return(false) unless server.preload
- server.run
+ return(false) unless test_framework.preload
+ Spork::Server.run(:port => @options[:port], :test_framework => test_framework)
return true
end
end
private