Sha256: 019e5b76dae2e2bf8aafd6d0d2e5beca04869f0b7024bd9b828c7e890bfa338c

Contents?: true

Size: 984 Bytes

Versions: 3

Compression:

Stored size: 984 Bytes

Contents

# typed: strict
# frozen_string_literal: true

module Minitest
  module Distributed
    module Filters
      class IncludeFilter
        extend T::Sig
        include FilterInterface

        sig { returns(T.any(String, Regexp)) }
        attr_reader :filter

        sig { params(filter: T.any(String, Regexp)).void }
        def initialize(filter)
          @filter = filter
          if filter.is_a?(String) && (match_info = filter.match(%r%/(.*)/%))
            @filter = Regexp.new(T.must(match_info[1]))
          end
        end

        sig { override.params(enqueued_runnable: EnqueuedRunnable).returns(T::Array[EnqueuedRunnable]) }
        def call(enqueued_runnable)
          # rubocop:disable Style/CaseEquality
          if filter === enqueued_runnable.method_name || filter === enqueued_runnable.identifier
            [enqueued_runnable]
          else
            []
          end
          # rubocop:enable Style/CaseEquality
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

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