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,119 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Output
4
+ class Writer
5
+ def device
6
+ @device ||= Device::Substitute.build
7
+ end
8
+ attr_writer :device
9
+
10
+ attr_accessor :styling
11
+ alias :styling? :styling
12
+
13
+ def indentation_depth
14
+ @indentation_depth ||= 0
15
+ end
16
+ attr_writer :indentation_depth
17
+
18
+ def self.build(styling: nil, device: nil)
19
+ instance = new
20
+
21
+ Device.configure(instance, device:)
22
+
23
+ device = instance.device
24
+
25
+ styling = styling(styling, device)
26
+ instance.styling = styling
27
+
28
+ instance
29
+ end
30
+
31
+ def self.configure(receiver, styling: nil, device: nil, attr_name: nil)
32
+ attr_name ||= :writer
33
+
34
+ instance = build(styling:, device:)
35
+ receiver.public_send(:"#{attr_name}=", instance)
36
+ end
37
+
38
+ def self.styling(styling_or_styling_policy, device)
39
+ case styling_or_styling_policy
40
+ in true | false => styling
41
+ return styling
42
+ in :detect | :on | :off => styling_policy
43
+ in nil
44
+ styling_policy = Defaults.styling_policy
45
+ end
46
+
47
+ case styling_policy
48
+ in :detect
49
+ device.tty?
50
+ in :on
51
+ true
52
+ in :off
53
+ false
54
+ end
55
+ end
56
+
57
+ def indent
58
+ indentation_width = 2 * indentation_depth
59
+
60
+ print(' ' * indentation_width)
61
+ end
62
+
63
+ def puts(text=nil)
64
+ if not text.nil?
65
+ print(text.chomp)
66
+ end
67
+
68
+ style(:reset)
69
+
70
+ print("\n")
71
+ end
72
+
73
+ def style(style, *additional_styles)
74
+ styles = [style, *additional_styles]
75
+
76
+ control_codes = styles.map do |style|
77
+ Style.control_code(style)
78
+ end
79
+
80
+ if styling?
81
+ control_sequence = "\e[#{control_codes.join(';')}m"
82
+
83
+ print(control_sequence)
84
+ end
85
+
86
+ self
87
+ end
88
+
89
+ def print(text)
90
+ write(text)
91
+
92
+ self
93
+ end
94
+
95
+ def write(text)
96
+ device.write(text)
97
+ end
98
+
99
+ def increase_indentation
100
+ self.indentation_depth += 1
101
+ end
102
+
103
+ def decrease_indentation
104
+ self.indentation_depth -= 1
105
+ end
106
+
107
+ module Defaults
108
+ def self.styling_policy
109
+ env_styling_policy = ENV.fetch('TEST_BENCH_OUTPUT_STYLING', 'detect')
110
+
111
+ styling_policy = env_styling_policy.to_sym
112
+
113
+ styling_policy
114
+ end
115
+ end
116
+ end
117
+ end
118
+ end
119
+ end
@@ -0,0 +1,20 @@
1
+ require 'test_bench_bootstrap/import_constants'
2
+
3
+ require 'test_bench_bootstrap/test_bench/session'
4
+
5
+ require 'test_bench_bootstrap/test_bench/output/device/null'
6
+ require 'test_bench_bootstrap/test_bench/output/device/substitute'
7
+ require 'test_bench_bootstrap/test_bench/output/device'
8
+
9
+ require 'test_bench_bootstrap/test_bench/output/writer'
10
+ require 'test_bench_bootstrap/test_bench/output/writer/style'
11
+ require 'test_bench_bootstrap/test_bench/output/writer/substitute'
12
+
13
+ require 'test_bench_bootstrap/test_bench/output/comment_style'
14
+ require 'test_bench_bootstrap/test_bench/output/detail_policy'
15
+
16
+ require 'test_bench_bootstrap/test_bench/output/level'
17
+
18
+ require 'test_bench_bootstrap/test_bench/output/output'
19
+
20
+ require 'test_bench_bootstrap/test_bench/output/get'
@@ -0,0 +1,25 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ module Random
4
+ module Controls
5
+ module Seed
6
+ def self.example
7
+ '1111111111111111'
8
+ end
9
+
10
+ def self.other_example
11
+ '2222222222222222'
12
+ end
13
+
14
+ module Value
15
+ def self.example(seed=nil)
16
+ seed ||= Seed.example
17
+
18
+ seed.to_i(36)
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,70 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ module Random
4
+ module Controls
5
+ module Sequence
6
+ def self.example(count=nil, random_seed: nil)
7
+ count ||= self.count
8
+ random_seed ||= self.random_seed
9
+
10
+ random = ::Random.new(random_seed)
11
+
12
+ count.times.map do
13
+ random.bytes(8)
14
+ end
15
+ end
16
+
17
+ def self.count
18
+ 3
19
+ end
20
+
21
+ def self.random_seed
22
+ Seed::Value.example
23
+ end
24
+
25
+ module Integer
26
+ def self.example(count=nil, random_seed: nil)
27
+ sequence = Sequence.example(count, random_seed:)
28
+
29
+ sequence.map do |bytes|
30
+ bytes.unpack1('Q>')
31
+ end
32
+ end
33
+ end
34
+
35
+ module Decimal
36
+ def self.example(count=nil, random_seed: nil)
37
+ sequence = Sequence.example(count, random_seed:)
38
+
39
+ sequence.map do |bytes|
40
+ bytes.unpack1('D')
41
+ end
42
+ end
43
+ end
44
+
45
+ module String
46
+ def self.example(count=nil, random_seed: nil)
47
+ integer_sequence = Sequence::Integer.example(count, random_seed:)
48
+
49
+ integer_sequence.map do |integer|
50
+ integer.to_s(36)
51
+ end
52
+ end
53
+ end
54
+
55
+ module Boolean
56
+ def self.example(count=nil, random_seed: nil)
57
+ count ||= 10
58
+
59
+ integer_sequence = Sequence::Integer.example(count, random_seed:)
60
+
61
+ integer_sequence.map do |integer|
62
+ integer % 2 == 1
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,2 @@
1
+ require 'test_bench_bootstrap/test_bench/random/controls/seed'
2
+ require 'test_bench_bootstrap/test_bench/random/controls/sequence'
@@ -0,0 +1,13 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ module Random
4
+ module Defaults
5
+ def self.seed
6
+ ENV.fetch('TEST_BENCH_SEED') do
7
+ @seed ||= ::Random.new_seed.to_s(36)
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,23 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ module Random
4
+ class Generator
5
+ module Substitute
6
+ def self.build
7
+ Generator.build
8
+ end
9
+
10
+ class Generator < Generator
11
+ def self.build
12
+ new(seed)
13
+ end
14
+
15
+ def self.seed
16
+ '0'
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,64 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ module Random
4
+ class Generator
5
+ def iterator
6
+ @iterator ||= Iterator.build(seed)
7
+ end
8
+ attr_writer :iterator
9
+
10
+ attr_accessor :seed
11
+ alias :set_seed :seed=
12
+
13
+ def initialize(seed)
14
+ @seed = seed
15
+ end
16
+
17
+ def self.build(seed=nil)
18
+ seed ||= Defaults.seed
19
+
20
+ new(seed)
21
+ end
22
+
23
+ def self.instance
24
+ @instance ||= build
25
+ end
26
+
27
+ def self.configure(receiver, attr_name: nil)
28
+ attr_name ||= :random_generator
29
+
30
+ instance = self.instance
31
+ receiver.public_send(:"#{attr_name}=", instance)
32
+ end
33
+
34
+ def string
35
+ self.integer.to_s(36)
36
+ end
37
+
38
+ def boolean
39
+ self.integer % 2 == 1
40
+ end
41
+
42
+ def integer
43
+ iterator.next.unpack1('Q>')
44
+ end
45
+
46
+ def decimal
47
+ iterator.next.unpack1('D')
48
+ end
49
+
50
+ def reset
51
+ self.iterator = Iterator.build(seed)
52
+ end
53
+
54
+ def reset?
55
+ if iterator.iterated?
56
+ false
57
+ else
58
+ true
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,54 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ module Random
4
+ class Iterator
5
+ attr_accessor :seed
6
+
7
+ def iterations
8
+ @iterations ||= 0
9
+ end
10
+ attr_writer :iterations
11
+
12
+ attr_reader :random
13
+
14
+ def initialize(random)
15
+ @random = random
16
+ end
17
+
18
+ def self.build(seed)
19
+ random = self.random(seed)
20
+
21
+ instance = new(random)
22
+ instance.seed = seed
23
+ instance
24
+ end
25
+
26
+ def self.random(seed)
27
+ random_seed = seed.to_i(36)
28
+
29
+ ::Random.new(random_seed)
30
+ end
31
+
32
+ def next
33
+ self.iterations += 1
34
+
35
+ random.bytes(8)
36
+ end
37
+
38
+ def seed?(seed)
39
+ control_random = ::Random.new(random.seed)
40
+ compare_random = Iterator.random(seed)
41
+
42
+ control_value = control_random.rand
43
+ compare_value = compare_random.rand
44
+
45
+ control_value == compare_value
46
+ end
47
+
48
+ def iterated?
49
+ iterations > 0
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,27 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ module Random
4
+ extend self
5
+
6
+ def reset
7
+ Generator.instance.reset
8
+ end
9
+
10
+ def string
11
+ Generator.instance.string
12
+ end
13
+
14
+ def boolean
15
+ Generator.instance.boolean
16
+ end
17
+
18
+ def integer
19
+ Generator.instance.integer
20
+ end
21
+
22
+ def decimal
23
+ Generator.instance.decimal
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,8 @@
1
+ require 'test_bench_bootstrap/test_bench/random/defaults'
2
+
3
+ require 'test_bench_bootstrap/test_bench/random/iterator'
4
+
5
+ require 'test_bench_bootstrap/test_bench/random/generator'
6
+ require 'test_bench_bootstrap/test_bench/random/generator/substitute'
7
+
8
+ require 'test_bench_bootstrap/test_bench/random/random'
@@ -0,0 +1,9 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Run
4
+ module Controls
5
+ Events = Session::Events
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Run
4
+ module Controls
5
+ Message = Session::Message
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Run
4
+ module Controls
5
+ Path = Session::Path
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Run
4
+ module Controls
5
+ Random = Session::Random
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,16 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Run
4
+ module Controls
5
+ module Session
6
+ Path = TestBench::Session::Controls::Path
7
+ Events = TestBench::Session::Controls::Events
8
+ Message = TestBench::Session::Controls::Message
9
+ Status = TestBench::Session::Controls::Status
10
+ BacktraceLocation = TestBench::Session::Controls::Backtrace::Location
11
+ Random = TestBench::Session::Controls::Random
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,44 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Run
4
+ module Controls
5
+ module Status
6
+ def self.example(tests: nil, failures: nil, errors: nil, skipped: nil)
7
+ tests ||= self.tests
8
+ failures ||= self.failures
9
+ errors ||= self.errors
10
+ skipped ||= self.skipped
11
+
12
+ test_sequence = tests
13
+ failure_sequence = failures
14
+ error_sequence = errors
15
+ skip_sequence = skipped
16
+
17
+ TestBench::Session::Status.new(
18
+ test_sequence,
19
+ failure_sequence,
20
+ error_sequence,
21
+ skip_sequence
22
+ )
23
+ end
24
+
25
+ def self.tests
26
+ 1_111
27
+ end
28
+
29
+ def self.failures
30
+ 111
31
+ end
32
+
33
+ def self.errors
34
+ 0
35
+ end
36
+
37
+ def self.skipped
38
+ 11
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,108 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Run
4
+ module Controls
5
+ module Summary
6
+ module File
7
+ module Info
8
+ def self.example(path: nil, tests: nil, failures: nil, skipped: nil, aborted_events: nil)
9
+ path ||= self.path
10
+ tests ||= self.tests
11
+ failures ||= self.failures
12
+ skipped ||= self.skipped
13
+ aborted_events ||= self.aborted_events
14
+
15
+ session_status = Status.example(
16
+ tests:,
17
+ failures:,
18
+ skipped:,
19
+ errors: aborted_events.count
20
+ )
21
+
22
+ TestBench::Run::Summary::FileInfo.new(path, session_status, aborted_events)
23
+ end
24
+
25
+ def self.path
26
+ Path::File.example
27
+ end
28
+
29
+ def self.tests
30
+ 0
31
+ end
32
+
33
+ def self.failures
34
+ 11
35
+ end
36
+
37
+ def self.skipped
38
+ 12
39
+ end
40
+
41
+ def self.aborted_events
42
+ [
43
+ Session::Events::Aborted.example,
44
+ Session::Events::Aborted.other_example
45
+ ]
46
+ end
47
+
48
+ def self.other_example
49
+ Other.example
50
+ end
51
+
52
+ module Other
53
+ def self.example(tests: nil, failures: nil, skipped: nil, aborted_events: nil)
54
+ tests ||= self.tests
55
+ failures ||= self.failures
56
+ skipped ||= self.skipped
57
+ aborted_events ||= self.aborted_events
58
+
59
+ Info.example(path:, tests:, failures:, skipped:, aborted_events:)
60
+ end
61
+
62
+ def self.path
63
+ Path::File.other_example
64
+ end
65
+
66
+ def self.tests
67
+ 1
68
+ end
69
+
70
+ def self.failures
71
+ 1
72
+ end
73
+
74
+ def self.skipped
75
+ 0
76
+ end
77
+
78
+ def self.aborted_events
79
+ []
80
+ end
81
+ end
82
+
83
+ module NotFound
84
+ def self.example
85
+ TestBench::Run::Summary::FileInfo.not_found(path)
86
+ end
87
+
88
+ def self.path
89
+ "/some-not-found-file.rb"
90
+ end
91
+ end
92
+
93
+ module Set
94
+ def self.call(summary)
95
+ file_info = File::Info.example
96
+ other_file_info = File::Info.other_example
97
+
98
+ summary.add_file(file_info)
99
+ summary.add_file(other_file_info)
100
+ end
101
+ end
102
+ end
103
+ end
104
+ end
105
+ end
106
+ end
107
+ end
108
+ end
@@ -0,0 +1,38 @@
1
+ module TestBenchBootstrap
2
+ module TestBench
3
+ class Run
4
+ module Controls
5
+ module Summary
6
+ module File
7
+ module Totals
8
+ def self.example(attempted: nil, completed: nil, aborted: nil, not_found: nil)
9
+ attempted ||= self.attempted
10
+ completed ||= self.completed
11
+ aborted ||= self.aborted
12
+ not_found ||= self.not_found
13
+
14
+ TestBench::Run::Summary::FileTotals.new(attempted, completed, aborted, not_found)
15
+ end
16
+
17
+ def self.attempted
18
+ 222
19
+ end
20
+
21
+ def self.completed
22
+ 200
23
+ end
24
+
25
+ def self.aborted
26
+ 20
27
+ end
28
+
29
+ def self.not_found
30
+ 2
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end