Files
rea/stryker.semantics.config.mjs
T
N0zoM1z0andKaoru0822 1b46398795 perf(ci): preflight mutation configurations during fast feedback
Keep full qualification and standalone mutation execution intact, retain distinct reports, and preserve fail-closed quality gates.

Related: #3281

Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>
2026-10-14 19:48:30 +08:00

54 lines
1.5 KiB
JavaScript

import { mutationRanges } from "./scripts/lib/reverse-tools-mutation-targets.mjs";
const config = {
$schema: "./node_modules/@stryker-mutator/core/schema/stryker-schema.json",
testRunner: "command",
commandRunner: {
command: "npx vitest run --config vitest.reverse-tools-semantics.config.ts",
},
plugins: ["@stryker-mutator/typescript-checker"],
checkers: ["typescript"],
tsconfigFile: "tsconfig.reverse-tools-mutation.json",
typescriptChecker: {
prioritizePerformanceOverAccuracy: true,
},
coverageAnalysis: "off",
thresholds: { break: null },
ignorePatterns: ["/.cache/rea-command-locks/**", "/coverage/**"],
concurrency: 2,
timeoutMS: 30000,
reporters: ["clear-text", "progress", "html", "json"],
jsonReporter: { fileName: "reports/mutation/reverse-tools-semantics.json" },
htmlReporter: { fileName: "reports/mutation/reverse-tools-semantics.html" },
};
export default {
...config,
mutate: [
...mutationRanges("src/cutter/CutterBridgeClient.ts", [
{
kind: "expression",
text: "status.data.current_file === undefined",
},
{
kind: "expression",
text: "response.current_file === undefined",
},
]),
...mutationRanges("src/rizin/RizinDebugSessionManager.ts", [
{
kind: "declaration",
name: "isRizinCommandDeadlineExpired",
},
{
kind: "declaration",
name: "createRizinCommandTimeoutError",
},
{
kind: "declaration",
name: "createRizinCommandTimeoutEvidence",
},
]),
],
};