test_bench 1.0.0.1 → 1.2.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/lib/test_bench.rb +9 -9
  3. data/lib/test_bench/cli.rb +2 -2
  4. data/lib/test_bench/cli/parse_arguments.rb +33 -20
  5. data/lib/test_bench/controls.rb +5 -1
  6. data/lib/test_bench/controls/output/batch_data.rb +52 -0
  7. data/lib/test_bench/controls/output/detail_setting.rb +29 -0
  8. data/lib/test_bench/controls/output/exercise.rb +7 -0
  9. data/lib/test_bench/controls/output/log_level.rb +7 -0
  10. data/lib/test_bench/controls/output/summary/error.rb +0 -16
  11. data/lib/test_bench/controls/output/summary/session.rb +20 -0
  12. data/lib/test_bench/controls/pattern.rb +6 -2
  13. data/lib/test_bench/controls/time.rb +18 -0
  14. data/lib/test_bench/deactivation_variants.rb +0 -10
  15. data/lib/test_bench/output.rb +14 -2
  16. data/lib/test_bench/output/batch_data.rb +17 -0
  17. data/lib/test_bench/output/buffer.rb +114 -0
  18. data/lib/test_bench/output/log.rb +27 -0
  19. data/lib/test_bench/output/raw.rb +353 -0
  20. data/lib/test_bench/output/summary.rb +146 -0
  21. data/lib/test_bench/output/summary/session.rb +94 -0
  22. data/lib/test_bench/output/writer.rb +2 -2
  23. data/lib/test_bench/run.rb +9 -9
  24. data/lib/test_bench/test_bench.rb +31 -3
  25. metadata +18 -17
  26. data/lib/test_bench/controls/output/summary/run.rb +0 -59
  27. data/lib/test_bench/output/build.rb +0 -57
  28. data/lib/test_bench/output/levels/debug.rb +0 -229
  29. data/lib/test_bench/output/levels/failure.rb +0 -31
  30. data/lib/test_bench/output/levels/none.rb +0 -13
  31. data/lib/test_bench/output/levels/pass.rb +0 -286
  32. data/lib/test_bench/output/levels/summary.rb +0 -21
  33. data/lib/test_bench/output/summary/error.rb +0 -77
  34. data/lib/test_bench/output/summary/run.rb +0 -102
  35. data/lib/test_bench/output/summary/run/print.rb +0 -98
