forked from iron-io/abt
/
test_worker.rb
106 lines (87 loc) · 2.7 KB
/
test_worker.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
require 'iron_worker'
require 'json'
# require 'test/unit'
# bump.....
ARGV=[]
module Abt
class MiniTestWithHooks < MiniTest::Unit
def before_suites
end
def after_suites
end
def _run_suites(suites, type)
puts 'run_suites ' + suites.inspect + ' type=' + type.inspect
begin
before_suites
super_result = super(suites, type)
puts 'run_suites super_result=' + super_result.inspect
ensure
after_suites
end
end
def _run_suite(suite, type)
puts 'run_suite ' + suite.inspect + ' type=' + type.inspect
begin
# suite.before_suite
super_result = super(suite, type)
puts 'run_suite super_result=' + super_result.inspect
ensure
# suite.after_suite
end
end
end
class TestWorker < IronWorker::Base
merge_gem 'git'
attr_accessor :git_url, :test_config
def run
if is_remote?
require File.join(File.dirname(__FILE__), '/gems/minitest/lib/minitest/unit')
require File.join(File.dirname(__FILE__), '/gems/test-unit/lib/test/unit/priority')
require File.join(File.dirname(__FILE__), '/gems/test-unit/lib/test/unit/testcase')
require File.join(File.dirname(__FILE__), '/gems/test-unit/lib/test/unit/assertions')
require File.join(File.dirname(__FILE__), '/gems/test-unit/lib/test/unit')
require File.join(File.dirname(__FILE__), '/gems/minitest/lib/minitest/autorun')
end
# Test::Unit.run = false
MiniTest::Unit.runner = MiniTestWithHooks.new
# g = Git.open(user_dir, :log => Logger.new(STDOUT))
clone_dir = 'cloned'
x = File.join(user_dir, clone_dir)
p x
if is_local?
FileUtils.rm_rf(File.join(user_dir, clone_dir))
end
$abt_config = self.test_config
puts "cloning #{git_url}..."
g = Git.clone(git_url, clone_dir, :path => user_dir)
Dir.glob(File.join(user_dir, clone_dir, 'test', 'test_*.rb')).each { |f|
puts "requiring f"
require f
}
end
def suite_results_output(options={})
line_break = "\n"
if options[:format] == 'html'
line_break = "<br/>"
end
s = "Suite Results:#{line_break}"
s << "#{@num_failed} failed out of #{@num_tests} tests.#{line_break}"
if @num_failed > 0
@failed.each do |f|
s << "#{f.test_class}.#{f.test_method} failed: #{f.result.message}#{line_break}"
end
end
s << "Test suite duration: #{duration}ms.#{line_break}"
s
end
def duration
((@end_time.to_f - @start_time.to_f) * 1000.0).to_i
end
def time_in_ms(t)
(t.to_f * 1000.0).to_i
end
# callbacks
def on_complete
end
end
end