9
base.extend(ClassMethods)
12
setup :priority_setup, :before => :prepend
13
teardown :priority_teardown, :after => :append
20
def have_priority?(name)
21
singleton_class = (class << self; self; end)
22
singleton_class.method_defined?(priority_check_method_name(name))
25
def need_to_run?(test)
26
priority = test[:priority] || :normal
27
if have_priority?(priority)
28
send(priority_check_method_name(priority), test)
34
def run_priority_must?(test)
38
def run_priority_important?(test)
42
def run_priority_high?(test)
46
def run_priority_normal?(test)
50
def run_priority_low?(test)
54
def run_priority_never?(test)
59
def priority_check_method_name(priority_name)
60
"run_priority_#{priority_name}?"
70
FileUtils.rm_f(passed_file)
74
if @test.send(:passed?)
75
FileUtils.touch(passed_file)
77
FileUtils.rm_f(passed_file)
82
!previous_test_success? or self.class.need_to_run?(@test)
86
def previous_test_success?
87
File.exist?(passed_file)
91
components = [".test-result",
92
@test.class.name || "AnonymousTestCase",
93
@test.method_name.to_s]
94
parent_directories = [File.dirname($0), Dir.pwd]
95
if Process.respond_to?(:uid)
96
parent_directories << File.join(Dir.tmpdir, Process.uid.to_s)
98
parent_directories.each do |parent_directory|
99
dir = File.expand_path(File.join(parent_directory, *components))
101
FileUtils.mkdir_p(dir)
107
raise Errno::EACCES, parent_directories.join(", ")
111
File.join(result_dir, "passed")
114
def escaped_method_name
115
@method_name.to_s.gsub(/[!?=]$/) do |matched|
129
def priority(name, *tests)
130
unless Checker.have_priority?(name)
131
raise ArgumentError, "unknown priority: #{name}"
133
attribute(:priority, name, {:keep => true}, *tests)
138
Checker.new(self).setup
141
def priority_teardown
142
Checker.new(self).teardown