test_bench-isolated 0 → 2.0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (152) hide show
  1. checksums.yaml +4 -4
  2. data/lib/test_bench_isolated/test_bench/cli.rb +298 -0
  3. data/lib/test_bench_isolated/test_bench/controls/file.rb +7 -0
  4. data/lib/test_bench_isolated/test_bench/controls/path.rb +7 -0
  5. data/lib/test_bench_isolated/test_bench/controls/random.rb +9 -0
  6. data/lib/test_bench_isolated/test_bench/controls/result.rb +7 -0
  7. data/lib/test_bench_isolated/test_bench/controls/stdin.rb +29 -0
  8. data/lib/test_bench_isolated/test_bench/controls.rb +11 -0
  9. data/lib/test_bench_isolated/test_bench/fixture/actuate/class.rb +97 -0
  10. data/lib/test_bench_isolated/test_bench/fixture/actuate/object.rb +93 -0
  11. data/lib/test_bench_isolated/test_bench/fixture/controls/exception.rb +9 -0
  12. data/lib/test_bench_isolated/test_bench/fixture/controls/fixture/class.rb +88 -0
  13. data/lib/test_bench_isolated/test_bench/fixture/controls/fixture/object/modules.rb +41 -0
  14. data/lib/test_bench_isolated/test_bench/fixture/controls/fixture/object.rb +33 -0
  15. data/lib/test_bench_isolated/test_bench/fixture/controls/fixture.rb +29 -0
  16. data/lib/test_bench_isolated/test_bench/fixture/controls/output.rb +9 -0
  17. data/lib/test_bench_isolated/test_bench/fixture/controls/random.rb +9 -0
  18. data/lib/test_bench_isolated/test_bench/fixture/controls/result.rb +9 -0
  19. data/lib/test_bench_isolated/test_bench/fixture/controls/title.rb +9 -0
  20. data/lib/test_bench_isolated/test_bench/fixture/controls.rb +13 -0
  21. data/lib/test_bench_isolated/test_bench/fixture/evaluate.rb +31 -0
  22. data/lib/test_bench_isolated/test_bench/fixture/fixture.rb +201 -0
  23. data/lib/test_bench_isolated/test_bench/fixture.rb +8 -0
  24. data/lib/test_bench_isolated/test_bench/output/controls/data.rb +51 -0
  25. data/lib/test_bench_isolated/test_bench/output/controls/device.rb +29 -0
  26. data/lib/test_bench_isolated/test_bench/output/controls/event.rb +9 -0
  27. data/lib/test_bench_isolated/test_bench/output/controls/output.rb +36 -0
  28. data/lib/test_bench_isolated/test_bench/output/controls/random.rb +9 -0
  29. data/lib/test_bench_isolated/test_bench/output/controls/style.rb +33 -0
  30. data/lib/test_bench_isolated/test_bench/output/controls/styling.rb +29 -0
  31. data/lib/test_bench_isolated/test_bench/output/controls/text.rb +19 -0
  32. data/lib/test_bench_isolated/test_bench/output/controls.rb +10 -0
  33. data/lib/test_bench_isolated/test_bench/output/device/null.rb +21 -0
  34. data/lib/test_bench_isolated/test_bench/output/device/substitute.rb +60 -0
  35. data/lib/test_bench_isolated/test_bench/output/digest.rb +115 -0
  36. data/lib/test_bench_isolated/test_bench/output/output.rb +68 -0
  37. data/lib/test_bench_isolated/test_bench/output/writer/buffer.rb +59 -0
  38. data/lib/test_bench_isolated/test_bench/output/writer/defaults.rb +13 -0
  39. data/lib/test_bench_isolated/test_bench/output/writer/style.rb +52 -0
  40. data/lib/test_bench_isolated/test_bench/output/writer/substitute.rb +40 -0
  41. data/lib/test_bench_isolated/test_bench/output/writer.rb +212 -0
  42. data/lib/test_bench_isolated/test_bench/output.rb +14 -0
  43. data/lib/test_bench_isolated/test_bench/random/controls/seed.rb +27 -0
  44. data/lib/test_bench_isolated/test_bench/random/controls.rb +1 -0
  45. data/lib/test_bench_isolated/test_bench/random/random.rb +170 -0
  46. data/lib/test_bench_isolated/test_bench/random.rb +1 -0
  47. data/lib/test_bench_isolated/test_bench/run/controls/directory.rb +72 -0
  48. data/lib/test_bench_isolated/test_bench/run/controls/event_data.rb +9 -0
  49. data/lib/test_bench_isolated/test_bench/run/controls/events/event_data.rb +11 -0
  50. data/lib/test_bench_isolated/test_bench/run/controls/events/file_crashed.rb +111 -0
  51. data/lib/test_bench_isolated/test_bench/run/controls/events/file_finished.rb +58 -0
  52. data/lib/test_bench_isolated/test_bench/run/controls/events/file_started.rb +49 -0
  53. data/lib/test_bench_isolated/test_bench/run/controls/events/finished.rb +58 -0
  54. data/lib/test_bench_isolated/test_bench/run/controls/events/session.rb +11 -0
  55. data/lib/test_bench_isolated/test_bench/run/controls/events/started.rb +49 -0
  56. data/lib/test_bench_isolated/test_bench/run/controls/exception.rb +103 -0
  57. data/lib/test_bench_isolated/test_bench/run/controls/executor.rb +58 -0
  58. data/lib/test_bench_isolated/test_bench/run/controls/file/create.rb +71 -0
  59. data/lib/test_bench_isolated/test_bench/run/controls/file/pattern.rb +35 -0
  60. data/lib/test_bench_isolated/test_bench/run/controls/file.rb +182 -0
  61. data/lib/test_bench_isolated/test_bench/run/controls/path.rb +17 -0
  62. data/lib/test_bench_isolated/test_bench/run/controls/process_id.rb +9 -0
  63. data/lib/test_bench_isolated/test_bench/run/controls/random.rb +9 -0
  64. data/lib/test_bench_isolated/test_bench/run/controls/result.rb +9 -0
  65. data/lib/test_bench_isolated/test_bench/run/controls/time.rb +9 -0
  66. data/lib/test_bench_isolated/test_bench/run/controls.rb +26 -0
  67. data/lib/test_bench_isolated/test_bench/run/events.rb +14 -0
  68. data/lib/test_bench_isolated/test_bench/run/executor/serial.rb +36 -0
  69. data/lib/test_bench_isolated/test_bench/run/executor/substitute.rb +47 -0
  70. data/lib/test_bench_isolated/test_bench/run/executor.rb +46 -0
  71. data/lib/test_bench_isolated/test_bench/run/file.rb +83 -0
  72. data/lib/test_bench_isolated/test_bench/run/get_files/substitute.rb +48 -0
  73. data/lib/test_bench_isolated/test_bench/run/get_files.rb +78 -0
  74. data/lib/test_bench_isolated/test_bench/run/output/file.rb +137 -0
  75. data/lib/test_bench_isolated/test_bench/run/output/summary/error.rb +141 -0
  76. data/lib/test_bench_isolated/test_bench/run/output/summary.rb +184 -0
  77. data/lib/test_bench_isolated/test_bench/run/run.rb +156 -0
  78. data/lib/test_bench_isolated/test_bench/run.rb +18 -0
  79. data/lib/test_bench_isolated/test_bench/session/controls/comment.rb +107 -0
  80. data/lib/test_bench_isolated/test_bench/session/controls/detail.rb +93 -0
  81. data/lib/test_bench_isolated/test_bench/session/controls/event.rb +9 -0
  82. data/lib/test_bench_isolated/test_bench/session/controls/events/commented.rb +112 -0
  83. data/lib/test_bench_isolated/test_bench/session/controls/events/context_finished.rb +72 -0
  84. data/lib/test_bench_isolated/test_bench/session/controls/events/context_skipped.rb +49 -0
  85. data/lib/test_bench_isolated/test_bench/session/controls/events/context_started.rb +66 -0
  86. data/lib/test_bench_isolated/test_bench/session/controls/events/detailed.rb +112 -0
  87. data/lib/test_bench_isolated/test_bench/session/controls/events/event_data.rb +11 -0
  88. data/lib/test_bench_isolated/test_bench/session/controls/events/failed.rb +49 -0
  89. data/lib/test_bench_isolated/test_bench/session/controls/events/fixture_finished.rb +55 -0
  90. data/lib/test_bench_isolated/test_bench/session/controls/events/fixture_started.rb +49 -0
  91. data/lib/test_bench_isolated/test_bench/session/controls/events/test_finished.rb +72 -0
  92. data/lib/test_bench_isolated/test_bench/session/controls/events/test_skipped.rb +49 -0
  93. data/lib/test_bench_isolated/test_bench/session/controls/events/test_started.rb +66 -0
  94. data/lib/test_bench_isolated/test_bench/session/controls/events.rb +35 -0
  95. data/lib/test_bench_isolated/test_bench/session/controls/exception.rb +47 -0
  96. data/lib/test_bench_isolated/test_bench/session/controls/failure.rb +21 -0
  97. data/lib/test_bench_isolated/test_bench/session/controls/fixture.rb +21 -0
  98. data/lib/test_bench_isolated/test_bench/session/controls/output/detail.rb +31 -0
  99. data/lib/test_bench_isolated/test_bench/session/controls/output.rb +57 -0
  100. data/lib/test_bench_isolated/test_bench/session/controls/process_id.rb +9 -0
  101. data/lib/test_bench_isolated/test_bench/session/controls/random.rb +9 -0
  102. data/lib/test_bench_isolated/test_bench/session/controls/result.rb +25 -0
  103. data/lib/test_bench_isolated/test_bench/session/controls/substitute/path.rb +35 -0
  104. data/lib/test_bench_isolated/test_bench/session/controls/time.rb +9 -0
  105. data/lib/test_bench_isolated/test_bench/session/controls/title.rb +41 -0
  106. data/lib/test_bench_isolated/test_bench/session/controls.rb +36 -0
  107. data/lib/test_bench_isolated/test_bench/session/events.rb +27 -0
  108. data/lib/test_bench_isolated/test_bench/session/output/get.rb +29 -0
  109. data/lib/test_bench_isolated/test_bench/session/output/writer/buffer/interactive/viewport.rb +167 -0
  110. data/lib/test_bench_isolated/test_bench/session/output/writer/buffer/interactive.rb +141 -0
  111. data/lib/test_bench_isolated/test_bench/session/output/writer/buffer.rb +29 -0
  112. data/lib/test_bench_isolated/test_bench/session/output/writer/defaults.rb +19 -0
  113. data/lib/test_bench_isolated/test_bench/session/output/writer/substitute.rb +19 -0
  114. data/lib/test_bench_isolated/test_bench/session/output/writer.rb +97 -0
  115. data/lib/test_bench_isolated/test_bench/session/output.rb +377 -0
  116. data/lib/test_bench_isolated/test_bench/session/projection.rb +30 -0
  117. data/lib/test_bench_isolated/test_bench/session/session.rb +220 -0
  118. data/lib/test_bench_isolated/test_bench/session/store.rb +61 -0
  119. data/lib/test_bench_isolated/test_bench/session/substitute/path.rb +65 -0
  120. data/lib/test_bench_isolated/test_bench/session/substitute/sink.rb +114 -0
  121. data/lib/test_bench_isolated/test_bench/session/substitute.rb +120 -0
  122. data/lib/test_bench_isolated/test_bench/session.rb +22 -0
  123. data/lib/test_bench_isolated/test_bench/telemetry/controls/event/event_data.rb +17 -0
  124. data/lib/test_bench_isolated/test_bench/telemetry/controls/event/metadata.rb +72 -0
  125. data/lib/test_bench_isolated/test_bench/telemetry/controls/event.rb +140 -0
  126. data/lib/test_bench_isolated/test_bench/telemetry/controls/event_data.rb +131 -0
  127. data/lib/test_bench_isolated/test_bench/telemetry/controls/file.rb +86 -0
  128. data/lib/test_bench_isolated/test_bench/telemetry/controls/handler.rb +83 -0
  129. data/lib/test_bench_isolated/test_bench/telemetry/controls/process_id.rb +21 -0
  130. data/lib/test_bench_isolated/test_bench/telemetry/controls/projection/receiver.rb +33 -0
  131. data/lib/test_bench_isolated/test_bench/telemetry/controls/projection.rb +86 -0
  132. data/lib/test_bench_isolated/test_bench/telemetry/controls/random.rb +9 -0
  133. data/lib/test_bench_isolated/test_bench/telemetry/controls/sink.rb +35 -0
  134. data/lib/test_bench_isolated/test_bench/telemetry/controls/time.rb +125 -0
  135. data/lib/test_bench_isolated/test_bench/telemetry/controls.rb +17 -0
  136. data/lib/test_bench_isolated/test_bench/telemetry/event.rb +108 -0
  137. data/lib/test_bench_isolated/test_bench/telemetry/event_data/serialization.rb +172 -0
  138. data/lib/test_bench_isolated/test_bench/telemetry/event_data.rb +15 -0
  139. data/lib/test_bench_isolated/test_bench/telemetry/sink/file.rb +33 -0
  140. data/lib/test_bench_isolated/test_bench/telemetry/sink/handler/event_registry.rb +44 -0
  141. data/lib/test_bench_isolated/test_bench/telemetry/sink/handler.rb +128 -0
  142. data/lib/test_bench_isolated/test_bench/telemetry/sink/projection.rb +134 -0
  143. data/lib/test_bench_isolated/test_bench/telemetry/sink.rb +13 -0
  144. data/lib/test_bench_isolated/test_bench/telemetry/substitute/sink.rb +85 -0
  145. data/lib/test_bench_isolated/test_bench/telemetry/substitute.rb +34 -0
  146. data/lib/test_bench_isolated/test_bench/telemetry/telemetry.rb +111 -0
  147. data/lib/test_bench_isolated/test_bench/telemetry.rb +17 -0
  148. data/lib/test_bench_isolated/test_bench/test_bench.rb +56 -0
  149. data/lib/test_bench_isolated/test_bench.rb +5 -0
  150. data/script/bench +5 -0
  151. metadata +156 -7
  152. data/lib/test_bench/bootstrap.rb +0 -328
