class Kamaze::Project::Tools::Rspec

Provide wrapper based on top of “RSpec::Core::Runner“

Sample of use:

“`ruby tools.fetch(:rspec).tap do |rspec|

rspec.tags = args[:tags].to_s.split(',').map(&:strip)

end.run “`

@see www.relishapp.com/rspec/rspec-core/docs/command-line/rake-task @see github.com/rspec/rspec-core/blob/master/lib/rspec/core/runner.rb @see relishapp.com/rspec/rspec-core/v/2-4/docs/command-line/tag-option

Attributes

defaults[RW]

Default arguments used by “RSpec::Core::Runner“

@type [Array|Arguments] @return [Arguments]

stderr[RW]
stdout[RW]
tags[RW]

@return [Array<String>]

Public Instance Methods

arguments() click to toggle source

Arguments used by “CLI“ (during execution/“run“)

@return [Arguments]

# File lib/kamaze/project/tools/rspec.rb, line 61
def arguments
  @arguments = @defaults if @arguments.to_a.size.zero?

  tags.to_a.each do |tag|
    next if @arguments.slice_before('--tag').to_a.include?(['--tag', tag])

    @arguments += ['--tag', tag]
  end

  # @formatter:off
  {
    true => @arguments,
    false => @arguments.clone.concat(options_arguments).map(&:to_s).freeze
  }.fetch(caller_locations(1..1).first&.path == __FILE__)
  # @formatter:on
end
mutable_attributes() click to toggle source
# File lib/kamaze/project/tools/rspec.rb, line 41
def mutable_attributes
  [:defaults, :stdout, :stderr]
end
run() click to toggle source

@raise [SystemExit] @return [self]

# File lib/kamaze/project/tools/rspec.rb, line 47
def run
  with_exit_on_failure do
    options = arguments.concat(options_arguments).map(&:to_s)

    self.retcode = core.run(options, stderr, stdout).to_i
    reset
  end

  self
end

Protected Instance Methods

core() click to toggle source

@return [RSpec::Core::Runner]

# File lib/kamaze/project/tools/rspec.rb, line 100
def core
  require 'rspec/core'

  RSpec::Core::Runner
end
options_arguments() click to toggle source

@return [Array<String>]

# File lib/kamaze/project/tools/rspec.rb, line 107
def options_arguments
  options_files = Pathname.new(Dir.pwd).join('.rspec')
  defaults = []

  if options_files.file? and options_files.readable?
    defaults += ['-O', '.rspec']
  end

  defaults
end
reset() click to toggle source

Reset arguments + retcode

@return [self]

# File lib/kamaze/project/tools/rspec.rb, line 83
def reset
  @arguments = nil
  self.retcode = nil if retcode.to_i.zero?

  self
end
setup() click to toggle source
# File lib/kamaze/project/tools/rspec.rb, line 90
def setup
  reset

  @tags = []
  @stdout ||= $stdout
  @stderr ||= $stderr
  @defaults ||= []
end