Module: Evilution::Integration::TestUnit::ResultBuilder
- Defined in:
- lib/evilution/integration/test_unit/result_builder.rb
Overview
Shapes the result Hash that flows back to Evilution::Result::MutationResult / classify_status. Three orthogonal flavours — pass/fail/crash, no tests executed, and unresolved spec — each have their own change axis (e.g. the no-tests-ran error string evolved separately as the test-unit framework diagnostic improved). Putting them behind a single object documents the contract and lets the integration class drop them.
Class Method Summary collapse
- .call(passed:, command:, detector:) ⇒ Object
- .crash(command, detector) ⇒ Object
- .no_tests_ran(command) ⇒ Object
- .unresolved(mutation_file_path) ⇒ Object
Class Method Details
.call(passed:, command:, detector:) ⇒ Object
14 15 16 17 18 19 20 21 22 |
# File 'lib/evilution/integration/test_unit/result_builder.rb', line 14 def call(passed:, command:, detector:) if passed { passed: true, test_command: command } elsif detector.only_crashes? crash(command, detector) else { passed: false, test_command: command } end end |
.crash(command, detector) ⇒ Object
43 44 45 46 47 48 49 50 51 52 |
# File 'lib/evilution/integration/test_unit/result_builder.rb', line 43 def crash(command, detector) classes = detector.unique_crash_classes { passed: false, test_crashed: true, error: "test crashes: #{detector.crash_summary}", error_class: (classes.first if classes.length == 1), test_command: command } end |
.no_tests_ran(command) ⇒ Object
24 25 26 27 28 29 30 31 32 |
# File 'lib/evilution/integration/test_unit/result_builder.rb', line 24 def no_tests_ran(command) { passed: false, error: "no Test::Unit tests executed (0 test methods ran) — the resolved " \ "spec registered no Test::Unit suite. Check --integration/--spec.", error_class: "Evilution::Error", test_command: command } end |
.unresolved(mutation_file_path) ⇒ Object
34 35 36 37 38 39 40 41 |
# File 'lib/evilution/integration/test_unit/result_builder.rb', line 34 def unresolved(mutation_file_path) { passed: false, unresolved: true, error: "no matching test resolved for #{mutation_file_path}", test_command: "ruby -Itest (skipped: no test resolved for #{mutation_file_path})" } end |