Class Spork::TestFramework
In: lib/spork/test_framework.rb
Parent: Object

Methods

Classes and Modules

Class Spork::TestFramework::FactoryException
Class Spork::TestFramework::FrameworkNotAvailable
Class Spork::TestFramework::NoFrameworkMatched
Class Spork::TestFramework::NoFrameworksAvailable

Constants

LOAD_PREFERENCE = ['RSpec', 'Cucumber']
BOOTSTRAP_FILE = File.dirname(__FILE__) + "/../../assets/bootstrap.rb"

Attributes

stderr  [R] 
stdout  [R] 

Public Class methods

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

[Source]

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

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

[Source]

# File lib/spork/test_framework.rb, line 65
  def self.available_test_frameworks
    supported_test_frameworks.select { |s| s.available? }
  end

[Source]

# File lib/spork/test_framework.rb, line 56
  def self.default_port
    (ENV["#{short_name.upcase}_DRB"] || self::DEFAULT_PORT).to_i
  end

[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

[Source]

# File lib/spork/test_framework.rb, line 52
  def self.helper_file
    self::HELPER_FILE
  end

Used to specify

[Source]

# File lib/spork/test_framework.rb, line 115
  def self.load_preference_index
    LOAD_PREFERENCE.index(short_name) || LOAD_PREFERENCE.length
  end

[Source]

# File lib/spork/test_framework.rb, line 36
  def initialize(stdout = STDOUT, stderr = STDERR)
    @stdout, @stderr = stdout, stderr
  end

[Source]

# File lib/spork/test_framework.rb, line 60
  def self.short_name
    self.name.gsub('Spork::TestFramework::', '')
  end

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

[Source]

# 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)}/i)
    end
  end

Protected Class methods

[Source]

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

Public Instance methods

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

[Source]

# 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

Detects if the test helper has been bootstrapped.

[Source]

# File lib/spork/test_framework.rb, line 87
  def bootstrapped?
    File.read(helper_file).include?("Spork.prefork")
  end

[Source]

# File lib/spork/test_framework.rb, line 153
  def default_port
    self.class.default_port
  end

[Source]

# File lib/spork/test_framework.rb, line 149
  def entry_point
    bootstrapped? ? helper_file : framework.entry_point
  end

[Source]

# File lib/spork/test_framework.rb, line 82
  def helper_file
    self.class.helper_file
  end

[Source]

# File lib/spork/test_framework.rb, line 119
  def preload
    Spork.exec_prefork do
      unless 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 your 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

[Source]

# File lib/spork/test_framework.rb, line 145
  def run_tests(argv, stderr, stdout)
    raise NotImplementedError
  end

[Source]

# File lib/spork/test_framework.rb, line 78
  def short_name
    self.class.short_name
  end

Protected Instance methods

[Source]

# File lib/spork/test_framework.rb, line 162
    def framework
      @framework ||= Spork::AppFramework.detect_framework
    end

[Validate]