free_mutant/lib/mutant/killer/rspec.rb

57 lines
1.1 KiB
Ruby
Raw Normal View History

# encoding: utf-8
module Mutant
class Killer
# Runner for rspec tests
class Rspec < self
2013-01-15 23:46:05 +01:00
private
# Run rspec test
#
# @return [true]
2013-04-17 20:31:21 -07:00
# when test is NOT successful
#
# @return [false]
# otherwise
#
# @api private
#
def run
mutation.insert
# TODO: replace with real streams from configuration
require 'stringio'
2013-07-28 19:28:08 +02:00
# Note: We assume interesting output from a failed rspec run is stderr.
rspec_err = StringIO.new
2013-07-28 19:28:08 +02:00
exit_code = ::RSpec::Core::Runner.run(cli_arguments, nil, rspec_err)
killed = !exit_code.zero?
if killed and mutation.should_survive?
rspec_err.rewind
puts "#{mutation.class} test failed."
puts 'RSpec stderr:'
puts rspec_err.read
end
killed
end
# Return command line arguments
#
# @return [Array]
#
# @api private
#
2013-07-28 19:28:08 +02:00
def cli_arguments
%W(
--fail-fast
2013-01-13 23:47:00 +01:00
) + strategy.spec_files(mutation.subject)
end
2013-02-01 23:39:00 +01:00
2013-06-14 20:54:02 +02:00
end # Rspec
end # Killer
end # Mutant