test_bench-bootstrap 6.1.1 → 7.0.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.
Files changed (171) hide show
  1. checksums.yaml +4 -4
  2. data/executables/bench-bootstrap +7 -0
  3. data/lib/test_bench_bootstrap/controls.rb +1 -0
  4. data/lib/test_bench_bootstrap/test_bench_bootstrap.rb +7 -0
  5. data/lib/test_bench_bootstrap.rb +4 -0
  6. data/upstream-lib/test_bench_bootstrap/import_constants/controls/namespace.rb +84 -0
  7. data/upstream-lib/test_bench_bootstrap/import_constants/controls.rb +1 -0
  8. data/upstream-lib/test_bench_bootstrap/import_constants/import_constants.rb +46 -0
  9. data/upstream-lib/test_bench_bootstrap/import_constants/macro.rb +10 -0
  10. data/upstream-lib/test_bench_bootstrap/import_constants.rb +2 -0
  11. data/upstream-lib/test_bench_bootstrap/test_bench/controls/telemetry_sink.rb +7 -0
  12. data/upstream-lib/test_bench_bootstrap/test_bench/controls.rb +3 -0
  13. data/upstream-lib/test_bench_bootstrap/test_bench/executable/controls/path.rb +9 -0
  14. data/upstream-lib/test_bench_bootstrap/test_bench/executable/controls/random.rb +9 -0
  15. data/upstream-lib/test_bench_bootstrap/test_bench/executable/controls/run.rb +12 -0
  16. data/upstream-lib/test_bench_bootstrap/test_bench/executable/controls/standard_input.rb +31 -0
  17. data/upstream-lib/test_bench_bootstrap/test_bench/executable/controls.rb +8 -0
  18. data/upstream-lib/test_bench_bootstrap/test_bench/executable/defaults.rb +15 -0
  19. data/upstream-lib/test_bench_bootstrap/test_bench/executable/executable.rb +61 -0
  20. data/upstream-lib/test_bench_bootstrap/test_bench/executable/parse_arguments.rb +271 -0
  21. data/upstream-lib/test_bench_bootstrap/test_bench/executable.rb +7 -0
  22. data/upstream-lib/test_bench_bootstrap/test_bench/fixture/build.rb +41 -0
  23. data/upstream-lib/test_bench_bootstrap/test_bench/fixture/controls/comment_style.rb +9 -0
  24. data/upstream-lib/test_bench_bootstrap/test_bench/fixture/controls/exception.rb +9 -0
  25. data/upstream-lib/test_bench_bootstrap/test_bench/fixture/controls/fixture.rb +69 -0
  26. data/upstream-lib/test_bench_bootstrap/test_bench/fixture/controls/message.rb +9 -0
  27. data/upstream-lib/test_bench_bootstrap/test_bench/fixture/controls/output.rb +11 -0
  28. data/upstream-lib/test_bench_bootstrap/test_bench/fixture/controls/path.rb +9 -0
  29. data/upstream-lib/test_bench_bootstrap/test_bench/fixture/controls/session.rb +21 -0
  30. data/upstream-lib/test_bench_bootstrap/test_bench/fixture/controls/status.rb +9 -0
  31. data/upstream-lib/test_bench_bootstrap/test_bench/fixture/controls/text.rb +9 -0
  32. data/upstream-lib/test_bench_bootstrap/test_bench/fixture/controls/title.rb +9 -0
  33. data/upstream-lib/test_bench_bootstrap/test_bench/fixture/controls.rb +14 -0
  34. data/upstream-lib/test_bench_bootstrap/test_bench/fixture/evaluate.rb +37 -0
  35. data/upstream-lib/test_bench_bootstrap/test_bench/fixture/fixture.rb +213 -0
  36. data/upstream-lib/test_bench_bootstrap/test_bench/fixture.rb +7 -0
  37. data/upstream-lib/test_bench_bootstrap/test_bench/output/comment_style.rb +63 -0
  38. data/upstream-lib/test_bench_bootstrap/test_bench/output/controls/comment_style.rb +23 -0
  39. data/upstream-lib/test_bench_bootstrap/test_bench/output/controls/event.rb +9 -0
  40. data/upstream-lib/test_bench_bootstrap/test_bench/output/controls/events/aborted.rb +11 -0
  41. data/upstream-lib/test_bench_bootstrap/test_bench/output/controls/events/commented.rb +23 -0
  42. data/upstream-lib/test_bench_bootstrap/test_bench/output/controls/events/context_finished.rb +11 -0
  43. data/upstream-lib/test_bench_bootstrap/test_bench/output/controls/events/context_started.rb +11 -0
  44. data/upstream-lib/test_bench_bootstrap/test_bench/output/controls/events/detailed.rb +23 -0
  45. data/upstream-lib/test_bench_bootstrap/test_bench/output/controls/events/failed.rb +11 -0
  46. data/upstream-lib/test_bench_bootstrap/test_bench/output/controls/events/file_executed.rb +11 -0
  47. data/upstream-lib/test_bench_bootstrap/test_bench/output/controls/events/file_not_found.rb +11 -0
  48. data/upstream-lib/test_bench_bootstrap/test_bench/output/controls/events/file_queued.rb +11 -0
  49. data/upstream-lib/test_bench_bootstrap/test_bench/output/controls/events/skipped.rb +11 -0
  50. data/upstream-lib/test_bench_bootstrap/test_bench/output/controls/events/test_finished.rb +11 -0
  51. data/upstream-lib/test_bench_bootstrap/test_bench/output/controls/events/test_started.rb +11 -0
  52. data/upstream-lib/test_bench_bootstrap/test_bench/output/controls/random.rb +9 -0
  53. data/upstream-lib/test_bench_bootstrap/test_bench/output/controls/session.rb +19 -0
  54. data/upstream-lib/test_bench_bootstrap/test_bench/output/controls/status.rb +9 -0
  55. data/upstream-lib/test_bench_bootstrap/test_bench/output/controls/style.rb +41 -0
  56. data/upstream-lib/test_bench_bootstrap/test_bench/output/controls/text.rb +31 -0
  57. data/upstream-lib/test_bench_bootstrap/test_bench/output/controls.rb +26 -0
  58. data/upstream-lib/test_bench_bootstrap/test_bench/output/detail_policy.rb +46 -0
  59. data/upstream-lib/test_bench_bootstrap/test_bench/output/device/null.rb +21 -0
  60. data/upstream-lib/test_bench_bootstrap/test_bench/output/device/substitute.rb +46 -0
  61. data/upstream-lib/test_bench_bootstrap/test_bench/output/device.rb +75 -0
  62. data/upstream-lib/test_bench_bootstrap/test_bench/output/get.rb +32 -0
  63. data/upstream-lib/test_bench_bootstrap/test_bench/output/level.rb +53 -0
  64. data/upstream-lib/test_bench_bootstrap/test_bench/output/output.rb +572 -0
  65. data/upstream-lib/test_bench_bootstrap/test_bench/output/writer/style.rb +54 -0
  66. data/upstream-lib/test_bench_bootstrap/test_bench/output/writer/substitute.rb +27 -0
  67. data/upstream-lib/test_bench_bootstrap/test_bench/output/writer.rb +119 -0
  68. data/upstream-lib/test_bench_bootstrap/test_bench/output.rb +20 -0
  69. data/upstream-lib/test_bench_bootstrap/test_bench/random/controls/seed.rb +25 -0
  70. data/upstream-lib/test_bench_bootstrap/test_bench/random/controls/sequence.rb +70 -0
  71. data/upstream-lib/test_bench_bootstrap/test_bench/random/controls.rb +2 -0
  72. data/upstream-lib/test_bench_bootstrap/test_bench/random/defaults.rb +13 -0
  73. data/upstream-lib/test_bench_bootstrap/test_bench/random/generator/substitute.rb +23 -0
  74. data/upstream-lib/test_bench_bootstrap/test_bench/random/generator.rb +64 -0
  75. data/upstream-lib/test_bench_bootstrap/test_bench/random/iterator.rb +54 -0
  76. data/upstream-lib/test_bench_bootstrap/test_bench/random/random.rb +27 -0
  77. data/upstream-lib/test_bench_bootstrap/test_bench/random.rb +8 -0
  78. data/upstream-lib/test_bench_bootstrap/test_bench/run/controls/events.rb +9 -0
  79. data/upstream-lib/test_bench_bootstrap/test_bench/run/controls/message.rb +9 -0
  80. data/upstream-lib/test_bench_bootstrap/test_bench/run/controls/path.rb +9 -0
  81. data/upstream-lib/test_bench_bootstrap/test_bench/run/controls/random.rb +9 -0
  82. data/upstream-lib/test_bench_bootstrap/test_bench/run/controls/session.rb +16 -0
  83. data/upstream-lib/test_bench_bootstrap/test_bench/run/controls/status.rb +44 -0
  84. data/upstream-lib/test_bench_bootstrap/test_bench/run/controls/summary/file/info.rb +108 -0
  85. data/upstream-lib/test_bench_bootstrap/test_bench/run/controls/summary/file/totals.rb +38 -0
  86. data/upstream-lib/test_bench_bootstrap/test_bench/run/controls/summary/file.rb +44 -0
  87. data/upstream-lib/test_bench_bootstrap/test_bench/run/controls/summary/run.rb +53 -0
  88. data/upstream-lib/test_bench_bootstrap/test_bench/run/controls/summary.rb +45 -0
  89. data/upstream-lib/test_bench_bootstrap/test_bench/run/controls/telemetry.rb +11 -0
  90. data/upstream-lib/test_bench_bootstrap/test_bench/run/controls/time.rb +9 -0
  91. data/upstream-lib/test_bench_bootstrap/test_bench/run/controls.rb +20 -0
  92. data/upstream-lib/test_bench_bootstrap/test_bench/run/run.rb +146 -0
  93. data/upstream-lib/test_bench_bootstrap/test_bench/run/select_files/substitute.rb +45 -0
  94. data/upstream-lib/test_bench_bootstrap/test_bench/run/select_files.rb +70 -0
  95. data/upstream-lib/test_bench_bootstrap/test_bench/run/substitute.rb +42 -0
  96. data/upstream-lib/test_bench_bootstrap/test_bench/run/summary/substitute.rb +19 -0
  97. data/upstream-lib/test_bench_bootstrap/test_bench/run/summary.rb +477 -0
  98. data/upstream-lib/test_bench_bootstrap/test_bench/run.rb +10 -0
  99. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/backtrace/location.rb +48 -0
  100. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/backtrace.rb +83 -0
  101. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/comment_disposition.rb +17 -0
  102. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/event.rb +35 -0
  103. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/events/aborted.rb +51 -0
  104. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/events/commented.rb +62 -0
  105. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/events/context_finished.rb +112 -0
  106. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/events/context_started.rb +51 -0
  107. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/events/detailed.rb +62 -0
  108. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/events/failed.rb +41 -0
  109. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/events/file_executed.rb +101 -0
  110. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/events/file_not_found.rb +41 -0
  111. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/events/file_queued.rb +41 -0
  112. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/events/skipped.rb +51 -0
  113. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/events/test_finished.rb +92 -0
  114. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/events/test_started.rb +51 -0
  115. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/events.rb +35 -0
  116. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/exception/message.rb +23 -0
  117. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/exception/raise.rb +52 -0
  118. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/exception.rb +81 -0
  119. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/message.rb +43 -0
  120. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/metadata.rb +9 -0
  121. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/path/apex_directory.rb +76 -0
  122. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/path/file/create.rb +113 -0
  123. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/path/file.rb +42 -0
  124. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/path.rb +87 -0
  125. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/random.rb +9 -0
  126. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/result.rb +17 -0
  127. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/sequence.rb +13 -0
  128. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/status.rb +92 -0
  129. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/telemetry.rb +15 -0
  130. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/telemetry_sink.rb +37 -0
  131. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/text.rb +33 -0
  132. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls/title.rb +41 -0
  133. data/upstream-lib/test_bench_bootstrap/test_bench/session/controls.rb +43 -0
  134. data/upstream-lib/test_bench_bootstrap/test_bench/session/defaults.rb +17 -0
  135. data/upstream-lib/test_bench_bootstrap/test_bench/session/events.rb +24 -0
  136. data/upstream-lib/test_bench_bootstrap/test_bench/session/exception/format_backtrace/substitute.rb +34 -0
  137. data/upstream-lib/test_bench_bootstrap/test_bench/session/exception/format_backtrace.rb +114 -0
  138. data/upstream-lib/test_bench_bootstrap/test_bench/session/isolate/substitute.rb +45 -0
  139. data/upstream-lib/test_bench_bootstrap/test_bench/session/isolate.rb +159 -0
  140. data/upstream-lib/test_bench_bootstrap/test_bench/session/result.rb +44 -0
  141. data/upstream-lib/test_bench_bootstrap/test_bench/session/session.rb +236 -0
  142. data/upstream-lib/test_bench_bootstrap/test_bench/session/status.rb +60 -0
  143. data/upstream-lib/test_bench_bootstrap/test_bench/session/substitute/sink.rb +99 -0
  144. data/upstream-lib/test_bench_bootstrap/test_bench/session/substitute.rb +154 -0
  145. data/upstream-lib/test_bench_bootstrap/test_bench/session/trace.rb +53 -0
  146. data/upstream-lib/test_bench_bootstrap/test_bench/session.rb +22 -0
  147. data/upstream-lib/test_bench_bootstrap/test_bench/telemetry/controls/event/metadata.rb +72 -0
  148. data/upstream-lib/test_bench_bootstrap/test_bench/telemetry/controls/event.rb +156 -0
  149. data/upstream-lib/test_bench_bootstrap/test_bench/telemetry/controls/event_data.rb +113 -0
  150. data/upstream-lib/test_bench_bootstrap/test_bench/telemetry/controls/handler.rb +83 -0
  151. data/upstream-lib/test_bench_bootstrap/test_bench/telemetry/controls/path/file.rb +39 -0
  152. data/upstream-lib/test_bench_bootstrap/test_bench/telemetry/controls/process_id.rb +25 -0
  153. data/upstream-lib/test_bench_bootstrap/test_bench/telemetry/controls/random.rb +11 -0
  154. data/upstream-lib/test_bench_bootstrap/test_bench/telemetry/controls/sink.rb +35 -0
  155. data/upstream-lib/test_bench_bootstrap/test_bench/telemetry/controls/time.rb +104 -0
  156. data/upstream-lib/test_bench_bootstrap/test_bench/telemetry/controls.rb +16 -0
  157. data/upstream-lib/test_bench_bootstrap/test_bench/telemetry/event.rb +130 -0
  158. data/upstream-lib/test_bench_bootstrap/test_bench/telemetry/event_data/serialization.rb +85 -0
  159. data/upstream-lib/test_bench_bootstrap/test_bench/telemetry/event_data.rb +15 -0
  160. data/upstream-lib/test_bench_bootstrap/test_bench/telemetry/sink/file.rb +39 -0
  161. data/upstream-lib/test_bench_bootstrap/test_bench/telemetry/sink/handler/event_registry.rb +44 -0
  162. data/upstream-lib/test_bench_bootstrap/test_bench/telemetry/sink/handler.rb +128 -0
  163. data/upstream-lib/test_bench_bootstrap/test_bench/telemetry/sink.rb +13 -0
  164. data/upstream-lib/test_bench_bootstrap/test_bench/telemetry/substitute/sink.rb +71 -0
  165. data/upstream-lib/test_bench_bootstrap/test_bench/telemetry/substitute.rb +43 -0
  166. data/upstream-lib/test_bench_bootstrap/test_bench/telemetry/telemetry.rb +92 -0
  167. data/upstream-lib/test_bench_bootstrap/test_bench/telemetry.rb +18 -0
  168. data/upstream-lib/test_bench_bootstrap/test_bench/test_bench.rb +72 -0
  169. data/upstream-lib/test_bench_bootstrap/test_bench.rb +4 -0
  170. metadata +353 -16
  171. data/lib/test_bench/bootstrap.rb +0 -328