@@ -1,328 +0,0 @@
1
- module TestBench
2
- module Bootstrap
3
- def self.activate
4
- Object.include(Fixture)
5
- end
6
-
7
- module Backtrace
8
- if RUBY_ENGINE != 'mruby'
9
- def self.frame(frame_index)
10
- frame_index += 1
11
-
12
- caller[frame_index]
13
- end
14
- end
15
- end
16
-
17
- class AssertionFailure < RuntimeError
18
- def self.build(frame_index=nil)
19
- frame_index ||= 0
20
-
21
- frame = Backtrace.frame(frame_index)
22
-
23
- instance = new
24
- instance.set_backtrace([frame])
25
- instance
26
- end
27
-
28
- def message
29
- "Assertion failed"
30
- end
31
- end
32
-
33
- module Path
34
- if RUBY_ENGINE != 'mruby'
35
- def self.match?(pattern, string)
36
- ::File.fnmatch?(pattern, string)
37
- end
38
-
39
- def self.search(path, include_pattern=nil, exclude_pattern=nil)
40
- files = []
41
-
42
- if ::File.directory?(path)
43
- search_directory(path, files, include_pattern, exclude_pattern)
44
- elsif ::File.exist?(path)
45
- files << path
46
- else
47
- raise LoadError, "no such file or directory -- #{path}"
48
- end
49
-
50
- files
51
- end
52
-
53
- def self.search_directory(dir, files, include_pattern=nil, exclude_pattern=nil)
54
- include_pattern ||= '*.rb'
55
-
56
- ::Dir[::File.join(dir, '**', '*')].each do |path|
57
- next if ::File.directory?(path)
58
-
59
- if match?(include_pattern, path)
60
- if exclude_pattern.nil? || !match?(exclude_pattern, path)
61
- files << path
62
- end
63
- end
64
- end
65
- end
66
- end
67
- end
68
-
69
- module Fixture
70
- def assert(value)
71
- unless value
72
- raise AssertionFailure.build(1)
73
- end
74
- end
75
-
76
- def assert_raises(error_class=nil, &block)
77
- begin
78
- block.()
79
-
80
- rescue (error_class || StandardError) => error
81
- return if error_class.nil?
82
-
83
- if error.instance_of?(error_class)
84
- return
85
- else
86
- raise error
87
- end
88
- end
89
-
90
- raise AssertionFailure.build(1)
91
- end
92
-
93
- def refute(value)
94
- if value
95
- raise AssertionFailure.build(1)
96
- end
97
- end
98
-
99
- def refute_raises(error_class=nil, &block)
100
- block.()
101
-
102
- rescue (error_class || StandardError) => error
103
- unless error.instance_of?(error_class)
104
- raise error
105
- end
106
-
107
- raise AssertionFailure.build(1)
108
- end
109
-
110
- def context(title=nil, &block)
111
- if block.nil?
112
- Output.write(title || 'Context', sgr_code: 0x33)
113
- return
114
- end
115
-
116
- unless title.nil?
117
- Output.indent(title, sgr_code: 0x32) do
118
- context(&block)
119
- end
120
- return
121
- end
122
-
123
- block.()
124
- end
125
- alias_method :context!, :context
126
-
127
- def _context(title=nil, &block)
128
- context(title)
129
- end
130
-
131
- def test(title=nil, &block)
132
- if block.nil?
133
- Output.write(title || 'Test', sgr_code: 0x33)
134
- return
135
- end
136
-
137
- begin
138
- block.()
139
-
140
- Output.indent(title, sgr_code: 0x32)
141
-
142
- rescue => error
143
- Output.indent(title || 'Test', sgr_codes: [0x1, 0x31])
144
-
145
- raise error
146
- end
147
- end
148
- alias_method :test!, :test
149
-
150
- def _test(title=nil, &block)
151
- test(title)
152
- end
153
-
154
- def comment(...)
155
- detail(...)
156
- end
157
-
158
- def detail(detail, *additional_details, quote: nil, heading: nil)
159
- details = [detail, *additional_details]
160
-
161
- if quote.nil?
162
- if additional_details == ['']
163
- quote = true
164
- else
165
- quote = details.last.end_with?("\n")
166
- end
167
- end
168
-
169
- if quote
170
- if heading.nil?
171
- heading = !detail.end_with?("\n")
172
- end
173
- end
174
-
175
- if heading
176
- heading_text = details.shift
177
- Output.indent(heading_text, sgr_codes: [0x1, 0x4])
178
- end
179
-
180
- details.each do |detail|
181
- if detail.empty?
182
- Output.indent("\e[2;3m(empty)\e[23;22m")
183
- next
184
- end
185
-
186
- if quote
187
- detail.each_line do |line|
188
- line.chomp!
189
-
190
- Output.indent("\e[2m> \e[22m#{line}")
191
- end
192
- else
193
- Output.indent(detail)
194
- end
195
- end
196
- end
197
-
198
- def fixture(cls, *args, **kwargs, &block)
199
- fixture = TestBench::Fixture.(cls, *args, **kwargs, &block)
200
-
201
- passed = !fixture.test_session.failed?
202
-
203
- assert(passed)
204
- end
205
- end
206
-
207
- module Output
208
- extend self
209
-
210
- def write(text, device: nil, sgr_code: nil, sgr_codes: nil, tab_indent: nil)
211
- indent(text, device: device, sgr_code: sgr_code, sgr_codes: sgr_codes, tab_indent: tab_indent)
212
- end
213
-
214
- def newline
215
- write('')
216
- end
217
-
218
- def indent(text, device: nil, sgr_code: nil, sgr_codes: nil, tab_indent: nil, &block)
219
- unless text.nil?
220
- sgr_codes ||= []
221
- unless sgr_code.nil?
222
- sgr_codes << sgr_code
223
- end
224
-
225
- unless sgr_codes.empty?
226
- sgr_codes.map! do |sgr_code|
227
- sgr_code.to_s(16)
228
- end
229
-
230
- text = "\e[#{sgr_codes.join(';')}m#{text}\e[0m"
231
- end
232
-
233
- text = "#{"\t" if tab_indent}#{' ' * indentation}#{text}\n"
234
-
235
- raw_write(text, device)
236
- end
237
-
238
- return if block.nil?
239
-
240
- self.indentation += 1 unless text.nil?
241
-
242
- begin
243
- block.()
244
- ensure
245
- self.indentation -= 1 unless text.nil?
246
- end
247
- end
248
-
249
- def raw_write(text, device=nil)
250
- device ||= self.device
251
-
252
- device.write(text)
253
- end
254
-
255
- def indentation
256
- @indentation ||= 0
257
- end
258
- attr_writer :indentation
259
-
260
- def device
261
- @device ||= Defaults.output_device
262
- end
263
- end
264
-
265
- module Run
266
- def self.call(paths=nil, exclude_pattern: nil)
267
- paths ||= []
268
- exclude_pattern ||= Defaults.exclude_file_pattern
269
-
270
- if paths.is_a?(String)
271
- paths = [paths]
272
- end
273
-
274
- if paths.empty?
275
- paths << Defaults.tests_dir
276
- end
277
-
278
- paths.each do |path|
279
- Path.search(path, '*.rb', exclude_pattern).each do |file|
280
- Output.write "Running #{file}"
281
-
282
- begin
283
- load(file)
284
- ensure
285
- Output.newline
286
- end
287
- end
288
- end
289
- end
290
- end
291
-
292
- module Defaults
293
- def self.get(env_var, default)
294
- if env.key?(env_var)
295
- env[env_var]
296
- else
297
- default
298
- end
299
- end
300
-
301
- def self.exclude_file_pattern
302
- get('TEST_BENCH_EXCLUDE_FILE_PATTERN', '*_init.rb')
303
- end
304
-
305
- def self.omit_backtrace_pattern
306
- get('TEST_BENCH_OMIT_BACKTRACE_PATTERN', '*/test_bench/bootstrap.rb')
307
- end
308
-
309
- def self.tests_dir
310
- get('TEST_BENCH_TESTS_DIRECTORY', 'test/automated')
311
- end
312
-
313
- if RUBY_ENGINE == 'mruby'
314
- def self.env
315
- {}
316
- end
317
- else
318
- def self.output_device
319
- $stdout
320
- end
321
-
322
- def self.env
323
- ::ENV
324
- end
325
- end
326
- end
327
- end
328
- end