Sha256: 585ec43c9dfb281cc3ca9ad8c2de4540609879c1e040bb285dbc81083f864c1e

Contents?: true

Size: 1.76 KB

Versions: 3

Compression:

Stored size: 1.76 KB

Contents

# typed: strict
# frozen_string_literal: true

module Minitest
  module Distributed
    class ResultAggregate < T::Struct
      extend T::Sig

      prop :runs, Integer, default: 0
      prop :assertions, Integer, default: 0
      prop :passes, Integer, default: 0
      prop :failures, Integer, default: 0
      prop :errors, Integer, default: 0
      prop :skips, Integer, default: 0
      prop :reruns, Integer, default: 0
      prop :acks, Integer, default: 0
      prop :size, Integer, default: 0

      sig { params(result: Minitest::Result).void }
      def update_with_result(result)
        case (result_type = ResultType.of(result))
        when ResultType::Passed then self.passes += 1
        when ResultType::Failed then self.failures += 1
        when ResultType::Error then self.errors += 1
        when ResultType::Skipped then self.skips += 1
        else T.absurd(result_type)
        end

        self.runs += 1
        self.assertions += result.assertions
      end

      sig { returns(String) }
      def to_s
        str = +"#{runs} runs, #{assertions} assertions, #{passes} passes, #{failures} failures, #{errors} errors"
        str << ", #{skips} skips" if skips > 0
        str << ", #{reruns} re-runs" if reruns > 0
        str
      end

      sig { returns(Integer) }
      def unique_runs
        runs - reruns
      end

      sig { returns(Integer) }
      def reported_results
        passes + failures + errors + skips
      end

      sig { returns(T::Boolean) }
      def completed?
        acks == size
      end

      sig { returns(T::Boolean) }
      def valid?
        unique_runs == reported_results
      end

      sig { returns(T::Boolean) }
      def passed?
        completed? && valid? && self.failures == 0 && self.errors == 0
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
minitest-distributed-0.1.2 lib/minitest/distributed/result_aggregate.rb
minitest-distributed-0.1.1 lib/minitest/distributed/result_aggregate.rb
minitest-distributed-0.1.0 lib/minitest/distributed/result_aggregate.rb