Sha256: 3f85b1dffebdf5d326989f1d23e5b780cd946f52e3af2fc2107b7117dfbf032b
Contents?: true
Size: 941 Bytes
Versions: 1
Compression:
Stored size: 941 Bytes
Contents
# frozen_string_literal: true module Pbt class Runner CASE_COUNT = 100 Case = Struct.new(:val, :ractor, :exception) private_constant :CASE_COUNT, :Case def initialize(generator, &block) @generator = generator @block = block end 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 message = [] failures.group_by { _1.exception.class }.each do |exception_class, failures| message << <<~EOS #{exception_class}: Failed on: #{failures.map(&:val).join("\n ")} EOS end raise CaseFailure, message.join("\n") if failures.size > 0 end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
pbt-0.0.1 | lib/pbt/runner.rb |