saboteur 0.12.1 → 0.12.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +69 -0
- data/README.md +16 -3
- data/lib/saboteur/baseline/command.rb +6 -1
- data/lib/saboteur/baseline/comparison.rb +8 -0
- data/lib/saboteur/baseline/completeness.rb +14 -4
- data/lib/saboteur/baseline/evidence.rb +8 -1
- data/lib/saboteur/baseline/run_evidence.rb +10 -1
- data/lib/saboteur/baseline/workflow.rb +17 -5
- data/lib/saboteur/cli/color_option.rb +26 -0
- data/lib/saboteur/cli/doctor_command.rb +1 -0
- data/lib/saboteur/cli/exit_status.rb +4 -3
- data/lib/saboteur/cli/explain_command.rb +2 -1
- data/lib/saboteur/cli/failure_output.rb +13 -2
- data/lib/saboteur/cli/help_command.rb +5 -0
- data/lib/saboteur/cli/history_command.rb +2 -0
- data/lib/saboteur/cli/output_options.rb +1 -5
- data/lib/saboteur/cli/run_command.rb +1 -1
- data/lib/saboteur/cli/run_reporting.rb +1 -9
- data/lib/saboteur/cli/run_validation.rb +0 -1
- data/lib/saboteur/cli/survivors_command.rb +5 -2
- data/lib/saboteur/cli/whole_suite_map_lookup.rb +33 -0
- data/lib/saboteur/cli.rb +6 -2
- data/lib/saboteur/engine/coverage_store.rb +7 -4
- data/lib/saboteur/engine/diagnostics.rb +7 -0
- data/lib/saboteur/engine/pipelines.rb +9 -2
- data/lib/saboteur/engine/survivor_confirmation.rb +75 -11
- data/lib/saboteur/engine/test_guess.rb +2 -1
- data/lib/saboteur/engine.rb +34 -16
- data/lib/saboteur/execution/runner.rb +3 -0
- data/lib/saboteur/gates.rb +1 -1
- data/lib/saboteur/integration/rspec.rb +30 -0
- data/lib/saboteur/reporter/default_findings.rb +1 -1
- data/lib/saboteur/reporter/gap_kinds.rb +6 -0
- data/lib/saboteur/reporter/next_steps.rb +3 -1
- data/lib/saboteur/reporter/score_table.rb +6 -11
- data/lib/saboteur/reporter/stryker.rb +7 -2
- data/lib/saboteur/reporter/survivor_classification.rb +15 -0
- data/lib/saboteur/reporter/survivor_list.rb +6 -6
- data/lib/saboteur/reporter/terminal.rb +4 -2
- data/lib/saboteur/reporter/unconfirmed_section.rb +44 -0
- data/lib/saboteur/result.rb +39 -2
- data/lib/saboteur/selection/coverage_map.rb +11 -1
- data/lib/saboteur/version.rb +1 -1
- data/lib/saboteur.rb +4 -0
- metadata +4 -1
|
@@ -443,9 +443,19 @@ module Saboteur
|
|
|
443
443
|
[prefix.count("\n") + 1, offset - ((prefix.rindex("\n") || -1) + 1)]
|
|
444
444
|
end
|
|
445
445
|
|
|
446
|
+
# Durations are compared to the millisecond. Two tests within a
|
|
447
|
+
# millisecond of each other swap places from one map build to the next,
|
|
448
|
+
# and with fail-fast the first failing test names a mutant's killer and
|
|
449
|
+
# kill cause, so sub-millisecond noise must not decide the order (#1274).
|
|
450
|
+
# Suite order breaks the tie instead.
|
|
446
451
|
def sort_test_ids(ids)
|
|
447
452
|
order = test_order
|
|
448
|
-
ids.sort_by { |id| [
|
|
453
|
+
ids.sort_by { |id| [duration_bucket(id), order.fetch(id, Float::INFINITY)] }
|
|
454
|
+
end
|
|
455
|
+
|
|
456
|
+
def duration_bucket(id)
|
|
457
|
+
seconds = durations[id]
|
|
458
|
+
seconds ? (seconds * 1000).ceil : Float::INFINITY
|
|
449
459
|
end
|
|
450
460
|
|
|
451
461
|
def test_order
|
data/lib/saboteur/version.rb
CHANGED
data/lib/saboteur.rb
CHANGED
|
@@ -6,6 +6,10 @@ require_relative "saboteur/version"
|
|
|
6
6
|
module Saboteur
|
|
7
7
|
class Error < StandardError; end
|
|
8
8
|
|
|
9
|
+
# A spec path from the cached coverage map that is not a spec file inside
|
|
10
|
+
# the project: the map is untrusted input (#427, #1286).
|
|
11
|
+
class RefusedSpecPath < Error; end
|
|
12
|
+
|
|
9
13
|
# A phase timeout that --max-duration shortened: budget exhaustion, not a
|
|
10
14
|
# broken suite. The engine turns it into the budget partial-report path
|
|
11
15
|
# instead of a phase error (#296).
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: saboteur
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.12.
|
|
4
|
+
version: 0.12.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Vamsi Pavan Mahesh Gunturu
|
|
@@ -63,6 +63,7 @@ files:
|
|
|
63
63
|
- lib/saboteur/cli.rb
|
|
64
64
|
- lib/saboteur/cli/agent_provenance.rb
|
|
65
65
|
- lib/saboteur/cli/baseline_gate.rb
|
|
66
|
+
- lib/saboteur/cli/color_option.rb
|
|
66
67
|
- lib/saboteur/cli/dirty_tree_notice.rb
|
|
67
68
|
- lib/saboteur/cli/doctor_command.rb
|
|
68
69
|
- lib/saboteur/cli/error_cause.rb
|
|
@@ -89,6 +90,7 @@ files:
|
|
|
89
90
|
- lib/saboteur/cli/shard_options.rb
|
|
90
91
|
- lib/saboteur/cli/source_set.rb
|
|
91
92
|
- lib/saboteur/cli/survivors_command.rb
|
|
93
|
+
- lib/saboteur/cli/whole_suite_map_lookup.rb
|
|
92
94
|
- lib/saboteur/config.rb
|
|
93
95
|
- lib/saboteur/config_file.rb
|
|
94
96
|
- lib/saboteur/constant_reads.rb
|
|
@@ -253,6 +255,7 @@ files:
|
|
|
253
255
|
- lib/saboteur/reporter/survivor_ranking.rb
|
|
254
256
|
- lib/saboteur/reporter/terminal.rb
|
|
255
257
|
- lib/saboteur/reporter/test_matrix.rb
|
|
258
|
+
- lib/saboteur/reporter/unconfirmed_section.rb
|
|
256
259
|
- lib/saboteur/reporter/wording.rb
|
|
257
260
|
- lib/saboteur/result.rb
|
|
258
261
|
- lib/saboteur/score.rb
|