Class: Test::Unit::Priority::Checker
Relationships & Source Files | |
Inherits: | Object |
Defined in: | lib/test/unit/priority.rb |
Class Method Summary
- .available_priorities
- .have_priority?(name) ⇒ Boolean
- .need_to_run?(test) ⇒ Boolean
- .new(test) ⇒ Checker constructor
- .run_priority_high?(test) ⇒ Boolean
- .run_priority_important?(test) ⇒ Boolean
- .run_priority_low?(test) ⇒ Boolean
- .run_priority_must?(test) ⇒ Boolean
- .run_priority_never?(test) ⇒ Boolean
- .run_priority_normal?(test) ⇒ Boolean
- .priority_check_method_name(priority_name) private
Instance Attribute Summary
- #need_to_run? ⇒ Boolean readonly
- #test readonly
- #previous_test_success? ⇒ Boolean readonly private
Instance Method Summary
- #setup
- #teardown
- #escape_class_name(class_name) private
- #escaped_method_name private
- #passed_file private
- #result_dir private
Constructor Details
.new(test) ⇒ Checker
Class Method Details
.available_priorities
[ GitHub ]# 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) ⇒ Boolean
# 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) ⇒ Boolean
# 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
.priority_check_method_name(priority_name) (private)
[ GitHub ]# File 'lib/test/unit/priority.rb', line 93
def priority_check_method_name(priority_name) "run_priority_#{priority_name}?" end
.run_priority_high?(test) ⇒ Boolean
# File 'lib/test/unit/priority.rb', line 76
def run_priority_high?(test) rand > 0.3 end
.run_priority_important?(test) ⇒ Boolean
# File 'lib/test/unit/priority.rb', line 72
def run_priority_important?(test) rand > 0.1 end
.run_priority_low?(test) ⇒ Boolean
# File 'lib/test/unit/priority.rb', line 84
def run_priority_low?(test) rand > 0.75 end
.run_priority_must?(test) ⇒ Boolean
# File 'lib/test/unit/priority.rb', line 68
def run_priority_must?(test) true end
.run_priority_never?(test) ⇒ Boolean
# File 'lib/test/unit/priority.rb', line 88
def run_priority_never?(test) false end
.run_priority_normal?(test) ⇒ Boolean
# File 'lib/test/unit/priority.rb', line 80
def run_priority_normal?(test) rand > 0.5 end
Instance Attribute Details
#need_to_run? ⇒ Boolean
(readonly)
[ GitHub ]
# File 'lib/test/unit/priority.rb', line 115
def need_to_run? !previous_test_success? or self.class.need_to_run?(@test) end
#previous_test_success? ⇒ Boolean
(readonly, private)
[ GitHub ]
# File 'lib/test/unit/priority.rb', line 120
def previous_test_success? File.exist?(passed_file) end
#test (readonly)
[ GitHub ]# File 'lib/test/unit/priority.rb', line 98
attr_reader :test
Instance Method Details
#escape_class_name(class_name) (private)
[ GitHub ]# File 'lib/test/unit/priority.rb', line 150
def escape_class_name(class_name) class_name.gsub(/(?:[: \\\/])/, "_") end
#escaped_method_name (private)
[ GitHub ]# 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 (private)
[ GitHub ]# File 'lib/test/unit/priority.rb', line 146
def passed_file File.join(result_dir, "passed") end
#result_dir (private)
# 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. (File.join(parent_directory, *components)) begin FileUtils.mkdir_p(dir) return dir rescue Errno::EACCES end end raise Errno::EACCES, parent_directories.join(", ") end
#setup
[ GitHub ]# File 'lib/test/unit/priority.rb', line 103
def setup FileUtils.rm_f(passed_file) end
#teardown
[ GitHub ]# 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