Class: ActionFilter

Inherits:
Object show all
Defined in:
lib/extensions/mspec/mspec/runner/actions/filter.rb

Overview

ActionFilter is a base class for actions that are triggered by specs that match the filter. The filter may be specified by strings that match spec descriptions or by tags for strings that match spec descriptions.

Unlike TagFilter and RegexpFilter, ActionFilter instances do not affect the specs that are run. The filter is only used to trigger the action.

Direct Known Subclasses

DebugAction, GdbAction, TagAction

Instance Method Summary collapse

Constructor Details

#initialize(tags = nil, descs = nil) ⇒ ActionFilter

Returns a new instance of ActionFilter.



13
14
15
16
17
# File 'lib/extensions/mspec/mspec/runner/actions/filter.rb', line 13

def initialize(tags=nil, descs=nil)
  @tags = Array(tags)
  descs = Array(descs)
  @sfilter = MatchFilter.new(nil, *descs) unless descs.empty?
end

Instance Method Details

#===(string) ⇒ Object



19
20
21
# File 'lib/extensions/mspec/mspec/runner/actions/filter.rb', line 19

def ===(string)
  @sfilter === string or @tfilter === string
end

#loadObject



23
24
25
26
27
28
29
30
31
# File 'lib/extensions/mspec/mspec/runner/actions/filter.rb', line 23

def load
  @tfilter = nil
  return if @tags.empty?

  desc = MSpec.read_tags(@tags).map { |t| t.description }
  return if desc.empty?

  @tfilter = MatchFilter.new(nil, *desc)
end

#registerObject



33
34
35
# File 'lib/extensions/mspec/mspec/runner/actions/filter.rb', line 33

def register
  MSpec.register :load, self
end

#unregisterObject



37
38
39
# File 'lib/extensions/mspec/mspec/runner/actions/filter.rb', line 37

def unregister
  MSpec.unregister :load, self
end