test-queue 0.10.0 → 0.11.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.
- checksums.yaml +4 -4
- data/lib/test_queue/runner/testunit.rb +75 -39
- data/lib/test_queue/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aa0c2ad5105a1578394da94c17d2a8c72d330023d66bd5f0df79300b848cd123
|
4
|
+
data.tar.gz: 1a623275a814f8c505241de2b85af5447567b5a089760192e2126479b43004b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0cc7375bc4a6b845d9ea035351adefc425945560e4fc4cf3338eabce02bf72a6a4a92625bc1ac872d537e4202112cfb570d6d59c4b566ab4fc6203a3532d21aa
|
7
|
+
data.tar.gz: 60d073987945502fc020b45d3e936045940e2167d58750f10795d8cce3d008c9585ed2b053dde8c6950e54d664d13ac0a6e5659c271abec78c8062a94e10d280
|
@@ -4,57 +4,65 @@ require_relative '../runner'
|
|
4
4
|
|
5
5
|
gem 'test-unit'
|
6
6
|
require 'test/unit'
|
7
|
-
require 'test/unit/collector/
|
8
|
-
require 'test/unit/testresult'
|
9
|
-
require 'test/unit/testsuite'
|
7
|
+
require 'test/unit/collector/load'
|
10
8
|
require 'test/unit/ui/console/testrunner'
|
11
9
|
|
12
|
-
class Test::Unit::TestSuite
|
13
|
-
attr_accessor :iterator
|
14
|
-
|
15
|
-
def run(result, &progress_block)
|
16
|
-
@start_time = Time.now
|
17
|
-
yield(STARTED, name)
|
18
|
-
yield(STARTED_OBJECT, self)
|
19
|
-
run_startup(result)
|
20
|
-
(@iterator || @tests).each do |test|
|
21
|
-
@n_tests += test.size
|
22
|
-
run_test(test, result, &progress_block)
|
23
|
-
@passed = false unless test.passed?
|
24
|
-
end
|
25
|
-
run_shutdown(result)
|
26
|
-
ensure
|
27
|
-
@elapsed_time = Time.now - @start_time
|
28
|
-
yield(FINISHED, name)
|
29
|
-
yield(FINISHED_OBJECT, self)
|
30
|
-
end
|
31
|
-
|
32
|
-
def failure_count
|
33
|
-
(@iterator || @tests).sum { |t| t.instance_variable_get(:@_result).failure_count }
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
10
|
module TestQueue
|
38
11
|
class Runner
|
39
12
|
class TestUnit < Runner
|
40
|
-
|
41
|
-
|
42
|
-
|
13
|
+
class TestSuite < ::Test::Unit::TestSuite
|
14
|
+
def initialize(name, iterator)
|
15
|
+
super(name)
|
16
|
+
@tests = IteratorWrapper.new(iterator)
|
17
|
+
end
|
18
|
+
|
19
|
+
def run(*)
|
20
|
+
@started = true
|
21
|
+
super
|
22
|
+
end
|
23
|
+
|
24
|
+
def size
|
25
|
+
return 0 unless @started
|
26
|
+
|
27
|
+
super
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
class IteratorWrapper
|
32
|
+
def initialize(iterator)
|
33
|
+
@generator = Fiber.new do
|
34
|
+
iterator.each do |test|
|
35
|
+
Fiber.yield(test)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def shift
|
41
|
+
@generator.resume
|
42
|
+
rescue FiberError
|
43
|
+
nil
|
43
44
|
end
|
44
45
|
|
46
|
+
def each
|
47
|
+
while (test = shift)
|
48
|
+
yield(test)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def initialize
|
45
54
|
super(TestFramework::TestUnit.new)
|
46
55
|
end
|
47
56
|
|
48
57
|
def run_worker(iterator)
|
49
|
-
@suite =
|
50
|
-
@suite.iterator = iterator
|
58
|
+
@suite = TestSuite.new('specified by test-queue master', iterator)
|
51
59
|
res = Test::Unit::UI::Console::TestRunner.new(@suite).start
|
52
60
|
res.run_count - res.pass_count
|
53
61
|
end
|
54
62
|
|
55
63
|
def summarize_worker(worker)
|
56
64
|
worker.summary = worker.output.split("\n").grep(/^\d+ tests?/).first
|
57
|
-
worker.failure_output = worker.output.scan(/^Failure
|
65
|
+
worker.failure_output = worker.output.scan(/^Failure:[^\n]*\n(.*?)\n=======================*/m).join("\n")
|
58
66
|
end
|
59
67
|
end
|
60
68
|
end
|
@@ -66,11 +74,39 @@ module TestQueue
|
|
66
74
|
end
|
67
75
|
|
68
76
|
def suites_from_file(path)
|
69
|
-
Test::Unit::
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
77
|
+
test_suite = Test::Unit::Collector::Load.new.collect(path)
|
78
|
+
return [] unless test_suite
|
79
|
+
return test_suite.tests.map { [_1.name, _1] } unless split_groups?
|
80
|
+
|
81
|
+
split_groups(test_suite)
|
82
|
+
end
|
83
|
+
|
84
|
+
def split_groups?
|
85
|
+
return @split_groups if defined?(@split_groups)
|
86
|
+
|
87
|
+
@split_groups = ENV['TEST_QUEUE_SPLIT_GROUPS'] && ENV['TEST_QUEUE_SPLIT_GROUPS'].strip.downcase == 'true'
|
88
|
+
end
|
89
|
+
|
90
|
+
def split_groups(test_suite, groups = [])
|
91
|
+
unless splittable?(test_suite)
|
92
|
+
groups << [test_suite.name, test_suite]
|
93
|
+
return groups
|
94
|
+
end
|
95
|
+
|
96
|
+
test_suite.tests.each do |suite|
|
97
|
+
if suite.is_a?(Test::Unit::TestSuite)
|
98
|
+
split_groups(suite, groups)
|
99
|
+
else
|
100
|
+
groups << [suite.name, suite]
|
101
|
+
end
|
102
|
+
end
|
103
|
+
groups
|
104
|
+
end
|
105
|
+
|
106
|
+
def splittable?(test_suite)
|
107
|
+
test_suite.tests.none? do |test|
|
108
|
+
test.is_a?(Test::Unit::TestCase) && test[:no_split]
|
109
|
+
end
|
74
110
|
end
|
75
111
|
end
|
76
112
|
end
|
data/lib/test_queue/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: test-queue
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aman Gupta
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-07-01 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: minitest/rspec parallel test runner for CI environments
|
14
14
|
email: ruby@tmm1.net
|