class Test::Unit::Priority::Checker

Attributes

test[R]

Public Class Methods

available_priorities() click to toggle source
# File lib/test/unit/priority.rb, line 61
def available_priorities
  methods(false).collect do |name|
    /\Arun_priority_(.+)\?\z/ =~ name.to_s
    $1
  end.compact
end
have_priority?(name) click to toggle source
# File lib/test/unit/priority.rb, line 47
def have_priority?(name)
  singleton_class = (class << self; self; end)
  singleton_class.method_defined?(priority_check_method_name(name))
end
need_to_run?(test) click to toggle source
# File lib/test/unit/priority.rb, line 52
def need_to_run?(test)
  priority = test[:priority] || Priority.default
  if have_priority?(priority)
    __send__(priority_check_method_name(priority), test)
  else
    true
  end
end
new(test) click to toggle source
# File lib/test/unit/priority.rb, line 99
def initialize(test)
  @test = test
end
run_priority_high?(test) click to toggle source
# File lib/test/unit/priority.rb, line 76
def run_priority_high?(test)
  rand > 0.3
end
run_priority_important?(test) click to toggle source
# File lib/test/unit/priority.rb, line 72
def run_priority_important?(test)
  rand > 0.1
end
run_priority_low?(test) click to toggle source
# File lib/test/unit/priority.rb, line 84
def run_priority_low?(test)
  rand > 0.75
end
run_priority_must?(test) click to toggle source
# File lib/test/unit/priority.rb, line 68
def run_priority_must?(test)
  true
end
run_priority_never?(test) click to toggle source
# File lib/test/unit/priority.rb, line 88
def run_priority_never?(test)
  false
end
run_priority_normal?(test) click to toggle source
# File lib/test/unit/priority.rb, line 80
def run_priority_normal?(test)
  rand > 0.5
end

Private Class Methods

priority_check_method_name(priority_name) click to toggle source
# File lib/test/unit/priority.rb, line 93
def priority_check_method_name(priority_name)
  "run_priority_#{priority_name}?"
end

Public Instance Methods

need_to_run?() click to toggle source
# File lib/test/unit/priority.rb, line 115
def need_to_run?
  !previous_test_success? or self.class.need_to_run?(@test)
end
setup() click to toggle source
# File lib/test/unit/priority.rb, line 103
def setup
  FileUtils.rm_f(passed_file)
end
teardown() click to toggle source
# File lib/test/unit/priority.rb, line 107
def teardown
  if @test.__send__(:passed?)
    FileUtils.touch(passed_file)
  else
    FileUtils.rm_f(passed_file)
  end
end

Private Instance Methods

escape_class_name(class_name) click to toggle source
# File lib/test/unit/priority.rb, line 150
def escape_class_name(class_name)
  class_name.gsub(/(?:[: \\/])/, "_")
end
escaped_method_name() click to toggle source
# File lib/test/unit/priority.rb, line 154
def escaped_method_name
  @test.method_name.to_s.gsub(/(?:[: ]|[!?=]$)/) do |matched|
    case matched
    when ":"
      "_colon_"
    when " "
      "_"
    when "!"
      ".destructive"
    when "?"
      ".predicate"
    when "="
      ".equal"
    end
  end
end
passed_file() click to toggle source
# File lib/test/unit/priority.rb, line 146
def passed_file
  File.join(result_dir, "passed")
end
previous_test_success?() click to toggle source
# File lib/test/unit/priority.rb, line 120
def previous_test_success?
  File.exist?(passed_file)
end
result_dir() click to toggle source
# File lib/test/unit/priority.rb, line 124
def result_dir
  components = [
    ".test-result",
    escape_class_name(@test.class.name || "AnonymousTestCase"),
    escaped_method_name,
  ]
  parent_directories = [File.dirname($0), Dir.pwd]
  if Process.respond_to?(:uid)
    parent_directories << File.join(Dir.tmpdir, Process.uid.to_s)
  end
  parent_directories.each do |parent_directory|
    dir = File.expand_path(File.join(parent_directory, *components))
    begin
      FileUtils.mkdir_p(dir)
      return dir
    rescue Errno::EACCES
    end
  end

  raise Errno::EACCES, parent_directories.join(", ")
end