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