@@ -0,0 +1,44 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Run
4
+ module Controls
5
+ module Summary
6
+ module File
7
+ module Unstyled
8
+ def self.example
9
+ <<~TEXT
10
+ File Summary
11
+ - - -
12
+ - #{Path::File.example}: no tests, 11 failures, 12+ skipped, 2 errors:
13
+ #{Message::Error.example}
14
+ #{Session::BacktraceLocation.example}
15
+
16
+ #{Message::Error.other_example}
17
+ #{Session::BacktraceLocation.other_example}
18
+
19
+ - #{Path::File.other_example}: 1 failure
20
+ TEXT
21
+ end
22
+ end
23
+
24
+ module Styled
25
+ def self.example
26
+ <<~TEXT
27
+ \e[1;4m\e[31mFile Summary\e[m
28
+ \e[31m\e[2m-\e[22m \e[1m#{Info.path}\e[22m: no tests, 11 failures, 12+ skipped, 2 errors:\e[m
29
+ \e[31m#{Message::Error.example}\e[m
30
+ \e[31m#{Session::BacktraceLocation.example}\e[m
31
+ \e[m
32
+ \e[31m#{Message::Error.other_example}\e[m
33
+ \e[31m#{Session::BacktraceLocation.other_example}\e[m
34
+ \e[m
35
+ \e[31m\e[2m-\e[22m \e[1m#{Info::Other.path}\e[22m: 1 failure\e[m
36
+ TEXT
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,53 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Run
4
+ module Controls
5
+ module Summary
6
+ module Run
7
+ def self.example
8
+ Unstyled.example
9
+ end
10
+
11
+ module Unstyled
12
+ def self.example
13
+ <<~TEXT
14
+ Attempted 222 files: 200 completed, 20 aborted, 2 not found
15
+ 1111 tests in 0.00 seconds (Inf tests/sec)
16
+ 1000 passed, 111 failed, 11+ skipped
17
+ TEXT
18
+ end
19
+ end
20
+
21
+ module Styled
22
+ def self.example
23
+ <<~TEXT
24
+ Attempted 222 files: 200 completed, \e[1;31m20 aborted\e[39;22m, \e[31m2 not found\e[m
25
+ 1111 tests in 0.00 seconds (Inf tests/sec)\e[m
26
+ \e[32m1000 passed\e[39m, \e[1;31m111 failed\e[39;22m, \e[33m11+ skipped\e[m
27
+ TEXT
28
+ end
29
+ end
30
+
31
+ module Initial
32
+ def self.unstyled
33
+ <<~TEXT
34
+ Attempted 0 files: 0 completed, 0 aborted, 0 not found
35
+ 0 tests in 0.00 seconds (NaN tests/sec)
36
+ 0 passed, 0 failed, 0 skipped
37
+ TEXT
38
+ end
39
+
40
+ def self.styled
41
+ <<~TEXT
42
+ Attempted 0 files: 0 completed, 0 aborted, 0 not found\e[m
43
+ 0 tests in 0.00 seconds (NaN tests/sec)\e[m
44
+ \e[2;3m0 passed\e[23;22m, 0 failed, 0 skipped\e[m
45
+ TEXT
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,45 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Run
4
+ module Controls
5
+ module Summary
6
+ def self.example
7
+ Unstyled.example
8
+ end
9
+
10
+ module Unstyled
11
+ def self.example
12
+ <<~TEXT
13
+ #{File::Unstyled.example}
14
+ #{Run::Unstyled.example}
15
+ TEXT
16
+ end
17
+ end
18
+
19
+ module Styled
20
+ def self.example
21
+ <<~TEXT
22
+ #{File::Styled.example}\e[m
23
+ #{Run::Styled.example}\e[m
24
+ TEXT
25
+ end
26
+ end
27
+
28
+ module Initial
29
+ def self.unstyled
30
+ <<~TEXT
31
+ #{Run::Initial.unstyled}
32
+ TEXT
33
+ end
34
+
35
+ def self.styled
36
+ <<~TEXT
37
+ #{Run::Initial.styled}\e[m
38
+ TEXT
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,11 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Run
4
+ module Controls
5
+ module Telemetry
6
+ Time = TestBench::Telemetry::Controls::Time
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Run
4
+ module Controls
5
+ Time = Telemetry::Time
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,20 @@
1
+ require 'fileutils'
2
+
3
+ require 'test_bench_bootstrap/test_bench/output/controls'
4
+
5
+ require 'test_bench_bootstrap/test_bench/run/controls/session'
6
+ require 'test_bench_bootstrap/test_bench/run/controls/telemetry'
7
+
8
+ require 'test_bench_bootstrap/test_bench/run/controls/events'
9
+ require 'test_bench_bootstrap/test_bench/run/controls/message'
10
+ require 'test_bench_bootstrap/test_bench/run/controls/random'
11
+ require 'test_bench_bootstrap/test_bench/run/controls/status'
12
+ require 'test_bench_bootstrap/test_bench/run/controls/time'
13
+
14
+ require 'test_bench_bootstrap/test_bench/run/controls/path'
15
+
16
+ require 'test_bench_bootstrap/test_bench/run/controls/summary'
17
+ require 'test_bench_bootstrap/test_bench/run/controls/summary/file'
18
+ require 'test_bench_bootstrap/test_bench/run/controls/summary/file/totals'
19
+ require 'test_bench_bootstrap/test_bench/run/controls/summary/file/info'
20
+ require 'test_bench_bootstrap/test_bench/run/controls/summary/run'
@@ -0,0 +1,146 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Run
4
+ def summary
5
+ @summary ||= Summary::Substitute.build
6
+ end
7
+ attr_writer :summary
8
+
9
+ def select_files
10
+ @select_files ||= SelectFiles::Substitute.build
11
+ end
12
+ attr_writer :select_files
13
+
14
+ def session
15
+ @session ||= Session::Substitute.build
16
+ end
17
+ attr_writer :session
18
+
19
+ def print_summary
20
+ @print_summary.nil? ?
21
+ @print_summary = true :
22
+ @print_summary
23
+ end
24
+ attr_writer :print_summary
25
+ alias :print_summary? :print_summary
26
+
27
+ def abort_on_failure
28
+ @abort_on_failure.nil? ?
29
+ @abort_on_failure = false :
30
+ @abort_on_failure
31
+ end
32
+ attr_writer :abort_on_failure
33
+ alias :abort_on_failure? :abort_on_failure
34
+
35
+ def path_sequence
36
+ @path_sequence ||= 0
37
+ end
38
+ attr_writer :path_sequence
39
+
40
+ def self.build(exclude: nil, print_summary: nil, abort_on_failure: nil, session: nil)
41
+ if print_summary.nil?
42
+ print_summary = Defaults.print_summary
43
+ end
44
+
45
+ if abort_on_failure.nil?
46
+ abort_on_failure = Defaults.abort_on_failure
47
+ end
48
+
49
+ instance = new
50
+
51
+ instance.print_summary = print_summary
52
+ instance.abort_on_failure = abort_on_failure
53
+
54
+ Session.configure(instance, session:)
55
+
56
+ Summary.configure(instance)
57
+
58
+ SelectFiles.configure(instance, exclude_patterns: exclude)
59
+
60
+ session = instance.session
61
+
62
+ Output.register_telemetry_sink(session)
63
+
64
+ summary = instance.summary
65
+ session.register_telemetry_sink(summary)
66
+
67
+ instance
68
+ end
69
+
70
+ def self.configure(receiver, attr_name: nil)
71
+ attr_name ||= :run
72
+
73
+ session = establish_session
74
+
75
+ instance = build(session:)
76
+ receiver.public_send(:"#{attr_name}=", instance)
77
+ end
78
+
79
+ def self.call(path, exclude: nil)
80
+ session = establish_session
81
+
82
+ instance = build(exclude:, session:)
83
+
84
+ instance.() do
85
+ instance << path
86
+ end
87
+ end
88
+
89
+ def self.establish_session
90
+ session = Session.build
91
+ Session.establish(session)
92
+ session
93
+ end
94
+
95
+ def call(&block)
96
+ block.(self)
97
+
98
+ session.isolate.stop
99
+
100
+ if print_summary?
101
+ summary.print
102
+ end
103
+
104
+ result = session.result
105
+ Session::Result.resolve(result)
106
+ end
107
+
108
+ def path(path)
109
+ self.path_sequence += 1
110
+
111
+ select_files.(path) do |file_path|
112
+ if abort_on_failure?
113
+ case session.result
114
+ when Session::Result.aborted, Session::Result.failed
115
+ next
116
+ end
117
+ end
118
+
119
+ session.execute(file_path)
120
+ end
121
+
122
+ rescue SelectFiles::PathNotFoundError
123
+ session.execute(path)
124
+ end
125
+ alias :<< :path
126
+
127
+ def ran?
128
+ path_sequence > 0
129
+ end
130
+
131
+ module Defaults
132
+ def self.abort_on_failure
133
+ env_abort_on_failure = ENV.fetch('TEST_BENCH_ABORT_ON_FAILURE', 'off')
134
+
135
+ env_abort_on_failure == 'on'
136
+ end
137
+
138
+ def self.print_summary
139
+ env_print_summary = ENV.fetch('TEST_BENCH_OUTPUT_SUMMARY', 'on')
140
+
141
+ env_print_summary == 'on'
142
+ end
143
+ end
144
+ end
145
+ end
146
+ end
@@ -0,0 +1,45 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Run
4
+ class SelectFiles
5
+ module Substitute
6
+ def self.build
7
+ SelectFiles.new
8
+ end
9
+
10
+ class SelectFiles
11
+ def files
12
+ @files ||= []
13
+ end
14
+ attr_writer :files
15
+ alias :set_files :files=
16
+
17
+ def paths
18
+ @paths ||= []
19
+ end
20
+
21
+ attr_accessor :raise_path_not_found_error
22
+
23
+ def raise_path_not_found_error!
24
+ self.raise_path_not_found_error = true
25
+ end
26
+
27
+ def call(path, &block)
28
+ if raise_path_not_found_error
29
+ raise PathNotFoundError
30
+ end
31
+
32
+ self.paths << path
33
+
34
+ files.each(&block)
35
+ end
36
+
37
+ def path?(path)
38
+ paths.include?(path)
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,70 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Run
4
+ class SelectFiles
5
+ PathNotFoundError = Class.new(RuntimeError)
6
+
7
+ def exclude_patterns
8
+ @exclude_patterns ||= []
9
+ end
10
+ attr_writer :exclude_patterns
11
+
12
+ attr_accessor :apex_directory
13
+
14
+ def self.build(exclude_patterns: nil)
15
+ exclude_patterns ||= Defaults.exclude_file_patterns
16
+
17
+ exclude_patterns = Array(exclude_patterns)
18
+
19
+ instance = new
20
+ instance.exclude_patterns = exclude_patterns
21
+ instance
22
+ end
23
+
24
+ def self.configure(receiver, exclude_patterns: nil, attr_name: nil)
25
+ attr_name ||= :select_files
26
+
27
+ instance = build(exclude_patterns:)
28
+ receiver.public_send(:"#{attr_name}=", instance)
29
+ end
30
+
31
+ def call(path, &block)
32
+ full_path = ::File.expand_path(path, apex_directory)
33
+ if not ::File.exist?(full_path)
34
+ raise PathNotFoundError, "No such file or directory - #{full_path}"
35
+ end
36
+
37
+ extension = ::File.extname(path)
38
+
39
+ if extension.empty?
40
+ directory_path = path
41
+ glob_pattern = ::File.join(directory_path, '**', '*.rb')
42
+ else
43
+ file_path = path
44
+ glob_pattern = file_path
45
+ end
46
+
47
+ Dir.glob(glob_pattern, base: apex_directory) do |file|
48
+ excluded = exclude_patterns.any? do |exclude_pattern|
49
+ ::File.fnmatch?(exclude_pattern, file, ::File::FNM_EXTGLOB)
50
+ end
51
+
52
+ if excluded
53
+ next
54
+ end
55
+
56
+ block.(file)
57
+ end
58
+ end
59
+
60
+ module Defaults
61
+ def self.exclude_file_patterns
62
+ env_exclude_file_pattern = ENV.fetch('TEST_BENCH_EXCLUDE_FILE_PATTERN', '*_init.rb')
63
+
64
+ env_exclude_file_pattern.split(':')
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,42 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Run
4
+ module Substitute
5
+ def self.build
6
+ Run.new
7
+ end
8
+
9
+ class Run
10
+ attr_accessor :result
11
+ alias :set_result :result=
12
+
13
+ attr_accessor :ran
14
+ def ran?
15
+ ran ? true : false
16
+ end
17
+
18
+ def paths
19
+ @paths ||= []
20
+ end
21
+
22
+ def call(&block)
23
+ block.(self)
24
+
25
+ result
26
+ end
27
+
28
+ def path(path)
29
+ self.ran = true
30
+
31
+ paths << path
32
+ end
33
+ alias :<< :path
34
+
35
+ def path?(path)
36
+ paths.include?(path)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,19 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Run
4
+ class Summary
5
+ module Substitute
6
+ def self.build
7
+ Summary.new
8
+ end
9
+
10
+ class Summary < Summary
11
+ def printed?(...)
12
+ writer.written?(...)
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end