Class: TagAction
- Inherits:
-
ActionFilter
- Object
- ActionFilter
- TagAction
- Defined in:
- lib/extensions/mspec/mspec/runner/actions/tag.rb
Overview
TagAction - Write tagged spec description string to a tag file associated with each spec file.
The action is triggered by specs whose descriptions match the filter created with ‘tags’ and/or ‘desc’
The action fires in the :after event, after the spec had been run. The action fires if the outcome of running the spec matches ‘outcome’.
The arguments are:
action: :add, :del
outcome: :pass, :fail, :all
tag: the tag to create/delete
comment: the comment to create
tags: zero or more tags to get matching
spec description strings from
desc: zero or more strings to match the
spec description strings
Instance Method Summary collapse
-
#===(string) ⇒ Object
Returns true if there are no tag or description filters.
-
#after(state) ⇒ Object
Callback for the MSpec :after event.
-
#before(state) ⇒ Object
Callback for the MSpec :before event.
-
#exception(exception) ⇒ Object
Callback for the MSpec :exception event.
-
#exception? ⇒ Boolean
Returns true if an exception was raised while evaluating the current example.
-
#finish ⇒ Object
Callback for the MSpec :finish event.
-
#initialize(action, outcome, tag, comment, tags = nil, descs = nil) ⇒ TagAction
constructor
A new instance of TagAction.
-
#outcome? ⇒ Boolean
Returns true if the result of evaluating the example matches the outcome registered for this tag action.
- #register ⇒ Object
- #unregister ⇒ Object
Methods inherited from ActionFilter
Constructor Details
#initialize(action, outcome, tag, comment, tags = nil, descs = nil) ⇒ TagAction
Returns a new instance of TagAction.
25 26 27 28 29 30 31 32 33 |
# File 'lib/extensions/mspec/mspec/runner/actions/tag.rb', line 25 def initialize(action, outcome, tag, comment, =nil, descs=nil) super , descs @action = action @outcome = outcome @tag = tag @comment = comment @report = [] @exception = false end |
Instance Method Details
#===(string) ⇒ Object
Returns true if there are no tag or description filters. This means that a TagAction matches any example by default. Otherwise, returns true if either the tag or the description filter matches string
.
39 40 41 42 |
# File 'lib/extensions/mspec/mspec/runner/actions/tag.rb', line 39 def ===(string) return true unless @sfilter or @tfilter @sfilter === string or @tfilter === string end |
#after(state) ⇒ Object
Callback for the MSpec :after event. Performs the tag action depending on the type of action and the outcome of evaluating the example. See TagAction
for a description of the actions.
59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/extensions/mspec/mspec/runner/actions/tag.rb', line 59 def after(state) if self === state.description and outcome? tag = SpecTag.new tag.tag = @tag tag.comment = @comment tag.description = state.description case @action when :add changed = MSpec.write_tag tag when :del changed = MSpec.delete_tag tag end @report << state.description if changed end end |
#before(state) ⇒ Object
Callback for the MSpec :before event. Resets the #exception?
flag to false.
46 47 48 |
# File 'lib/extensions/mspec/mspec/runner/actions/tag.rb', line 46 def before(state) @exception = false end |
#exception(exception) ⇒ Object
Callback for the MSpec :exception event. Sets the #exception?
flag to true.
52 53 54 |
# File 'lib/extensions/mspec/mspec/runner/actions/tag.rb', line 52 def exception(exception) @exception = true end |
#exception? ⇒ Boolean
Returns true if an exception was raised while evaluating the current example.
88 89 90 |
# File 'lib/extensions/mspec/mspec/runner/actions/tag.rb', line 88 def exception? @exception end |
#finish ⇒ Object
Callback for the MSpec :finish event. Prints the actions performed while evaluating the examples.
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/extensions/mspec/mspec/runner/actions/tag.rb', line 99 def finish case @action when :add if @report.empty? print "\nTagAction: no specs were tagged with '#{@tag}'\n" else print "\nTagAction: specs tagged with '#{@tag}':\n\n" print report end when :del if @report.empty? print "\nTagAction: no tags '#{@tag}' were deleted\n" else print "\nTagAction: tag '#{@tag}' deleted for specs:\n\n" print report end end end |
#outcome? ⇒ Boolean
Returns true if the result of evaluating the example matches the outcome registered for this tag action. See TagAction
for a description of the outcome types.
80 81 82 83 84 |
# File 'lib/extensions/mspec/mspec/runner/actions/tag.rb', line 80 def outcome? @outcome == :all or (@outcome == :pass and not exception?) or (@outcome == :fail and exception?) end |
#register ⇒ Object
118 119 120 121 122 123 124 |
# File 'lib/extensions/mspec/mspec/runner/actions/tag.rb', line 118 def register super MSpec.register :before, self MSpec.register :exception, self MSpec.register :after, self MSpec.register :finish, self end |
#unregister ⇒ Object
126 127 128 129 130 131 132 |
# File 'lib/extensions/mspec/mspec/runner/actions/tag.rb', line 126 def unregister super MSpec.unregister :before, self MSpec.unregister :exception, self MSpec.unregister :after, self MSpec.unregister :finish, self end |