lib/guard/rspec.rb
require "guard/compat/plugin"
require "guard/rspec/options"
require "guard/rspec/deprecator"
require "guard/rspec/runner"
# NOTE: To avoid 'superclass mismatch for class RSpec' errors,
# every file has to have
#
# class RSpec < Plugin
#
# and not just
#
# class RSpec
module Guard
class RSpec < Plugin
attr_accessor :options, :runner
def initialize(options = {})
super
@options = Options.with_defaults(options)
Deprecator.warns_about_deprecated_options(@options)
@runner = Runner.new(@options)
end
def start
Compat::UI.info "Guard::RSpec is running"
run_all if options[:all_on_start]
end
def run_all
_throw_if_failed { runner.run_all }
end
def reload
runner.reload
end
def run_on_modifications(paths)
return false if paths.empty?
_throw_if_failed { runner.run(paths) }
end
private
def _throw_if_failed
throw :task_has_failed unless yield
end
end
end