class Quails::TestUnit::Runner

Public Class Methods

attach_before_load_options(opts) click to toggle source
# File railties/lib/rails/test_unit/runner.rb, line 14
def attach_before_load_options(opts)
  opts.on("--warnings", "-w", "Run with Ruby warnings enabled") {}
  opts.on("--environment", "-e", "Run tests in the ENV environment") {}
end
compose_filter(runnable, filter) click to toggle source
# File railties/lib/rails/test_unit/runner.rb, line 53
def compose_filter(runnable, filter)
  if filters.any? { |_, lines| lines.any? }
    CompositeFilter.new(runnable, filter, filters)
  else
    filter
  end
end
load_tests(argv) click to toggle source
# File railties/lib/rails/test_unit/runner.rb, line 44
def load_tests(argv)
  patterns = extract_filters(argv)

  tests = Rake::FileList[patterns.any? ? patterns : "test/**/*_test.rb"]
  tests.exclude("test/system/**/*") if patterns.empty?

  tests.to_a.each { |path| require File.expand_path(path) }
end
parse_options(argv) click to toggle source
# File railties/lib/rails/test_unit/runner.rb, line 19
def parse_options(argv)
  # Perform manual parsing and cleanup since option parser raises on unknown options.
  env_index = argv.index("--environment") || argv.index("-e")
  if env_index
    argv.delete_at(env_index)
    environment = argv.delete_at(env_index).strip
  end
  ENV["RAILS_ENV"] = environment || "test"

  w_index = argv.index("--warnings") || argv.index("-w")
  $VERBOSE = argv.delete_at(w_index) if w_index
end
rake_run(argv = []) click to toggle source
# File railties/lib/rails/test_unit/runner.rb, line 32
def rake_run(argv = [])
  ARGV.replace Shellwords.split(ENV["TESTOPTS"] || "")

  run(argv)
end
run(argv = []) click to toggle source
# File railties/lib/rails/test_unit/runner.rb, line 38
def run(argv = [])
  load_tests(argv)

  require "active_support/testing/autorun"
end

Private Class Methods

extract_filters(argv) click to toggle source
# File railties/lib/rails/test_unit/runner.rb, line 62
def extract_filters(argv)
  # Extract absolute and relative paths but skip -n /.*/ regexp filters.
  argv.select { |arg| arg =~ %r%^/?\w+/% && !arg.end_with?("/") }.map do |path|
    case
    when path =~ /(:\d+)+$/
      file, *lines = path.split(":")
      filters << [ file, lines ]
      file
    when Dir.exist?(path)
      "#{path}/**/*_test.rb"
    else
      filters << [ path, [] ]
      path
    end
  end
end