Add better noop/neutral reporting

This commit is contained in:
Markus Schirp 2014-07-07 15:03:31 +00:00
parent d5f5564dc0
commit 7813f92412
7 changed files with 84 additions and 15 deletions

View file

@ -1,3 +1,3 @@
---
threshold: 18
total_score: 1053
total_score: 1040

View file

@ -195,6 +195,7 @@ require 'mutant/reporter/cli/report'
require 'mutant/reporter/cli/report/env'
require 'mutant/reporter/cli/report/subject'
require 'mutant/reporter/cli/report/mutation'
require 'mutant/reporter/cli/report/test'
require 'mutant/reporter/cli/progress'
require 'mutant/reporter/cli/progress/env'
require 'mutant/reporter/cli/progress/config'

View file

@ -25,7 +25,7 @@ module Mutant
# @api private
#
def define_delegator(name)
fail if instance_methods.include?(name)
fail "method #{name} already defined" if instance_methods.include?(name)
define_method(name) do
object.public_send(name)
end

View file

@ -8,7 +8,7 @@ module Mutant
handle Mutant::Result::Mutation
delegate :mutation
delegate :mutation, :failed_test_results
DIFF_ERROR_MESSAGE = 'BUG: Mutation NOT resulted in exactly one diff. Please report a reproduction!'.freeze
@ -26,13 +26,15 @@ module Mutant
"%s\n" \
"Unparsed Source:\n" \
"%s\n" \
"-----------------------\n".freeze
"Test Reports: %d\n"
NOOP_MESSAGE =
"--- Noop failure ---\n" \
"---- Noop failure -----\n" \
"No code was inserted. And the test did NOT PASS.\n" \
"This is typically a problem of your specs not passing unmutated.\n" \
"--------------------\n".freeze
"Test Reports: %d\n"
FOOTER = '-----------------------'.freeze
# Run report printer
#
@ -42,7 +44,8 @@ module Mutant
#
def run
puts(mutation.identification)
puts(details)
print_details
puts(FOOTER)
self
end
@ -50,11 +53,11 @@ module Mutant
# Return details
#
# @return [String]
# @return [undefined]
#
# @api private
#
def details
def print_details
send(MAP.fetch(mutation.class))
end
@ -68,7 +71,7 @@ module Mutant
original, current = mutation.original_source, mutation.source
diff = Mutant::Diff.build(original, current)
diff = color? ? diff.colorized_diff : diff.diff
diff || DIFF_ERROR_MESSAGE
info(diff || DIFF_ERROR_MESSAGE)
end
# Noop details
@ -78,7 +81,8 @@ module Mutant
# @api private
#
def noop_details
NOOP_MESSAGE
info(NOOP_MESSAGE, failed_test_results.length)
visit_collection(failed_test_results)
end
# Neutral details
@ -88,7 +92,8 @@ module Mutant
# @api private
#
def neutral_details
format(NEUTRAL_MESSAGE, mutation.subject.node.inspect, mutation.source)
info(NEUTRAL_MESSAGE, mutation.subject.node.inspect, mutation.source, failed_test_results.length)
visit_collection(failed_test_results)
end
end # Mutation

View file

@ -0,0 +1,28 @@
module Mutant
class Reporter
class CLI
class Report
# Test result reporter
class Test < self
handle(Mutant::Result::Test)
delegate :test, :runtime
# Run test result reporter
#
# @return [self]
#
# @api private
#
def run
status('- %s / runtime: %s', test.identification, object.runtime)
puts('Test Output:')
puts(object.output)
end
end
end # Report
end # CLI
end # Reporter
end # Mutant

View file

@ -284,6 +284,16 @@ module Mutant
test_results.any?(&:success?)
end
# Return failed test results
#
# @return [Array]
#
# @api private
#
def failed_test_results
test_results.select(&:fail?)
end
sum :killtime, :test_results
end # Mutation

View file

@ -70,6 +70,19 @@ describe Mutant::Reporter::CLI do
)
end
let(:test_results) do
[
double(
'Test Result',
class: Mutant::Result::Test,
test: _subject.tests.first,
runtime: 1.0,
output: 'test-output',
success?: mutation_result_success
)
]
end
let(:subject_results) do
[
Mutant::Result::Subject.new(
@ -81,7 +94,9 @@ describe Mutant::Reporter::CLI do
class: Mutant::Result::Mutation,
mutation: mutation,
killtime: 0.5,
success?: mutation_result_success
success?: mutation_result_success,
test_results: test_results,
failed_test_results: mutation_result_success ? [] : test_results
)
]
)
@ -192,6 +207,7 @@ describe Mutant::Reporter::CLI do
@@ -1,2 +1,2 @@
-true
+false
-----------------------
Subjects: 1
Mutations: 1
Kills: 0
@ -215,6 +231,7 @@ describe Mutant::Reporter::CLI do
- test_id
mutation_id
BUG: Mutation NOT resulted in exactly one diff. Please report a reproduction!
-----------------------
Subjects: 1
Mutations: 1
Kills: 0
@ -246,6 +263,10 @@ describe Mutant::Reporter::CLI do
(true)
Unparsed Source:
true
Test Reports: 1
- test_id / runtime: 1.0
Test Output:
test-output
-----------------------
Subjects: 1
Mutations: 1
@ -269,10 +290,14 @@ describe Mutant::Reporter::CLI do
subject_id
- test_id
mutation_id
--- Noop failure ---
---- Noop failure -----
No code was inserted. And the test did NOT PASS.
This is typically a problem of your specs not passing unmutated.
--------------------
Test Reports: 1
- test_id / runtime: 1.0
Test Output:
test-output
-----------------------
Subjects: 1
Mutations: 1
Kills: 0