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,11 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Output
4
+ module Controls
5
+ module Events
6
+ TestFinished = Session::Events::TestFinished
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Output
4
+ module Controls
5
+ module Events
6
+ TestStarted = Session::Events::TestStarted
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,9 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Output
4
+ module Controls
5
+ Random = Session::Random
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,19 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Output
4
+ module Controls
5
+ module Session
6
+ Events = TestBench::Session::Controls::Events
7
+
8
+ Event = TestBench::Session::Controls::Event
9
+
10
+ Status = TestBench::Session::Controls::Status
11
+
12
+ Random = TestBench::Session::Controls::Random
13
+
14
+ CommentDisposition = TestBench::Session::Controls::CommentDisposition
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,9 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Output
4
+ module Controls
5
+ Status = Session::Status
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,41 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Output
4
+ module Controls
5
+ module Style
6
+ def self.example
7
+ :bold
8
+ end
9
+
10
+ def self.code
11
+ '1'
12
+ end
13
+
14
+ def self.other_example
15
+ Other.example
16
+ end
17
+
18
+ module Other
19
+ def self.example
20
+ :italic
21
+ end
22
+
23
+ def self.code
24
+ '3'
25
+ end
26
+ end
27
+
28
+ module Code
29
+ def self.example
30
+ Style.code
31
+ end
32
+
33
+ def self.other_example
34
+ Other.code
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,31 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Output
4
+ module Controls
5
+ module Text
6
+ def self.example
7
+ "Some text"
8
+ end
9
+
10
+ def self.other_example
11
+ "Some other text"
12
+ end
13
+
14
+ module NewlineTerminated
15
+ def self.example(lines: nil)
16
+ lines ||= 1
17
+
18
+ line_count = lines
19
+
20
+ lines = (1..line_count).map do |line_number|
21
+ "Line #{line_number}\n"
22
+ end
23
+
24
+ lines.join
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,26 @@
1
+ require 'test_bench_bootstrap/test_bench/session/controls'
2
+
3
+ require 'test_bench_bootstrap/test_bench/output/controls/session'
4
+
5
+ require 'test_bench_bootstrap/test_bench/output/controls/random'
6
+ require 'test_bench_bootstrap/test_bench/output/controls/status'
7
+ require 'test_bench_bootstrap/test_bench/output/controls/text'
8
+
9
+ require 'test_bench_bootstrap/test_bench/output/controls/style'
10
+
11
+ require 'test_bench_bootstrap/test_bench/output/controls/comment_style'
12
+
13
+ require 'test_bench_bootstrap/test_bench/output/controls/events/failed'
14
+ require 'test_bench_bootstrap/test_bench/output/controls/events/aborted'
15
+ require 'test_bench_bootstrap/test_bench/output/controls/events/skipped'
16
+ require 'test_bench_bootstrap/test_bench/output/controls/events/commented'
17
+ require 'test_bench_bootstrap/test_bench/output/controls/events/detailed'
18
+ require 'test_bench_bootstrap/test_bench/output/controls/events/test_started'
19
+ require 'test_bench_bootstrap/test_bench/output/controls/events/test_finished'
20
+ require 'test_bench_bootstrap/test_bench/output/controls/events/context_started'
21
+ require 'test_bench_bootstrap/test_bench/output/controls/events/context_finished'
22
+ require 'test_bench_bootstrap/test_bench/output/controls/events/file_queued'
23
+ require 'test_bench_bootstrap/test_bench/output/controls/events/file_executed'
24
+ require 'test_bench_bootstrap/test_bench/output/controls/events/file_not_found'
25
+
26
+ require 'test_bench_bootstrap/test_bench/output/controls/event'
@@ -0,0 +1,46 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Output
4
+ module DetailPolicy
5
+ Error = Class.new(RuntimeError)
6
+
7
+ def self.failure
8
+ :failure
9
+ end
10
+
11
+ def self.on
12
+ :on
13
+ end
14
+
15
+ def self.off
16
+ :off
17
+ end
18
+
19
+ def self.detail?(detail_policy, result=nil)
20
+ result ||= Session::Result.none
21
+
22
+ case detail_policy
23
+ when failure
24
+ [
25
+ Session::Result.failed,
26
+ Session::Result.aborted
27
+ ].include?(result)
28
+
29
+ when on
30
+ true
31
+
32
+ when off
33
+ false
34
+
35
+ else
36
+ raise Error, "Incorrect detail policy: #{detail_policy.inspect}"
37
+ end
38
+ end
39
+
40
+ def self.assure_policy(detail_policy)
41
+ detail?(detail_policy)
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,21 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Output
4
+ class Device
5
+ class Null
6
+ def self.instance
7
+ @instance ||= new
8
+ end
9
+
10
+ def write(data)
11
+ data.bytesize
12
+ end
13
+
14
+ def tty?
15
+ false
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,46 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Output
4
+ class Device
5
+ module Substitute
6
+ def self.build
7
+ Device.new
8
+ end
9
+
10
+ class Device
11
+ def written_text
12
+ @written_text ||= String.new
13
+ end
14
+ attr_writer :written_text
15
+
16
+ attr_accessor :tty
17
+
18
+ def tty?
19
+ tty ? true : false
20
+ end
21
+
22
+ def set_tty
23
+ self.tty = true
24
+ end
25
+
26
+ def write(text)
27
+ bytes_written = text.bytesize
28
+
29
+ written_text << text
30
+
31
+ bytes_written
32
+ end
33
+
34
+ def written?(text=nil)
35
+ if text.nil?
36
+ !written_text.empty?
37
+ else
38
+ written_text == text
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,75 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Output
4
+ class Device
5
+ Error = Class.new(RuntimeError)
6
+
7
+ def raw_device
8
+ @raw_device ||= Substitute.build
9
+ end
10
+ attr_writer :raw_device
11
+
12
+ def self.build(target_device=nil)
13
+ target_device ||= Defaults.target_device
14
+
15
+ raw_device = raw_device(target_device)
16
+
17
+ instance = new
18
+ instance.raw_device = raw_device
19
+ instance
20
+ end
21
+
22
+ def self.configure(receiver, device: nil, attr_name: nil)
23
+ attr_name ||= :device
24
+
25
+ if device.instance_of?(self)
26
+ instance = device
27
+ else
28
+ target_device = device
29
+
30
+ instance = build(target_device)
31
+ end
32
+
33
+ receiver.public_send(:"#{attr_name}=", instance)
34
+ end
35
+
36
+ def self.raw_device(target_device)
37
+ case target_device
38
+ in :stdout
39
+ STDOUT
40
+ in :stderr
41
+ STDERR
42
+ in :null
43
+ Null.instance
44
+ in Symbol
45
+ raise Error, "Incorrect output device: #{target_device.inspect}"
46
+ else
47
+ target_device
48
+ end
49
+ end
50
+
51
+ def write(text)
52
+ raw_device.write(text)
53
+
54
+ text.bytesize
55
+ end
56
+
57
+ def tty?
58
+ raw_device.tty?
59
+ end
60
+
61
+ module Defaults
62
+ def self.target_device
63
+ env_target_device = ENV.fetch('TEST_BENCH_OUTPUT_DEVICE') do
64
+ STDOUT.sync = true
65
+
66
+ 'stdout'
67
+ end
68
+
69
+ env_target_device.to_sym
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,32 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Output
4
+ module Get
5
+ Error = Class.new(RuntimeError)
6
+
7
+ def self.call(substitute_session, styling: nil)
8
+ styling ||= false
9
+
10
+ if not substitute_session.instance_of?(Session::Substitute::Session)
11
+ raise Error, "Not a substitute session: #{substitute_session.inspect}"
12
+ end
13
+
14
+ output = Output.new
15
+
16
+ if styling
17
+ output.writer.set_styling
18
+ end
19
+
20
+ event_records = substitute_session.sink.records
21
+ event_records.each do |record|
22
+ event_data = record.event_data
23
+
24
+ output.receive(event_data)
25
+ end
26
+
27
+ output.writer.written_text
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,53 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Output
4
+ module Level
5
+ Error = Class.new(RuntimeError)
6
+
7
+ def self.abort
8
+ :abort
9
+ end
10
+
11
+ def self.failure
12
+ :failure
13
+ end
14
+
15
+ def self.not_passing
16
+ :not_passing
17
+ end
18
+
19
+ def self.all
20
+ :all
21
+ end
22
+
23
+ def self.output?(output_level, result=nil)
24
+ result ||= Session::Result.none
25
+
26
+ case output_level
27
+ when abort
28
+ result == Session::Result.aborted
29
+
30
+ when failure
31
+ [
32
+ Session::Result.aborted,
33
+ Session::Result.failed
34
+ ].include?(result)
35
+
36
+ when not_passing
37
+ result != Session::Result.passed
38
+
39
+ when all
40
+ true
41
+
42
+ else
43
+ raise Error, "Incorrect output level: #{output_level.inspect}"
44
+ end
45
+ end
46
+
47
+ def self.assure_output_level(output_level)
48
+ output?(output_level)
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end