Class: Pbt::Runner
- Inherits:
-
Object
- Object
- Pbt::Runner
- Defined in:
- lib/pbt/runner.rb
Instance Method Summary collapse
-
#initialize(generator, &block) ⇒ Runner
constructor
A new instance of Runner.
- #run ⇒ Object
Constructor Details
#initialize(generator, &block) ⇒ Runner
Returns a new instance of Runner.
9 10 11 12 |
# File 'lib/pbt/runner.rb', line 9 def initialize(generator, &block) @generator = generator @block = block end |
Instance Method Details
#run ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/pbt/runner.rb', line 14 def run cases = [] CASE_COUNT.times do val = @generator.call ractor = Ractor.new(val, &@block) cases << Case.new(val:, ractor:, exception: nil) end failures = [] cases.each do |c| c.ractor.take rescue => e failures << c.with(exception: e.cause) end = [] failures.group_by { _1.exception.class }.each do |exception_class, failures| << <<~EOS #{exception_class}: Failed on: #{failures.map(&:val).join("\n ")} EOS end raise CaseFailure, .join("\n") if failures.size > 0 end |