lib/mutant/env.rb in mutant-0.8.22 vs lib/mutant/env.rb in mutant-0.8.23
- old
+ new
@@ -22,41 +22,41 @@
#
# @param [Mutation] mutation
#
# @return [Result::Mutation]
def kill(mutation)
- test_result = run_mutation_tests(mutation)
+ start = Timer.now
+
Result::Mutation.new(
- mutation: mutation,
- test_result: test_result
+ isolation_result: run_mutation_tests(mutation),
+ mutation: mutation,
+ runtime: Timer.now - start
)
end
+ # The test selections
+ #
+ # @return Hash{Mutation => Enumerable<Test>}
+ def selections
+ subjects.map do |subject|
+ [subject, selector.call(subject)]
+ end.to_h
+ end
+ memoize :selections
+
private
# Kill mutation under isolation with integration
#
# @param [Isolation] isolation
# @param [Integration] integration
#
- # @return [Result::Test]
- #
- # rubocop:disable MethodLength
+ # @return [Result::Isolation]
def run_mutation_tests(mutation)
- start = Timer.now
- tests = selector.call(mutation.subject)
-
config.isolation.call do
mutation.insert(config.kernel)
- integration.call(tests)
+ integration.call(selections.fetch(mutation.subject))
end
- rescue Isolation::Error => error
- Result::Test.new(
- output: error.message,
- passed: false,
- runtime: Timer.now - start,
- tests: tests
- )
end
end # Env
end # Mutant