pbt 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/pbt/runner.rb DELETED
@@ -1,41 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Pbt
4
- class Runner
5
- CASE_COUNT = 100
6
- Case = Struct.new(:val, :ractor, :exception)
7
- private_constant :CASE_COUNT, :Case
8
-
9
- def initialize(generator, &block)
10
- @generator = generator
11
- @block = block
12
- end
13
-
14
- def run
15
- cases = []
16
- CASE_COUNT.times do
17
- val = @generator.call
18
- ractor = Ractor.new(val, &@block)
19
- cases << Case.new(val:, ractor:, exception: nil)
20
- end
21
-
22
- failures = []
23
- cases.each do |c|
24
- c.ractor.take
25
- rescue => e
26
- failures << c.with(exception: e.cause)
27
- end
28
-
29
- message = []
30
- failures.group_by { _1.exception.class }.each do |exception_class, failures|
31
- message << <<~EOS
32
- #{exception_class}:
33
- Failed on:
34
- #{failures.map(&:val).join("\n ")}
35
- EOS
36
- end
37
-
38
- raise CaseFailure, message.join("\n") if failures.size > 0
39
- end
40
- end
41
- end