@@ -1,31 +0,0 @@
1
- module TestBench
2
- module Output
3
- module Levels
4
- class Failure
5
- include TestBench::Fixture::Output
6
-
7
- include Output::PrintError
8
- include Output::Summary::Error
9
-
10
- def self.build(omit_backtrace_pattern: nil, reverse_backtraces: nil, writer: nil, styling: nil, device: nil)
11
- warn "Warning: #{self} is deprecated. It will remain in the TestBench v2 series, but will be removed from TestBench v3"
12
-
13
- instance = new
14
-
15
- instance.omit_backtrace_pattern = omit_backtrace_pattern unless omit_backtrace_pattern.nil?
16
- instance.reverse_backtraces = reverse_backtraces unless reverse_backtraces.nil?
17
-
18
- Writer.configure(instance, writer: writer, styling: styling, device: device)
19
-
20
- instance
21
- end
22
-
23
- def error(error)
24
- print_error(error)
25
-
26
- writer.newline
27
- end
28
- end
29
- end
30
- end
31
- end
@@ -1,13 +0,0 @@
1
- module TestBench
2
- module Output
3
- module Levels
4
- class None < Fixture::Output::Null
5
- def self.build
6
- warn "Warning: #{self} is deprecated. It will remain in the TestBench v2 series, but will be removed from TestBench v3"
7
-
8
- new
9
- end
10
- end
11
- end
12
- end
13
- end
@@ -1,286 +0,0 @@
1
- module TestBench
2
- module Output
3
- module Levels
4
- class Pass
5
- include TestBench::Fixture::Output
6
-
7
- include Writer::Dependency
8
-
9
- include PrintError
10
-
11
- include Output::Summary::Error
12
- include Output::Summary::Run
13
-
14
- attr_accessor :previous_error
15
-
16
- def previous_byte_offset
17
- @previous_byte_offset ||= 0
18
- end
19
- attr_writer :previous_byte_offset
20
-
21
- def assert_block_stack
22
- @assert_block_stack ||= AssertBlockStack.new(writer)
23
- end
24
- attr_writer :assert_block_stack
25
-
26
- def test_stack
27
- @test_stack ||= []
28
- end
29
- attr_writer :test_stack
30
-
31
- def self.build(omit_backtrace_pattern: nil, reverse_backtraces: nil, writer: nil, styling: nil, device: nil)
32
- instance = new
33
-
34
- instance.omit_backtrace_pattern = omit_backtrace_pattern unless omit_backtrace_pattern.nil?
35
- instance.reverse_backtraces = reverse_backtraces unless reverse_backtraces.nil?
36
-
37
- Writer.configure(instance, writer: writer, styling: styling, device: device)
38
- Timer.configure(instance)
39
-
40
- instance
41
- end
42
-
43
- def comment(text)
44
- writer
45
- .indent
46
- .text(text)
47
- .newline
48
- end
49
-
50
- def error(error)
51
- self.previous_error = error
52
- end
53
-
54
- def print_previous_error
55
- print_error(previous_error)
56
-
57
- self.previous_error = nil
58
- end
59
-
60
- def start_test(_)
61
- test_stack.push(true)
62
- end
63
-
64
- def finish_test(title, result)
65
- test_stack.pop
66
-
67
- unless result && title.nil?
68
- writer.indent
69
-
70
- writer.escape_code(:bold) unless result
71
-
72
- fg_color = result ? :green : :red
73
-
74
- writer
75
- .escape_code(fg_color)
76
- .text(title || 'Test')
77
- .escape_code(:reset_fg)
78
-
79
- writer.escape_code(:reset_intensity) unless result
80
-
81
- writer.newline
82
- end
83
-
84
- unless previous_error.nil?
85
- writer.increase_indentation
86
-
87
- print_previous_error
88
-
89
- writer.decrease_indentation
90
- end
91
-
92
- unless result
93
- assert_block_stack.print_captured_text
94
- end
95
- end
96
-
97
- def skip_test(title)
98
- title ||= 'Test'
99
-
100
- writer.indent
101
-
102
- if writer.styling?
103
- writer
104
- .escape_code(:yellow)
105
- .text(title)
106
- .escape_code(:reset_fg)
107
- else
108
- writer.text("#{title} (skipped)")
109
- end
110
-
111
- writer.newline
112
- end
113
-
114
- def enter_context(title)
115
- test_stack.push(false)
116
-
117
- return if title.nil?
118
-
119
- writer
120
- .indent
121
- .escape_code(:green)
122
- .text(title)
123
- .escape_code(:reset_fg)
124
- .newline
125
-
126
- writer.increase_indentation
127
- end
128
-
129
- def exit_context(title, result)
130
- test_stack.pop
131
-
132
- print_previous_error unless previous_error.nil?
133
-
134
- unless result
135
- assert_block_stack.print_captured_text
136
- end
137
-
138
- return if title.nil?
139
-
140
- writer.decrease_indentation
141
-
142
- writer.newline if writer.indentation_depth.zero?
143
- end
144
-
145
- def skip_context(title)
146
- return if title.nil?
147
-
148
- writer.indent
149
-
150
- if writer.styling?
151
- writer
152
- .escape_code(:yellow)
153
- .text(title)
154
- .escape_code(:reset_fg)
155
- else
156
- writer.text("#{title} (skipped)")
157
- end
158
-
159
- writer.newline
160
-
161
- writer.newline if writer.indentation_depth.zero?
162
- end
163
-
164
- def enter_file(file)
165
- text = "Running #{file}"
166
-
167
- writer.text(text).newline
168
-
169
- self.previous_byte_offset = writer.byte_offset
170
- end
171
-
172
- def exit_file(file, result)
173
- print_previous_error unless previous_error.nil?
174
-
175
- unless result
176
- assert_block_stack.print_captured_text
177
- end
178
-
179
- unless writer.byte_offset > previous_byte_offset
180
- writer
181
- .escape_code(:faint)
182
- .text("(Nothing written)")
183
- .escape_code(:reset_intensity)
184
- .newline
185
-
186
- writer.newline
187
- end
188
- end
189
-
190
- def finish_fixture(_, result)
191
- print_previous_error unless previous_error.nil?
192
-
193
- unless result
194
- assert_block_stack.print_captured_text
195
- end
196
- end
197
-
198
- def enter_assert_block(_)
199
- inside_test = inside_test?
200
-
201
- test_stack.push(false)
202
-
203
- assert_block_stack.push
204
-
205
- writer.increase_indentation
206
- writer.increase_indentation if inside_test
207
- end
208
-
209
- def exit_assert_block(_, result)
210
- test_stack.pop
211
-
212
- print_previous_error unless previous_error.nil?
213
-
214
- unless result
215
- assert_block_stack.print_captured_text
216
- end
217
-
218
- discard_captured_text = result
219
-
220
- assert_block_stack.pop(discard_captured_text)
221
-
222
- writer.decrease_indentation if inside_test?
223
- writer.decrease_indentation
224
- end
225
-
226
- def inside_test?
227
- test_stack[-1]
228
- end
229
-
230
- class AssertBlockStack
231
- def stack
232
- @stack ||= []
233
- end
234
-
235
- attr_accessor :captured_text
236
-
237
- attr_reader :writer
238
-
239
- def initialize(writer)
240
- @writer = writer
241
- end
242
-
243
- def push
244
- capture_text = String.new
245
-
246
- previous_device = writer.device
247
-
248
- writer.device = StringIO.new(capture_text)
249
-
250
- entry = Entry.new(capture_text, previous_device)
251
-
252
- stack.push(entry)
253
-
254
- entry
255
- end
256
-
257
- def pop(discard)
258
- entry = stack.pop
259
-
260
- writer.device = entry.previous_device
261
-
262
- unless discard
263
- self.captured_text = entry.capture_text
264
- end
265
-
266
- entry
267
- end
268
-
269
- def print_captured_text
270
- return if captured_text.nil?
271
-
272
- writer.text(captured_text)
273
-
274
- self.captured_text = nil
275
- end
276
-
277
- def inside_test?
278
- test_stack[-1]
279
- end
280
-
281
- Entry = Struct.new(:capture_text, :previous_device)
282
- end
283
- end
284
- end
285
- end
286
- end
@@ -1,21 +0,0 @@
1
- module TestBench
2
- module Output
3
- module Levels
4
- class Summary
5
- include TestBench::Fixture::Output
6
-
7
- include Output::Summary::Error
8
- include Output::Summary::Run
9
-
10
- def self.build(writer: nil, styling: nil, device: nil)
11
- warn "Warning: #{self} is deprecated. It will remain in the TestBench v2 series, but will be removed from TestBench v3"
12
-
13
- instance = new
14
- Writer.configure(instance, writer: writer, styling: styling, device: device)
15
- Timer.configure(instance)
16
- instance
17
- end
18
- end
19
- end
20
- end
21
- end
@@ -1,77 +0,0 @@
1
- module TestBench
2
- module Output
3
- module Summary
4
- module Error
5
- include Writer::Dependency
6
-
7
- def self.included(cls)
8
- cls.prepend(OutputMethods)
9
- end
10
-
11
- def error_summary_errors
12
- @error_summary_errors ||= Hash.new do |hash, key|
13
- hash[key] = []
14
- end
15
- end
16
- attr_writer :error_summary_errors
17
-
18
- attr_accessor :error_summary_current_file
19
-
20
- def error_summary
21
- return if error_summary_errors.empty?
22
-
23
- writer
24
- .escape_code(:bold)
25
- .escape_code(:red)
26
- .text('Error Summary:')
27
- .escape_code(:reset_intensity)
28
- .escape_code(:reset_fg)
29
- .newline
30
-
31
- error_summary_errors.each do |file, errors|
32
- error_count = errors.count
33
-
34
- writer
35
- .text(error_count.to_s.rjust(4, ' '))
36
- .text(": #{file}")
37
- .newline
38
-
39
- errors.each do |error|
40
- writer
41
- .text(' ')
42
- .escape_code(:red)
43
-
44
- PrintError.error_message(error, writer: writer)
45
-
46
- writer.escape_code(:reset_fg)
47
- end
48
- end
49
-
50
- writer.newline
51
- end
52
-
53
- module OutputMethods
54
- def enter_file(file)
55
- super
56
-
57
- self.error_summary_current_file = file
58
- end
59
-
60
- def error(error)
61
- super
62
-
63
- current_file = error_summary_current_file
64
-
65
- self.error_summary_errors[current_file] << error
66
- end
67
-
68
- def finish(_)
69
- super
70
-
71
- error_summary
72
- end
73
- end
74
- end
75
- end
76
- end
77
- end
@@ -1,102 +0,0 @@
1
- module TestBench
2
- module Output
3
- module Summary
4
- module Run
5
- include Writer::Dependency
6
- extend Print
7
-
8
- def self.included(cls)
9
- cls.prepend(OutputMethods)
10
- end
11
-
12
- def file_count
13
- @file_count ||= 0
14
- end
15
- attr_writer :file_count
16
-
17
- def test_count
18
- @test_count ||= 0
19
- end
20
- attr_writer :test_count
21
-
22
- def pass_count
23
- @pass_count ||= 0
24
- end
25
- attr_writer :pass_count
26
-
27
- def skip_count
28
- @skip_count ||= 0
29
- end
30
- attr_writer :skip_count
31
-
32
- def failure_count
33
- @failure_count ||= 0
34
- end
35
- attr_writer :failure_count
36
-
37
- def error_count
38
- @error_count ||= 0
39
- end
40
- attr_writer :error_count
41
-
42
- def elapsed_time
43
- @elapsed_time ||= 0
44
- end
45
- attr_writer :elapsed_time
46
-
47
- def timer
48
- @timer ||= Timer::Substitute.build
49
- end
50
- attr_writer :timer
51
-
52
- module OutputMethods
53
- def enter_file(_)
54
- super
55
-
56
- timer.start
57
- end
58
-
59
- def exit_file(_, _)
60
- super
61
-
62
- elapsed_time = timer.stop
63
-
64
- self.elapsed_time += elapsed_time
65
-
66
- self.file_count += 1
67
- end
68
-
69
- def finish_test(_, result)
70
- super
71
-
72
- self.test_count += 1
73
-
74
- if result
75
- self.pass_count += 1
76
- else
77
- self.failure_count += 1
78
- end
79
- end
80
-
81
- def skip_test(_)
82
- super
83
-
84
- self.skip_count += 1
85
- end
86
-
87
- def error(_)
88
- super
89
-
90
- self.error_count += 1
91
- end
92
-
93
- def finish(_)
94
- super
95
-
96
- Print.(file_count: file_count, test_count: test_count, pass_count: pass_count, skip_count: skip_count, failure_count: failure_count, error_count: error_count, elapsed_time: elapsed_time, writer: writer)
97
- end
98
- end
99
- end
100
- end
101
- end
102
- end