deep_test 1.1.4 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +15 -5
- data/README +149 -5
- data/Rakefile +131 -11
- data/bin/deep_test +15 -0
- data/lib/deep_test.rb +62 -4
- data/lib/deep_test/database/mysql_setup_listener.rb +109 -0
- data/lib/deep_test/database/setup_listener.rb +116 -0
- data/lib/deep_test/distributed/dispatch_controller.rb +53 -0
- data/lib/deep_test/distributed/drb_client_connection_info.rb +15 -0
- data/lib/deep_test/distributed/filename_resolver.rb +40 -0
- data/lib/deep_test/distributed/master_test_server.rb +52 -0
- data/lib/deep_test/distributed/multi_test_server_proxy.rb +44 -0
- data/lib/deep_test/distributed/null_work_unit.rb +12 -0
- data/lib/deep_test/distributed/remote_worker_client.rb +54 -0
- data/lib/deep_test/distributed/remote_worker_server.rb +82 -0
- data/lib/deep_test/distributed/rsync.rb +37 -0
- data/lib/deep_test/distributed/show_status.rhtml +41 -0
- data/lib/deep_test/distributed/test_server.rb +78 -0
- data/lib/deep_test/distributed/test_server_status.rb +9 -0
- data/lib/deep_test/distributed/test_server_workers.rb +24 -0
- data/lib/deep_test/distributed/throughput_runner.rb +42 -0
- data/lib/deep_test/distributed/throughput_statistics.rb +26 -0
- data/lib/deep_test/distributed/throughput_worker_client.rb +19 -0
- data/lib/deep_test/extensions/drb_extension.rb +34 -0
- data/lib/deep_test/extensions/object_extension.rb +8 -0
- data/lib/deep_test/listener_list.rb +17 -0
- data/lib/deep_test/local_workers.rb +55 -0
- data/lib/deep_test/logger.rb +10 -2
- data/lib/deep_test/marshallable_exception_wrapper.rb +44 -0
- data/lib/deep_test/metrics/gatherer.rb +67 -0
- data/lib/deep_test/metrics/queue_lock_wait_time_measurement.rb +133 -0
- data/lib/deep_test/null_worker_listener.rb +50 -0
- data/lib/deep_test/option.rb +60 -0
- data/lib/deep_test/options.rb +61 -24
- data/lib/deep_test/process_orchestrator.rb +31 -78
- data/lib/deep_test/rake_tasks.rb +3 -0
- data/lib/deep_test/result_reader.rb +36 -0
- data/lib/deep_test/rspec_detector.rb +15 -8
- data/lib/deep_test/server.rb +68 -4
- data/lib/deep_test/spec.rb +1 -0
- data/lib/deep_test/spec/extensions/example_group_methods.rb +37 -11
- data/lib/deep_test/spec/extensions/example_methods.rb +46 -0
- data/lib/deep_test/spec/extensions/options.rb +35 -3
- data/lib/deep_test/spec/runner.rb +19 -10
- data/lib/deep_test/spec/work_result.rb +12 -9
- data/lib/deep_test/spec/work_unit.rb +12 -7
- data/lib/deep_test/test.rb +1 -1
- data/lib/deep_test/test/extensions/error.rb +7 -7
- data/lib/deep_test/test/runner.rb +1 -6
- data/lib/deep_test/test/supervised_test_suite.rb +19 -16
- data/lib/deep_test/test/work_result.rb +34 -0
- data/lib/deep_test/test/work_unit.rb +6 -2
- data/lib/deep_test/test_task.rb +15 -35
- data/lib/deep_test/ui/console.rb +76 -0
- data/lib/deep_test/ui/null.rb +17 -0
- data/lib/deep_test/warlock.rb +92 -17
- data/lib/deep_test/worker.rb +38 -2
- data/script/internal/run_test_suite.rb +7 -0
- data/script/public/master_test_server.rb +24 -0
- data/script/public/test_server.rb +18 -0
- data/script/public/test_throughput.rb +29 -0
- data/test/deep_test/database/mysql_setup_listener_test.rb +14 -0
- data/test/deep_test/distributed/dispatch_controller_test.rb +209 -0
- data/test/deep_test/distributed/drb_client_connection_info_test.rb +42 -0
- data/test/deep_test/distributed/filename_resolver_test.rb +52 -0
- data/test/deep_test/distributed/master_test_server_test.rb +32 -0
- data/test/deep_test/distributed/multi_test_server_proxy_test.rb +96 -0
- data/test/deep_test/distributed/remote_worker_client_test.rb +180 -0
- data/test/deep_test/distributed/remote_worker_server_test.rb +99 -0
- data/test/deep_test/distributed/rsync_test.rb +67 -0
- data/test/deep_test/distributed/test_server_test.rb +94 -0
- data/test/deep_test/distributed/test_server_workers_test.rb +26 -0
- data/test/deep_test/distributed/throughput_runner_test.rb +68 -0
- data/test/deep_test/distributed/throughput_worker_client_test.rb +28 -0
- data/test/deep_test/listener_list_test.rb +20 -0
- data/test/deep_test/local_workers_test.rb +22 -0
- data/test/{logger_test.rb → deep_test/logger_test.rb} +2 -2
- data/test/deep_test/marshallable_exception_wrapper_test.rb +44 -0
- data/test/deep_test/metrics/gatherer_test.rb +66 -0
- data/test/deep_test/process_orchestrator_test.rb +11 -0
- data/test/deep_test/result_reader_test.rb +128 -0
- data/test/deep_test/server_test.rb +58 -0
- data/test/deep_test/test/extensions/error_test.rb +40 -0
- data/test/deep_test/test/supervised_test_suite_test.rb +19 -29
- data/test/deep_test/test/work_result_test.rb +81 -0
- data/test/deep_test/test/work_unit_test.rb +15 -4
- data/test/deep_test/test_task_test.rb +10 -0
- data/test/deep_test/ui/console_test.rb +9 -0
- data/test/deep_test/warlock_test.rb +17 -0
- data/test/deep_test/worker_test.rb +32 -0
- data/test/simple_test_blackboard.rb +2 -1
- data/test/test_helper.rb +1 -0
- metadata +117 -59
- data/lib/deep_test/rinda_blackboard.rb +0 -26
- data/lib/deep_test/test/extensions/test_result.rb +0 -17
- data/lib/deep_test/tuple_space_factory.rb +0 -12
- data/script/run_test_suite.rb +0 -5
- data/test/deep_test/rinda_blackboard_test.rb +0 -15
- data/test/deep_test/test/extensions/test_result_test.rb +0 -71
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + "/../test_helper"
|
|
2
|
+
|
|
3
|
+
unit_tests do
|
|
4
|
+
test "shutdown calls done_with_work" do
|
|
5
|
+
orchestrator = DeepTest::ProcessOrchestrator.new(nil, stub_everything, nil)
|
|
6
|
+
server = mock
|
|
7
|
+
server.expects(:done_with_work)
|
|
8
|
+
|
|
9
|
+
orchestrator.shutdown(server)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + "/../test_helper"
|
|
2
|
+
|
|
3
|
+
unit_tests do
|
|
4
|
+
|
|
5
|
+
class FakeResult
|
|
6
|
+
attr_reader :identifier
|
|
7
|
+
def initialize(i) @identifier = i; end
|
|
8
|
+
def ==(other) identifier == other.identifier; end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
test "reads all as many results as requested" do
|
|
12
|
+
blackboard = DeepTest::SimpleTestBlackboard.new
|
|
13
|
+
1.upto(4) {|i| blackboard.write_result FakeResult.new(i)}
|
|
14
|
+
work_units = {1 => "One", 2 => "Two", 3 => "Three"}
|
|
15
|
+
DeepTest::ResultReader.new(blackboard).read(work_units) {}
|
|
16
|
+
assert_equal FakeResult.new(4), blackboard.take_result
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
test "returns unread tests on ResultOverdueError" do
|
|
20
|
+
blackboard = DeepTest::SimpleTestBlackboard.new
|
|
21
|
+
blackboard.simulate_result_overdue_error = true
|
|
22
|
+
work_units = {1 => "One"}
|
|
23
|
+
DeepTest.logger.expects(:error)
|
|
24
|
+
DeepTest::ResultReader.new(blackboard).read(work_units) {}
|
|
25
|
+
assert_equal({1 => "One"}, work_units)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
test "yields each result" do
|
|
29
|
+
blackboard = DeepTest::SimpleTestBlackboard.new
|
|
30
|
+
1.upto(3) {|i| blackboard.write_result FakeResult.new(i)}
|
|
31
|
+
results = []
|
|
32
|
+
work_units = {1 => "One", 2 => "Two", 3 => "Three"}
|
|
33
|
+
DeepTest::ResultReader.new(blackboard).read(work_units) {|r| results << r}
|
|
34
|
+
assert_equal [["One", FakeResult.new(1)],
|
|
35
|
+
["Two", FakeResult.new(2)],
|
|
36
|
+
["Three", FakeResult.new(3)]],
|
|
37
|
+
results
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
test "keeps attempting to read results when none are available" do
|
|
41
|
+
blackboard = DeepTest::SimpleTestBlackboard.new
|
|
42
|
+
work_units = {1 => "One", 2 => "Two", 3 => "Three"}
|
|
43
|
+
t = Thread.new {DeepTest::ResultReader.new(blackboard).read(work_units) {}}
|
|
44
|
+
1.upto(4) {|i| blackboard.write_result FakeResult.new(i)}
|
|
45
|
+
t.join
|
|
46
|
+
assert_equal FakeResult.new(4), blackboard.take_result
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
test "doesn't yield empty results" do
|
|
50
|
+
blackboard = DeepTest::SimpleTestBlackboard.new
|
|
51
|
+
results = []
|
|
52
|
+
t = Thread.new {DeepTest::ResultReader.new(blackboard).read(1 => "One") {|r| results << r}}
|
|
53
|
+
blackboard.write_result FakeResult.new(1)
|
|
54
|
+
t.join
|
|
55
|
+
assert_equal [["One", FakeResult.new(1)]], results
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
test "prints output if result has output" do
|
|
59
|
+
blackboard = DeepTest::SimpleTestBlackboard.new
|
|
60
|
+
blackboard.write_result mock(:output => "output", :identifier => 1)
|
|
61
|
+
|
|
62
|
+
out = capture_stdout do
|
|
63
|
+
DeepTest::ResultReader.new(blackboard).read(1 => "One") {}
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
assert_equal "output", out
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
test "doesn't print any output if output is nil" do
|
|
70
|
+
blackboard = DeepTest::SimpleTestBlackboard.new
|
|
71
|
+
blackboard.write_result mock(:output => nil, :identifier => 1)
|
|
72
|
+
|
|
73
|
+
out = capture_stdout do
|
|
74
|
+
DeepTest::ResultReader.new(blackboard).read(1 => "One") {}
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
assert_equal "", out
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
test "prints useful error information in case of Worker::Error" do
|
|
81
|
+
error = RuntimeError.new "message"
|
|
82
|
+
error.set_backtrace ['a', 'b']
|
|
83
|
+
|
|
84
|
+
blackboard = DeepTest::SimpleTestBlackboard.new
|
|
85
|
+
blackboard.write_result DeepTest::Worker::Error.new("work_unit", error)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
out = capture_stdout do
|
|
89
|
+
DeepTest::ResultReader.new(blackboard).read(1 => "One") {}
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
assert_equal "work_unit: message\na\nb\n", out
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
test "doesn't yield Worker::Error results" do
|
|
96
|
+
blackboard = DeepTest::SimpleTestBlackboard.new
|
|
97
|
+
blackboard.write_result DeepTest::Worker::Error.new("work_unit", RuntimeError.new)
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
results = []
|
|
101
|
+
capture_stdout do
|
|
102
|
+
DeepTest::ResultReader.new(blackboard).read(1 => "One") {|r| results << r}
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
assert_equal [], results
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
test "doesn't modify original work unit hash" do
|
|
109
|
+
blackboard = DeepTest::SimpleTestBlackboard.new
|
|
110
|
+
blackboard.write_result FakeResult.new(1)
|
|
111
|
+
work_units = {1 => "One"}
|
|
112
|
+
DeepTest::ResultReader.new(blackboard).read(work_units) {}
|
|
113
|
+
assert_equal({1 => "One"}, work_units)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
test "returns remaining tests that didn't have errors" do
|
|
117
|
+
blackboard = DeepTest::SimpleTestBlackboard.new
|
|
118
|
+
blackboard.write_result FakeResult.new(1)
|
|
119
|
+
blackboard.write_result DeepTest::Worker::Error.new("work_unit", RuntimeError.new)
|
|
120
|
+
|
|
121
|
+
work_units = {1 => "One", 2 => "Two"}
|
|
122
|
+
|
|
123
|
+
capture_stdout do
|
|
124
|
+
missing_work_units = DeepTest::ResultReader.new(blackboard).read(work_units) {}
|
|
125
|
+
assert_equal({2 => "Two"}, missing_work_units)
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + "/../test_helper"
|
|
2
|
+
|
|
3
|
+
unit_tests do
|
|
4
|
+
test "take_work returns result of push_work when it is available" do
|
|
5
|
+
server = DeepTest::Server.new(DeepTest::Options.new({}))
|
|
6
|
+
server.write_work :work
|
|
7
|
+
assert_equal :work, server.take_work
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
test "take_work raises error when no work is currently available" do
|
|
11
|
+
assert_raises(DeepTest::Server::NoWorkUnitsAvailableError) do
|
|
12
|
+
DeepTest::Server.new(DeepTest::Options.new({})).take_work
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
test "take_work raises error when there is no work left to" do
|
|
17
|
+
server = DeepTest::Server.new(DeepTest::Options.new({}))
|
|
18
|
+
server.done_with_work
|
|
19
|
+
|
|
20
|
+
assert_raises(DeepTest::Server::NoWorkUnitsRemainingError) do
|
|
21
|
+
server.take_work
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
test "take_result returns result of push_result when it is available" do
|
|
26
|
+
server = DeepTest::Server.new(DeepTest::Options.new({}))
|
|
27
|
+
t = Thread.new {server.take_result}
|
|
28
|
+
server.write_result :result
|
|
29
|
+
assert_equal :result, t.value
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
test "take_result timeouts out after configurable number of seconds" do
|
|
33
|
+
server = DeepTest::Server.new(
|
|
34
|
+
DeepTest::Options.new(:timeout_in_seconds => 0.01)
|
|
35
|
+
)
|
|
36
|
+
Thread.new {sleep 0.1; server.write_result :too_late}
|
|
37
|
+
assert_raises(DeepTest::Server::ResultOverdueError) {server.take_result}
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
test "write_work returns nil" do
|
|
41
|
+
server = DeepTest::Server.new(DeepTest::Options.new({}))
|
|
42
|
+
assert_equal nil, server.write_work(:a)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
test "write_result returns nil" do
|
|
46
|
+
server = DeepTest::Server.new(DeepTest::Options.new({}))
|
|
47
|
+
assert_equal nil, server.write_result(:a)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
test "start returns instance of server" do
|
|
51
|
+
DRb.expects(:start_service)
|
|
52
|
+
DRb.expects(:uri)
|
|
53
|
+
DeepTest.logger.expects(:info)
|
|
54
|
+
|
|
55
|
+
server = DeepTest::Server.start(DeepTest::Options.new({}))
|
|
56
|
+
assert_kind_of DeepTest::Server, server
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + "/../../../test_helper"
|
|
2
|
+
|
|
3
|
+
unit_tests do
|
|
4
|
+
test "make_exception_marshallable wraps exception in a mashallable exception" do
|
|
5
|
+
error = Test::Unit::Error.new "test_name", Exception.new("message")
|
|
6
|
+
error.make_exception_marshallable
|
|
7
|
+
|
|
8
|
+
assert_kind_of DeepTest::MarshallableExceptionWrapper, error.exception
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
test "calling make_exception_marshallable twice only wraps exception once" do
|
|
12
|
+
error = Test::Unit::Error.new "test_name", Exception.new("message")
|
|
13
|
+
error.make_exception_marshallable
|
|
14
|
+
error.make_exception_marshallable
|
|
15
|
+
|
|
16
|
+
assert_kind_of DeepTest::MarshallableExceptionWrapper, error.exception
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
test "error is accessible as normal when it has not been made marshallable" do
|
|
20
|
+
error = Test::Unit::Error.new "test_name", e = Exception.new("message")
|
|
21
|
+
assert_equal e, error.exception
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
test "resolve_marshallable_exception restores the original exception" do
|
|
25
|
+
error = Test::Unit::Error.new "test_name", Exception.new("message")
|
|
26
|
+
error.make_exception_marshallable
|
|
27
|
+
error.resolve_marshallable_exception
|
|
28
|
+
|
|
29
|
+
assert_kind_of Exception, error.exception
|
|
30
|
+
assert_equal 'message', error.exception.message
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
test "resolve_marshallable_exception does not fail when exception has not been made marshallable" do
|
|
34
|
+
error = Test::Unit::Error.new "test_name", Exception.new("message")
|
|
35
|
+
error.resolve_marshallable_exception
|
|
36
|
+
|
|
37
|
+
assert_kind_of Exception, error.exception
|
|
38
|
+
assert_equal 'message', error.exception.message
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -33,13 +33,28 @@ unit_tests do
|
|
|
33
33
|
assert_equal 1, result.failure_count
|
|
34
34
|
end
|
|
35
35
|
|
|
36
|
+
test "worker errors are counted as errors" do
|
|
37
|
+
test_case = Class.new(Test::Unit::TestCase) do
|
|
38
|
+
test("1") {}
|
|
39
|
+
end.new("test_1")
|
|
40
|
+
|
|
41
|
+
blackboard = DeepTest::SimpleTestBlackboard.new
|
|
42
|
+
supervised_suite = DeepTest::Test::SupervisedTestSuite.new(test_case, blackboard)
|
|
43
|
+
result = Test::Unit::TestResult.new
|
|
44
|
+
|
|
45
|
+
blackboard.write_result DeepTest::Worker::Error.new(test_case, RuntimeError.new)
|
|
46
|
+
capture_stdout {supervised_suite.run(result) {}}
|
|
47
|
+
|
|
48
|
+
assert_equal 1, result.error_count
|
|
49
|
+
end
|
|
50
|
+
|
|
36
51
|
test "run yields test case finished events" do
|
|
37
|
-
|
|
52
|
+
test_case = Class.new(Test::Unit::TestCase) do
|
|
38
53
|
test("1") {}
|
|
39
|
-
end
|
|
54
|
+
end.new("test_1")
|
|
40
55
|
|
|
41
56
|
blackboard = DeepTest::SimpleTestBlackboard.new
|
|
42
|
-
supervised_suite = DeepTest::Test::SupervisedTestSuite.new(
|
|
57
|
+
supervised_suite = DeepTest::Test::SupervisedTestSuite.new(test_case, blackboard)
|
|
43
58
|
|
|
44
59
|
yielded = []
|
|
45
60
|
|
|
@@ -51,32 +66,7 @@ unit_tests do
|
|
|
51
66
|
end
|
|
52
67
|
worker.wait_until_done
|
|
53
68
|
|
|
54
|
-
assert_equal true, yielded.include?([::Test::Unit::TestCase::FINISHED,
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
test "prints output if any" do
|
|
58
|
-
test_case_class = Class.new(Test::Unit::TestCase) do
|
|
59
|
-
test("1") {puts "hello"}
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
blackboard = DeepTest::SimpleTestBlackboard.new
|
|
63
|
-
supervised_suite = DeepTest::Test::SupervisedTestSuite.new(test_case_class.suite, blackboard)
|
|
64
|
-
|
|
65
|
-
worker = ThreadWorker.new(blackboard, 1)
|
|
66
|
-
class <<supervised_suite
|
|
67
|
-
def print(string)
|
|
68
|
-
output << string
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
def output
|
|
72
|
-
@output ||= ""
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
Timeout.timeout(5) do
|
|
76
|
-
supervised_suite.run(stub_everything) {}
|
|
77
|
-
end
|
|
78
|
-
worker.wait_until_done
|
|
79
|
-
assert_equal "hello\n", supervised_suite.output
|
|
69
|
+
assert_equal true, yielded.include?([::Test::Unit::TestCase::FINISHED, test_case.name])
|
|
80
70
|
end
|
|
81
71
|
|
|
82
72
|
test "has same size as underlying suite" do
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
require File.dirname(__FILE__) + "/../../test_helper"
|
|
2
|
+
|
|
3
|
+
unit_tests do
|
|
4
|
+
test "add_to adds correct run_count" do
|
|
5
|
+
result_1 = DeepTest::Test::WorkResult.new "test_name"
|
|
6
|
+
result_1.add_run
|
|
7
|
+
result_1.add_run
|
|
8
|
+
|
|
9
|
+
result_2 = Test::Unit::TestResult.new
|
|
10
|
+
result_1.add_to result_2
|
|
11
|
+
|
|
12
|
+
assert_equal 2, result_2.run_count
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
test "add_to adds correct assertion_count" do
|
|
16
|
+
result_1 = DeepTest::Test::WorkResult.new "test_name"
|
|
17
|
+
result_1.add_assertion
|
|
18
|
+
result_1.add_assertion
|
|
19
|
+
|
|
20
|
+
result_2 = Test::Unit::TestResult.new
|
|
21
|
+
result_1.add_to result_2
|
|
22
|
+
|
|
23
|
+
assert_equal 2, result_2.assertion_count
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
test "add_to adds correct errors" do
|
|
27
|
+
result_1 = DeepTest::Test::WorkResult.new "test_name"
|
|
28
|
+
result_1.add_error(e = Test::Unit::Error.new("test_name", Exception.new))
|
|
29
|
+
|
|
30
|
+
result_2 = Test::Unit::TestResult.new
|
|
31
|
+
result_1.add_to result_2
|
|
32
|
+
|
|
33
|
+
assert_equal [e], result_2.instance_variable_get(:@errors)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
test "add_to adds correct failures" do
|
|
38
|
+
result_1 = DeepTest::Test::WorkResult.new "test_name"
|
|
39
|
+
result_1.add_failure(:failure)
|
|
40
|
+
|
|
41
|
+
result_2 = Test::Unit::TestResult.new
|
|
42
|
+
result_1.add_to result_2
|
|
43
|
+
|
|
44
|
+
assert_equal [:failure], result_2.instance_variable_get(:@failures)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
test "add_error wraps exceptions" do
|
|
48
|
+
result = DeepTest::Test::WorkResult.new "test_name"
|
|
49
|
+
result.add_error Test::Unit::Error.new(
|
|
50
|
+
"test_wraps_exceptions",
|
|
51
|
+
SomeCustomException.new("the exception message")
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
error = result.instance_variable_get("@errors").last
|
|
55
|
+
assert_kind_of DeepTest::MarshallableExceptionWrapper, error.exception
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
test "add_to unwraps exception" do
|
|
59
|
+
work_result = DeepTest::Test::WorkResult.new "test_name"
|
|
60
|
+
work_result.add_error Test::Unit::Error.new(
|
|
61
|
+
"test_wraps_exceptions",
|
|
62
|
+
SomeCustomException.new("the exception message")
|
|
63
|
+
)
|
|
64
|
+
|
|
65
|
+
test_result = ::Test::Unit::TestResult.new
|
|
66
|
+
work_result.add_to(test_result)
|
|
67
|
+
|
|
68
|
+
error = test_result.instance_variable_get("@errors").last
|
|
69
|
+
assert_kind_of SomeCustomException, error.exception
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
test "failed due to deadlock" do
|
|
73
|
+
result = DeepTest::Test::WorkResult.new "test_name"
|
|
74
|
+
begin
|
|
75
|
+
raise FakeDeadlockError.new
|
|
76
|
+
rescue => ex
|
|
77
|
+
result.add_error Test::Unit::Error.new("test_", ex)
|
|
78
|
+
end
|
|
79
|
+
assert_equal true, result.failed_due_to_deadlock?
|
|
80
|
+
end
|
|
81
|
+
end
|
|
@@ -11,10 +11,10 @@ unit_tests do
|
|
|
11
11
|
assert_equal false, work_unit.run.passed?
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
test "returns
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
assert_equal
|
|
14
|
+
test "returns result with identifier of test name" do
|
|
15
|
+
test = TestFactory.passing_test
|
|
16
|
+
work_unit = DeepTest::Test::WorkUnit.new test
|
|
17
|
+
assert_equal test.name, work_unit.run.identifier
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
test "capturing stdout" do
|
|
@@ -37,6 +37,12 @@ unit_tests do
|
|
|
37
37
|
assert_equal 0, result.failure_count
|
|
38
38
|
assert_equal 0, result.assertion_count
|
|
39
39
|
end
|
|
40
|
+
|
|
41
|
+
test "set test_name as identifier on deadlock" do
|
|
42
|
+
test = TestFactory.deadlock_always_test
|
|
43
|
+
work_unit = DeepTest::Test::WorkUnit.new test
|
|
44
|
+
assert_equal test.name, work_unit.run.identifier
|
|
45
|
+
end
|
|
40
46
|
|
|
41
47
|
test "equality is based on test_case" do
|
|
42
48
|
test_case_1 = TestFactory.passing_test
|
|
@@ -47,4 +53,9 @@ unit_tests do
|
|
|
47
53
|
assert_not_equal DeepTest::Test::WorkUnit.new(test_case_1),
|
|
48
54
|
DeepTest::Test::WorkUnit.new(test_case_2)
|
|
49
55
|
end
|
|
56
|
+
|
|
57
|
+
test "to_s is delegated to test case" do
|
|
58
|
+
test_case = TestFactory.passing_test
|
|
59
|
+
assert_equal test_case.to_s, DeepTest::Test::WorkUnit.new(test_case).to_s
|
|
60
|
+
end
|
|
50
61
|
end
|
|
@@ -11,6 +11,16 @@ unit_tests do
|
|
|
11
11
|
assert_equal 20, t.timeout_in_seconds
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
+
test "should support setting distributed_server" do
|
|
15
|
+
t = DeepTest::TestTask.new :deep_test do |t|
|
|
16
|
+
t.stubs(:desc)
|
|
17
|
+
t.stubs(:task)
|
|
18
|
+
t.distributed_server = "uri"
|
|
19
|
+
end
|
|
20
|
+
assert_equal "uri", t.instance_variable_get(:@options).distributed_server
|
|
21
|
+
assert_equal "uri", t.distributed_server
|
|
22
|
+
end
|
|
23
|
+
|
|
14
24
|
test "should support worker_listener" do
|
|
15
25
|
t = DeepTest::TestTask.new :deep_test do |t|
|
|
16
26
|
t.stubs(:desc)
|