Parent

Included Modules

TestUnitHeckler

Public Class Methods

focus=(value) click to toggle source
    # File lib/test_unit_heckler.rb, line 27
27:   def self.focus=(value)
28:     @@focus = value
29:   end
load_test_files() click to toggle source
    # File lib/test_unit_heckler.rb, line 31
31:   def self.load_test_files
32:     @@tests_loaded = true
33:     Dir.glob(@@test_pattern).each {|test| require test}
34:   end
new(klass_name=nil, method_name=nil, nodes=Heckle::MUTATABLE_NODES) click to toggle source
     # File lib/test_unit_heckler.rb, line 101
101:   def initialize(klass_name=nil, method_name=nil, nodes=Heckle::MUTATABLE_NODES)
102:     super
103:     self.class.load_test_files unless @@tests_loaded
104:   end
test_pattern=(value) click to toggle source
    # File lib/test_unit_heckler.rb, line 23
23:   def self.test_pattern=(value)
24:     @@test_pattern = value
25:   end
validate(klass_name, method_name = nil, nodes = Heckle::MUTATABLE_NODES, force = false) click to toggle source
    # File lib/test_unit_heckler.rb, line 36
36:   def self.validate(klass_name, method_name = nil,
37:                     nodes = Heckle::MUTATABLE_NODES, force = false)
38:     load_test_files
39:     klass = klass_name.to_class
40: 
41:     # Does the method exist?
42:     klass_methods = klass.singleton_methods(false).collect {|meth| "self.#{meth}"}
43:     if method_name
44:       if method_name =~ /self\./
45:         abort "Unknown method: #{klass_name}.#{method_name.gsub('self.', '')}" unless klass_methods.include? method_name
46:       else
47:         abort "Unknown method: #{klass_name}##{method_name}" unless klass.instance_methods(false).include? method_name
48:       end
49:     end
50: 
51:     initial_time = Time.now
52: 
53:     heckle = self.new(klass_name)
54: 
55:     passed = heckle.tests_pass?
56: 
57:     unless force or passed then
58:       abort "Initial run of tests failed... fix and run heckle again"
59:     end
60: 
61:     if self.guess_timeout? then
62:       running_time = Time.now - initial_time
63:       adjusted_timeout = (running_time * 2 < 5) ? 5 : (running_time * 2).ceil
64:       self.timeout = adjusted_timeout
65:     end
66: 
67:     puts "Timeout set to #{adjusted_timeout} seconds."
68: 
69:     if passed then
70:       puts "Initial tests pass. Let's rumble."
71:     else
72:       puts "Initial tests failed but you forced things. Let's rumble."
73:     end
74:     puts
75: 
76:     methods = method_name ? Array(method_name) : klass.instance_methods(false) + klass_methods
77: 
78:     counts = Hash.new(0)
79:     methods.sort.each do |method_name|
80:       result = self.new(klass_name, method_name, nodes).validate
81:       counts[result] += 1
82:     end
83:     all_good = counts[false] == 0
84: 
85:     puts "Heckle Results:"
86:     puts
87:     puts "Passed    : %3d" % counts[true]
88:     puts "Failed    : %3d" % counts[false]
89:     puts "Thick Skin: %3d" % counts[nil]
90:     puts
91: 
92:     if all_good then
93:       puts "All heckling was thwarted! YAY!!!"
94:     else
95:       puts "Improve the tests and try again."
96:     end
97: 
98:     all_good
99:   end

Public Instance Methods

tests_pass?() click to toggle source
     # File lib/test_unit_heckler.rb, line 108
108:   def tests_pass?
109:     silence_stream do
110:       if @@focus and @method_name then
111:         name = normal_to_test @method_name.to_s
112:         ARGV.clear
113:         ARGV << "--name=/#{name}/"
114:       end
115:       result = Test::Unit::AutoRunner.run
116:       ARGV.clear
117:       result
118:     end
119:   end

Disabled; run with --debug to generate this.

[Validate]

Generated with the Darkfish Rdoc Generator 1.1.6.