class Spork::TestFramework

Public Instance Methods

bootstrap() click to toggle source

Bootstraps the current test helper file by prepending a Spork.prefork and Spork.each_run block at the beginning.

# File lib/spork/test_framework.rb, line 92
def bootstrap
  if bootstrapped?
    stderr.puts "Already bootstrapped!"
    return
  end
  stderr.puts "Bootstrapping #{helper_file}."
  contents = File.read(helper_file)
  bootstrap_code = File.read(BOOTSTRAP_FILE)
  File.open(helper_file, "wb") do |f|
    f.puts bootstrap_code
    f.puts contents
  end

  stderr.puts "Done. Edit #{helper_file} now with your favorite text editor and follow the instructions."
  true
end
bootstrapped?() click to toggle source

Detects if the test helper has been bootstrapped.

# File lib/spork/test_framework.rb, line 87
def bootstrapped?
  File.read(helper_file).include?("Spork.prefork")
end
default_port() click to toggle source
# File lib/spork/test_framework.rb, line 153
def default_port
  self.class.default_port
end
entry_point() click to toggle source
# File lib/spork/test_framework.rb, line 149
def entry_point
  bootstrapped? ? helper_file : framework.entry_point
end
helper_file() click to toggle source
# File lib/spork/test_framework.rb, line 82
def helper_file
  self.class.helper_file
end
preload() click to toggle source
# File lib/spork/test_framework.rb, line 119
def preload
  Spork.exec_prefork do
    if not bootstrapped?
      stderr.puts "#{helper_file} has not been bootstrapped.  Run spork --bootstrap to do so."
      stderr.flush

      if framework.bootstrap_required?
        stderr.puts "I can't do anything for you by default for the framework you're using: #{framework.short_name}.\nYou must bootstrap #{helper_file} to continue."
        stderr.flush
        return false
      else
        load(framework.entry_point)
      end
    end

    framework.preload do
      if bootstrapped?
        stderr.puts "Loading Spork.prefork block..."
        stderr.flush
        load(helper_file)
      end
    end
  end
  true
end
run_tests(argv, stderr, stdout) click to toggle source
# File lib/spork/test_framework.rb, line 145
def run_tests(argv, stderr, stdout)
  raise NotImplementedError
end
short_name() click to toggle source
# File lib/spork/test_framework.rb, line 78
def short_name
  self.class.short_name
end

Protected Instance Methods

framework() click to toggle source
# File lib/spork/test_framework.rb, line 162
def framework
  @framework ||= Spork::AppFramework.detect_framework
end

Public Class Methods

available?() click to toggle source

Returns true if the testing frameworks helper file exists. Override if this is not sufficient to detect your testing framework.

# File lib/spork/test_framework.rb, line 110
def self.available?
  File.exist?(helper_file)
end
available_test_frameworks() click to toggle source

Returns a list of all testing servers that have detected their testing framework being used in the project.

# File lib/spork/test_framework.rb, line 65
def self.available_test_frameworks
  supported_test_frameworks.select { |s| s.available? }
end
default_port() click to toggle source
# File lib/spork/test_framework.rb, line 56
def self.default_port
  (ENV["#{short_name.upcase}_DRB"] || self::DEFAULT_PORT).to_i
end
factory(output = STDOUT, error = STDERR, beginning_with = nil) click to toggle source
# File lib/spork/test_framework.rb, line 40
def self.factory(output = STDOUT, error = STDERR, beginning_with = nil)
  if beginning_with
    @klass = supported_test_frameworks(beginning_with).first
    raise(NoFrameworkMatched.new(beginning_with)) if @klass.nil?
    raise(FrameworkNotAvailable.new(@klass)) unless @klass.available?
  else
    @klass = available_test_frameworks.first
    raise(NoFrameworksAvailable.new) unless @klass
  end
  @klass.new(output, error)
end
helper_file() click to toggle source
# File lib/spork/test_framework.rb, line 52
def self.helper_file
  self::HELPER_FILE
end
load_preference_index() click to toggle source

Used to specify

# File lib/spork/test_framework.rb, line 115
def self.load_preference_index
  LOAD_PREFERENCE.index(short_name) || LOAD_PREFERENCE.length
end
new(stdout = STDOUT, stderr = STDERR) click to toggle source
# File lib/spork/test_framework.rb, line 36
def initialize(stdout = STDOUT, stderr = STDERR)
  @stdout, @stderr = stdout, stderr
end
short_name() click to toggle source
# File lib/spork/test_framework.rb, line 60
def self.short_name
  self.name.gsub('Spork::TestFramework::', '')
end
supported_test_frameworks(starting_with = nil) click to toggle source

Returns a list of all servers that have been implemented (it keeps track of them automatically via Class.inherited)

# File lib/spork/test_framework.rb, line 70
def self.supported_test_frameworks(starting_with = nil)
  @@supported_test_frameworks.sort! { |a,b| a.load_preference_index <=> b.load_preference_index }
  return @@supported_test_frameworks if starting_with.nil?
  @@supported_test_frameworks.select do |s|
    s.short_name.match(/^#{Regexp.escape(starting_with)}/)
  end
end

Protected Class Methods

inherited(subclass) click to toggle source
# File lib/spork/test_framework.rb, line 158
def self.inherited(subclass)
  @@supported_test_frameworks << subclass
end