test_bench-run 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 +7 -0
- data/lib/test_bench/run/controls/directory.rb +54 -0
- data/lib/test_bench/run/controls/event_data.rb +7 -0
- data/lib/test_bench/run/controls/events/event_data.rb +9 -0
- data/lib/test_bench/run/controls/events/file_crashed.rb +109 -0
- data/lib/test_bench/run/controls/events/file_finished.rb +56 -0
- data/lib/test_bench/run/controls/events/file_started.rb +47 -0
- data/lib/test_bench/run/controls/events/finished.rb +50 -0
- data/lib/test_bench/run/controls/events/session.rb +9 -0
- data/lib/test_bench/run/controls/events/started.rb +41 -0
- data/lib/test_bench/run/controls/exception.rb +101 -0
- data/lib/test_bench/run/controls/executor.rb +56 -0
- data/lib/test_bench/run/controls/file/create.rb +69 -0
- data/lib/test_bench/run/controls/file/pattern.rb +29 -0
- data/lib/test_bench/run/controls/file.rb +180 -0
- data/lib/test_bench/run/controls/path.rb +15 -0
- data/lib/test_bench/run/controls/process_id.rb +7 -0
- data/lib/test_bench/run/controls/random.rb +7 -0
- data/lib/test_bench/run/controls/result.rb +7 -0
- data/lib/test_bench/run/controls/time.rb +7 -0
- data/lib/test_bench/run/controls.rb +26 -0
- data/lib/test_bench/run/events.rb +12 -0
- data/lib/test_bench/run/executor/serial.rb +112 -0
- data/lib/test_bench/run/executor/substitute.rb +45 -0
- data/lib/test_bench/run/executor.rb +44 -0
- data/lib/test_bench/run/file/substitute.rb +41 -0
- data/lib/test_bench/run/file.rb +73 -0
- data/lib/test_bench/run/get_files/substitute.rb +46 -0
- data/lib/test_bench/run/get_files.rb +72 -0
- data/lib/test_bench/run/output/file.rb +129 -0
- data/lib/test_bench/run/output/summary/error.rb +139 -0
- data/lib/test_bench/run/output/summary.rb +179 -0
- data/lib/test_bench/run/run.rb +101 -0
- data/lib/test_bench/run.rb +19 -0
- metadata +103 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
module TestBench
|
|
2
|
+
class Run
|
|
3
|
+
module Output
|
|
4
|
+
class File
|
|
5
|
+
Error = Class.new(RuntimeError)
|
|
6
|
+
|
|
7
|
+
include TestBench::Output
|
|
8
|
+
include Events
|
|
9
|
+
|
|
10
|
+
def session_output
|
|
11
|
+
@session_output ||= TestBench::Output::Substitute.build
|
|
12
|
+
end
|
|
13
|
+
attr_writer :session_output
|
|
14
|
+
|
|
15
|
+
def pended_events
|
|
16
|
+
@pended_events ||= {}
|
|
17
|
+
end
|
|
18
|
+
attr_writer :pended_events
|
|
19
|
+
|
|
20
|
+
def only_failure
|
|
21
|
+
@only_failure.nil? ?
|
|
22
|
+
@only_failure = Defaults.only_failure :
|
|
23
|
+
@only_failure
|
|
24
|
+
end
|
|
25
|
+
alias :only_failure? :only_failure
|
|
26
|
+
attr_writer :only_failure
|
|
27
|
+
|
|
28
|
+
def configure(...)
|
|
29
|
+
TestBench::Session::Output::Writer.configure(self, ...)
|
|
30
|
+
|
|
31
|
+
Session::Output.configure(self, writer:, attr_name: :session_output)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
handle FileStarted do |file_started|
|
|
35
|
+
process_id = file_started.metadata.process_id
|
|
36
|
+
|
|
37
|
+
start(process_id)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
handle FileFinished do |file_finished|
|
|
41
|
+
process_id = file_finished.metadata.process_id
|
|
42
|
+
result = file_finished.result
|
|
43
|
+
file = file_finished.file
|
|
44
|
+
|
|
45
|
+
finish_process(process_id, result, file)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
handle FileCrashed do |file_crashed|
|
|
49
|
+
process_id = file_crashed.metadata.process_id
|
|
50
|
+
file = file_crashed.file
|
|
51
|
+
|
|
52
|
+
result = false
|
|
53
|
+
|
|
54
|
+
finish_process(process_id, result, file)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def finish_process(process_id, result, file)
|
|
58
|
+
events = pended_events.delete(process_id)
|
|
59
|
+
|
|
60
|
+
if only_failure && result
|
|
61
|
+
return
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
writer.puts("Running #{file}")
|
|
65
|
+
|
|
66
|
+
writer_sequence = writer.sequence
|
|
67
|
+
|
|
68
|
+
events ||= []
|
|
69
|
+
events.each do |event_data|
|
|
70
|
+
session_output.receive(event_data)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
if writer.current?(writer_sequence)
|
|
74
|
+
writer.
|
|
75
|
+
style(:faint).
|
|
76
|
+
puts("(Nothing written)")
|
|
77
|
+
|
|
78
|
+
writer.puts
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def handle_event_data(event_data)
|
|
83
|
+
pend(event_data)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def pend_event(event_data)
|
|
87
|
+
process_id = event_data.process_id
|
|
88
|
+
|
|
89
|
+
if not started?(process_id)
|
|
90
|
+
start(process_id)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
pended_events = self.pended_events[process_id]
|
|
94
|
+
pended_events << event_data
|
|
95
|
+
end
|
|
96
|
+
alias :pend :pend_event
|
|
97
|
+
|
|
98
|
+
def pended_event?(event_data)
|
|
99
|
+
process_id = event_data.process_id
|
|
100
|
+
|
|
101
|
+
pended_events = self.pended_events.fetch(process_id) do
|
|
102
|
+
return false
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
pended_events.include?(event_data)
|
|
106
|
+
end
|
|
107
|
+
alias :pended? :pended_event?
|
|
108
|
+
|
|
109
|
+
def start(process_id)
|
|
110
|
+
if started?(process_id)
|
|
111
|
+
raise Error, "Process already started (Process ID: #{process_id})"
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
pended_events[process_id] = []
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def started?(process_id)
|
|
118
|
+
pended_events.key?(process_id)
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
module Defaults
|
|
122
|
+
def self.only_failure
|
|
123
|
+
ENV.fetch('TEST_BENCH_ONLY_FAILURE', 'off') == 'on'
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
end
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
module TestBench
|
|
2
|
+
class Run
|
|
3
|
+
module Output
|
|
4
|
+
class Summary
|
|
5
|
+
class Error
|
|
6
|
+
StateError = Class.new(RuntimeError)
|
|
7
|
+
|
|
8
|
+
include TestBench::Output
|
|
9
|
+
include Events
|
|
10
|
+
|
|
11
|
+
attr_accessor :current_file
|
|
12
|
+
|
|
13
|
+
def failure_summary
|
|
14
|
+
@failure_summary ||= {}
|
|
15
|
+
end
|
|
16
|
+
attr_writer :failure_summary
|
|
17
|
+
|
|
18
|
+
handle FileStarted do |file_started|
|
|
19
|
+
file = file_started.file
|
|
20
|
+
|
|
21
|
+
start_file(file)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
handle Session::Events::Failed do |_failed|
|
|
25
|
+
current_file.record_failure
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
handle FileFinished do |file_finished|
|
|
29
|
+
file = file_finished.file
|
|
30
|
+
result = file_finished.result
|
|
31
|
+
|
|
32
|
+
finish_file(file, result)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
handle FileCrashed do |file_crashed|
|
|
36
|
+
file = file_crashed.file
|
|
37
|
+
|
|
38
|
+
error_message = file_crashed.error_message
|
|
39
|
+
|
|
40
|
+
finish_file(file, error_message:)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
handle Finished do |finished|
|
|
44
|
+
if not finished.result
|
|
45
|
+
print_summary
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def print_summary
|
|
50
|
+
writer.style(:bold, :underline, :red).puts("Failure Summary:")
|
|
51
|
+
|
|
52
|
+
failure_summary.each_value do |file_record|
|
|
53
|
+
file, failures, error_message = file_record.to_a
|
|
54
|
+
|
|
55
|
+
writer
|
|
56
|
+
.style(:faint, :red)
|
|
57
|
+
.print("-")
|
|
58
|
+
.style(:reset_intensity, :bold)
|
|
59
|
+
.print(" #{file}")
|
|
60
|
+
.style(:reset_intensity)
|
|
61
|
+
.print(":")
|
|
62
|
+
|
|
63
|
+
if failures > 0
|
|
64
|
+
writer.print(" %i failure%s" % [
|
|
65
|
+
failures,
|
|
66
|
+
failures == 1 ? '' : 's'
|
|
67
|
+
])
|
|
68
|
+
|
|
69
|
+
if not error_message.nil?
|
|
70
|
+
writer.print(".")
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
if not error_message.nil?
|
|
75
|
+
writer.puts(" File crashed, error:")
|
|
76
|
+
|
|
77
|
+
writer.style(:red).puts(" #{error_message}")
|
|
78
|
+
else
|
|
79
|
+
writer.puts
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
writer.puts
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def start_file(file)
|
|
87
|
+
if not current_file.nil?
|
|
88
|
+
raise StateError, "Already started file #{current_file.file.inspect} (File: #{file.inspect})"
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
file = File.build(file)
|
|
92
|
+
|
|
93
|
+
self.current_file = file
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def finish_file(file, result=nil, error_message: nil)
|
|
97
|
+
result ||= false
|
|
98
|
+
|
|
99
|
+
if not current_file?(file)
|
|
100
|
+
raise StateError, "Cannot finish file #{file.inspect} (Current File: #{current_file&.file.inspect})"
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
if not result
|
|
104
|
+
if not error_message.nil?
|
|
105
|
+
current_file.error_message = error_message
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
failure_summary[file] = current_file
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
self.current_file = nil
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def current_file?(file=nil)
|
|
115
|
+
return false if current_file.nil?
|
|
116
|
+
|
|
117
|
+
if not file.nil?
|
|
118
|
+
file == current_file.file
|
|
119
|
+
else
|
|
120
|
+
true
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
File = Struct.new(:file, :failures, :error_message) do
|
|
125
|
+
def self.build(file)
|
|
126
|
+
failures = 0
|
|
127
|
+
|
|
128
|
+
new(file, failures)
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
def record_failure
|
|
132
|
+
self.failures += 1
|
|
133
|
+
end
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
end
|
|
138
|
+
end
|
|
139
|
+
end
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
module TestBench
|
|
2
|
+
class Run
|
|
3
|
+
module Output
|
|
4
|
+
class Summary
|
|
5
|
+
StateError = Class.new(RuntimeError)
|
|
6
|
+
|
|
7
|
+
include TestBench::Output
|
|
8
|
+
include Session::Events
|
|
9
|
+
include Events
|
|
10
|
+
|
|
11
|
+
def tests_finished
|
|
12
|
+
@tests_finished ||= 0
|
|
13
|
+
end
|
|
14
|
+
attr_writer :tests_finished
|
|
15
|
+
|
|
16
|
+
def tests_passed
|
|
17
|
+
@tests_passed ||= 0
|
|
18
|
+
end
|
|
19
|
+
attr_writer :tests_passed
|
|
20
|
+
|
|
21
|
+
def tests_failed
|
|
22
|
+
@tests_failed ||= 0
|
|
23
|
+
end
|
|
24
|
+
attr_writer :tests_failed
|
|
25
|
+
|
|
26
|
+
def tests_skipped
|
|
27
|
+
@tests_skipped ||= 0
|
|
28
|
+
end
|
|
29
|
+
attr_writer :tests_skipped
|
|
30
|
+
|
|
31
|
+
def contexts_skipped
|
|
32
|
+
@contexts_skipped ||= 0
|
|
33
|
+
end
|
|
34
|
+
attr_writer :contexts_skipped
|
|
35
|
+
|
|
36
|
+
def files_finished
|
|
37
|
+
@files_finished ||= 0
|
|
38
|
+
end
|
|
39
|
+
attr_writer :files_finished
|
|
40
|
+
|
|
41
|
+
def files_crashed
|
|
42
|
+
@files_crashed ||= 0
|
|
43
|
+
end
|
|
44
|
+
attr_writer :files_crashed
|
|
45
|
+
|
|
46
|
+
attr_accessor :start_time
|
|
47
|
+
attr_accessor :finish_time
|
|
48
|
+
attr_accessor :elapsed_time
|
|
49
|
+
|
|
50
|
+
handle TestFinished do |test_finished|
|
|
51
|
+
self.tests_finished += 1
|
|
52
|
+
|
|
53
|
+
if test_finished.result
|
|
54
|
+
self.tests_passed += 1
|
|
55
|
+
else
|
|
56
|
+
self.tests_failed += 1
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
handle TestSkipped do |_test_skipped|
|
|
61
|
+
self.tests_skipped += 1
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
handle ContextSkipped do |_test_skipped|
|
|
65
|
+
self.contexts_skipped += 1
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
handle FileFinished do |_file_finished|
|
|
69
|
+
self.files_finished += 1
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
handle FileCrashed do |_file_crashed|
|
|
73
|
+
self.files_crashed += 1
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
handle Started do |started|
|
|
77
|
+
start_time = started.metadata.time
|
|
78
|
+
|
|
79
|
+
self.start_time = start_time
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
handle Finished do |finished|
|
|
83
|
+
finish_time = finished.metadata.time
|
|
84
|
+
|
|
85
|
+
record_finish_time(finish_time)
|
|
86
|
+
|
|
87
|
+
finish
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def record_finish_time(finish_time)
|
|
91
|
+
if start_time.nil?
|
|
92
|
+
raise StateError, "Start time isn't set"
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
self.finish_time = finish_time
|
|
96
|
+
|
|
97
|
+
elapsed_time = finish_time - start_time
|
|
98
|
+
self.elapsed_time = elapsed_time
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def finish
|
|
102
|
+
writer.print("Finished running %i file%s, " % [
|
|
103
|
+
files_finished,
|
|
104
|
+
files_finished == 1 ? '' : 's'
|
|
105
|
+
])
|
|
106
|
+
|
|
107
|
+
if files_crashed > 0
|
|
108
|
+
writer
|
|
109
|
+
.style(:bold, :red)
|
|
110
|
+
.puts("%i file%s crashed" % [
|
|
111
|
+
files_crashed,
|
|
112
|
+
files_crashed == 1 ? '' : 's'
|
|
113
|
+
])
|
|
114
|
+
else
|
|
115
|
+
writer.puts("0 files crashed")
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
writer.print("Ran %i test%s" % [
|
|
119
|
+
tests_finished,
|
|
120
|
+
tests_finished == 1 ? '' : 's'
|
|
121
|
+
])
|
|
122
|
+
|
|
123
|
+
if not elapsed_time.nil?
|
|
124
|
+
tests_per_second = tests_finished / elapsed_time
|
|
125
|
+
writer.print(" in %0.3fs (%i test%s/second)" % [
|
|
126
|
+
elapsed_time,
|
|
127
|
+
tests_per_second,
|
|
128
|
+
tests_finished == 1 ? '' : 's'
|
|
129
|
+
])
|
|
130
|
+
end
|
|
131
|
+
writer.puts
|
|
132
|
+
|
|
133
|
+
skip_count = tests_skipped + contexts_skipped
|
|
134
|
+
|
|
135
|
+
if tests_passed > 0
|
|
136
|
+
if skip_count.zero? && tests_failed.zero?
|
|
137
|
+
writer.style(:bold)
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
writer
|
|
141
|
+
.style(:green)
|
|
142
|
+
.print("#{tests_passed} passed")
|
|
143
|
+
.style(:reset_fg)
|
|
144
|
+
|
|
145
|
+
if skip_count.zero? && tests_failed.zero?
|
|
146
|
+
writer.style(:reset_intensity)
|
|
147
|
+
end
|
|
148
|
+
else
|
|
149
|
+
writer.print("0 passed")
|
|
150
|
+
end
|
|
151
|
+
writer.print(", ")
|
|
152
|
+
|
|
153
|
+
if skip_count.zero?
|
|
154
|
+
writer.print("0 skipped")
|
|
155
|
+
else
|
|
156
|
+
writer
|
|
157
|
+
.style(:bold, :yellow)
|
|
158
|
+
.print("%i%s skipped" % [
|
|
159
|
+
skip_count,
|
|
160
|
+
contexts_skipped > 0 ? '+' : ''
|
|
161
|
+
])
|
|
162
|
+
.style(:reset_fg, :reset_intensity)
|
|
163
|
+
end
|
|
164
|
+
writer.print(", ")
|
|
165
|
+
|
|
166
|
+
if tests_failed > 0
|
|
167
|
+
writer
|
|
168
|
+
.style(:bold, :red)
|
|
169
|
+
.puts("#{tests_failed} failed")
|
|
170
|
+
else
|
|
171
|
+
writer.puts("0 failed")
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
writer.puts
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
end
|
|
179
|
+
end
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
module TestBench
|
|
2
|
+
class Run
|
|
3
|
+
include Session::Handler
|
|
4
|
+
include Events
|
|
5
|
+
|
|
6
|
+
def telemetry
|
|
7
|
+
@telemetry ||= Telemetry::Substitute.build
|
|
8
|
+
end
|
|
9
|
+
attr_writer :telemetry
|
|
10
|
+
|
|
11
|
+
def session
|
|
12
|
+
@session ||= Session::Substitute.build
|
|
13
|
+
end
|
|
14
|
+
attr_writer :session
|
|
15
|
+
|
|
16
|
+
def get_files
|
|
17
|
+
@get_files ||= GetFiles::Substitute.build
|
|
18
|
+
end
|
|
19
|
+
attr_writer :get_files
|
|
20
|
+
|
|
21
|
+
def executor
|
|
22
|
+
@executor ||= Executor::Substitute.build
|
|
23
|
+
end
|
|
24
|
+
attr_writer :executor
|
|
25
|
+
|
|
26
|
+
def path_sequence
|
|
27
|
+
@path_sequence ||= 0
|
|
28
|
+
end
|
|
29
|
+
attr_writer :path_sequence
|
|
30
|
+
|
|
31
|
+
def self.build(exclude_file_pattern: nil, session_store: nil)
|
|
32
|
+
session_store ||= Session::Store.instance
|
|
33
|
+
|
|
34
|
+
instance = new
|
|
35
|
+
|
|
36
|
+
GetFiles.configure(instance, exclude_file_pattern:)
|
|
37
|
+
|
|
38
|
+
Executor::Serial.configure(instance)
|
|
39
|
+
|
|
40
|
+
session = Session.build do |telemetry|
|
|
41
|
+
Output::File.register(telemetry)
|
|
42
|
+
Output::Summary::Error.register(telemetry)
|
|
43
|
+
Output::Summary.register(telemetry)
|
|
44
|
+
|
|
45
|
+
instance.telemetry = telemetry
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
Session.configure(instance, session:)
|
|
49
|
+
session_store.put(session)
|
|
50
|
+
|
|
51
|
+
instance
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def self.call(path, exclude_file_pattern: nil)
|
|
55
|
+
instance = build(exclude_file_pattern:)
|
|
56
|
+
instance.(path)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def call(path)
|
|
60
|
+
run do
|
|
61
|
+
path(path)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def run(&block)
|
|
66
|
+
telemetry.record(Started.build)
|
|
67
|
+
|
|
68
|
+
executor.start
|
|
69
|
+
|
|
70
|
+
if not block.nil?
|
|
71
|
+
block.(self)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
executor.finish
|
|
75
|
+
|
|
76
|
+
if session.passed?
|
|
77
|
+
result = true
|
|
78
|
+
elsif session.failed?
|
|
79
|
+
result = false
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
telemetry.record(Finished.build(result))
|
|
83
|
+
result
|
|
84
|
+
end
|
|
85
|
+
alias :! :run
|
|
86
|
+
|
|
87
|
+
def path(path)
|
|
88
|
+
self.path_sequence += 1
|
|
89
|
+
|
|
90
|
+
get_files.(path) do |file|
|
|
91
|
+
executor.execute(file)
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
rescue GetFiles::FileError
|
|
95
|
+
warn "#{path}: No such file or directory"
|
|
96
|
+
|
|
97
|
+
session.record_failure
|
|
98
|
+
end
|
|
99
|
+
alias :<< :path
|
|
100
|
+
end
|
|
101
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'test_bench/fixture'
|
|
2
|
+
|
|
3
|
+
require 'test_bench/run/events'
|
|
4
|
+
|
|
5
|
+
require 'test_bench/run/get_files'
|
|
6
|
+
require 'test_bench/run/get_files/substitute'
|
|
7
|
+
|
|
8
|
+
require 'test_bench/run/file'
|
|
9
|
+
require 'test_bench/run/file/substitute'
|
|
10
|
+
|
|
11
|
+
require 'test_bench/run/output/file'
|
|
12
|
+
require 'test_bench/run/output/summary/error'
|
|
13
|
+
require 'test_bench/run/output/summary'
|
|
14
|
+
|
|
15
|
+
require 'test_bench/run/executor'
|
|
16
|
+
require 'test_bench/run/executor/substitute'
|
|
17
|
+
require 'test_bench/run/executor/serial'
|
|
18
|
+
|
|
19
|
+
require 'test_bench/run/run'
|
metadata
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: test_bench-run
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: '0'
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Nathan Ladd
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2023-07-16 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: test_bench-fixture
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '0'
|
|
20
|
+
type: :runtime
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ">="
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: test_bench-bootstrap
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - ">="
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - ">="
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0'
|
|
41
|
+
description:
|
|
42
|
+
email: nathanladd+github@gmail.com
|
|
43
|
+
executables: []
|
|
44
|
+
extensions: []
|
|
45
|
+
extra_rdoc_files: []
|
|
46
|
+
files:
|
|
47
|
+
- lib/test_bench/run.rb
|
|
48
|
+
- lib/test_bench/run/controls.rb
|
|
49
|
+
- lib/test_bench/run/controls/directory.rb
|
|
50
|
+
- lib/test_bench/run/controls/event_data.rb
|
|
51
|
+
- lib/test_bench/run/controls/events/event_data.rb
|
|
52
|
+
- lib/test_bench/run/controls/events/file_crashed.rb
|
|
53
|
+
- lib/test_bench/run/controls/events/file_finished.rb
|
|
54
|
+
- lib/test_bench/run/controls/events/file_started.rb
|
|
55
|
+
- lib/test_bench/run/controls/events/finished.rb
|
|
56
|
+
- lib/test_bench/run/controls/events/session.rb
|
|
57
|
+
- lib/test_bench/run/controls/events/started.rb
|
|
58
|
+
- lib/test_bench/run/controls/exception.rb
|
|
59
|
+
- lib/test_bench/run/controls/executor.rb
|
|
60
|
+
- lib/test_bench/run/controls/file.rb
|
|
61
|
+
- lib/test_bench/run/controls/file/create.rb
|
|
62
|
+
- lib/test_bench/run/controls/file/pattern.rb
|
|
63
|
+
- lib/test_bench/run/controls/path.rb
|
|
64
|
+
- lib/test_bench/run/controls/process_id.rb
|
|
65
|
+
- lib/test_bench/run/controls/random.rb
|
|
66
|
+
- lib/test_bench/run/controls/result.rb
|
|
67
|
+
- lib/test_bench/run/controls/time.rb
|
|
68
|
+
- lib/test_bench/run/events.rb
|
|
69
|
+
- lib/test_bench/run/executor.rb
|
|
70
|
+
- lib/test_bench/run/executor/serial.rb
|
|
71
|
+
- lib/test_bench/run/executor/substitute.rb
|
|
72
|
+
- lib/test_bench/run/file.rb
|
|
73
|
+
- lib/test_bench/run/file/substitute.rb
|
|
74
|
+
- lib/test_bench/run/get_files.rb
|
|
75
|
+
- lib/test_bench/run/get_files/substitute.rb
|
|
76
|
+
- lib/test_bench/run/output/file.rb
|
|
77
|
+
- lib/test_bench/run/output/summary.rb
|
|
78
|
+
- lib/test_bench/run/output/summary/error.rb
|
|
79
|
+
- lib/test_bench/run/run.rb
|
|
80
|
+
homepage: https://github.com/test-bench/test-bench-run
|
|
81
|
+
licenses:
|
|
82
|
+
- MIT
|
|
83
|
+
metadata: {}
|
|
84
|
+
post_install_message:
|
|
85
|
+
rdoc_options: []
|
|
86
|
+
require_paths:
|
|
87
|
+
- lib
|
|
88
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
89
|
+
requirements:
|
|
90
|
+
- - ">="
|
|
91
|
+
- !ruby/object:Gem::Version
|
|
92
|
+
version: '0'
|
|
93
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
94
|
+
requirements:
|
|
95
|
+
- - ">="
|
|
96
|
+
- !ruby/object:Gem::Version
|
|
97
|
+
version: '0'
|
|
98
|
+
requirements: []
|
|
99
|
+
rubygems_version: 3.4.10
|
|
100
|
+
signing_key:
|
|
101
|
+
specification_version: 4
|
|
102
|
+
summary: ruby
|
|
103
|
+
test_files: []
|