Repository navigation
Kill the surviving mutants in graph-projection #65
Description
Large parts of the fragment, chain-folding and inverse (state machine, flowchart) logic are uncovered or survive, including the inverses' rejection branches. These are the most-affected files in @exadev/process-graph-projection on main's mutation run (https://github.com/ExaDev/process-graph/actions/runs/38170535483), with a few of the lines a surviving or uncovered mutant changes; the shard log and the uploaded HTML report have the full list.
packages/core/graph/projection/src/fragments.ts (75 survived, 84 without coverage):
packages/core/graph/projection/src/fragments.ts:123:21MethodExpression mutant, survived, onconst branching = model.elements.filter(packages/core/graph/projection/src/fragments.ts:125:7ConditionalExpression mutant, survived, ononPath.has(element.id) &&packages/core/graph/projection/src/fragments.ts:126:8ConditionalExpression mutant, survived, on(element.kind === "decision" ||packages/core/graph/projection/src/fragments.ts:127:39ConditionalExpression mutant, survived, on(element.kind === "pseudo" && element.role === "fork")),
packages/core/graph/projection/src/chains.ts (103 survived, 37 without coverage):
packages/core/graph/projection/src/chains.ts:132:9ConditionalExpression mutant, survived, onif (set.size >= enough) {packages/core/graph/projection/src/chains.ts:152:7MethodExpression mutant, survived, on(outgoing.get(id) ?? [])packages/core/graph/projection/src/chains.ts:154:17ArrowFunction mutant, survived, on.filter((target) => foldable.has(target)),packages/core/graph/projection/src/chains.ts:173:31ConditionalExpression mutant, survived, onif (from !== undefined && to === undefined && accepted(transition.target)) {
packages/core/graph/projection/src/inverse-state-machine.ts (41 survived, 36 without coverage):
packages/core/graph/projection/src/inverse-state-machine.ts:51:40BlockStatement mutant, survived, onfor (const state of original.states) {packages/core/graph/projection/src/inverse-state-machine.ts:52:9ConditionalExpression mutant, survived, onif (!kept.has(state.id)) {packages/core/graph/projection/src/inverse-state-machine.ts:63:11ConditionalExpression mutant, survived, onif (elements.has(state.id)) {packages/core/graph/projection/src/inverse-state-machine.ts:77:11ConditionalExpression mutant, survived, onif (state.role !== "state") {
Kill them by asserting the behaviour, not by loosening or removing any existing assertion. Raise the package's breakThreshold from the new baseline once they are killed. Found while setting the break thresholds in #60.
Activity