-
Notifications
You must be signed in to change notification settings - Fork 250
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implementation of mutation levels #4686
base: master
Are you sure you want to change the base?
Conversation
Update dependencies from upstream
* Added project to test on * Add level to the config and read it from code * Move the debugging to the test project * Add mutation levels CLI argument, fix lint * Move testing-project back outside packages folder * Check if pipeline is fixed * Remove last change, there is something wrong with the pipeline environment * Modify mutation levels config file to reflect the submutators * Update meta config such that types are generated instead of strings * Add back comment inside instrumenter launch file * Trigger e2e and incremental_mutation_test workflows only on `master` push --------- Co-authored-by: luctia <[email protected]>
* Changed configuration file for testing purposes * small updates in the lock file of package.json * Adaptation of the NodeMutator * Added check to only run desired suboperators * changed file to only run desired operators and pass its suboperators * Modified ArrayDeclaration tests according to modifications * Linting * Make modfications to the tests. * Linting * changed the acceptation of undefined as well * Linting * process feedback PR * Unstable * Added new suboperators for ArrayDeclaration * Adapted the suboperators implementation accordingly * Solved issues with undefined * changed tests * just a different config file * changed codebase for testing purposes * cleaned up file * cleanup * processed feedback * last feedback processed
* ArithmeticOp: pass the whole level * Add min size to level arrays and mandatory name * Move arithmetic ops to map * Add test for arithmetic operator * Restrict EqualityOperator Observed mutation score (equality-operator-mutator.ts): 85.71% * Formatting fixes * Formatting fixes and removed dead code * Update arithmetic-operator-mutator.ts and equality-operator-mutator.ts to comply with the changes to node-mutator.ts. Coded it such that `undefined` results in allowing everything since otherwise setting no MutationLevel results in blocking every mutator. --------- Co-authored-by: Danut Copae <[email protected]> Co-authored-by: Ivo_Broekhof <[email protected]>
* WIP Mutation level support for BooleanLiterals * Fix prettier * Tests * Pleased linter * Fixed typo * Added tests for edge cases
* WIP support for assignmentoperator * Added assignmentoperator in definitions * Added tests for edge cases * Added comments about what's being mutated * Resolved merge conflict?
Co-authored-by: Ivo Broekhof <[email protected]>
Co-authored-by: Ivo Broekhof <[email protected]>
* solution to read a json file which contains levels * implementation of reading json object * read config * Refactor default levels location * make method private again --------- Co-authored-by: Javier <[email protected]>
* Restricted logical-operator-mutator.ts * Pleased linter now --------- Co-authored-by: Ivo_Broekhof <[email protected]>
* Added an extra suboperator * changed implementation of suboperator * tests for conditional operator for mutationLevel * combined config file * moved order of yielding * modified tests properly --------- Co-authored-by: Danut Copae <[email protected]>
* integrated MutationLevel into method-expression-mutator.ts Converted Map to const object * Fix formatting to please Prettier Used prettier-ignore on operators * modified operator to pass test and still function --------- Co-authored-by: Ivo_Broekhof <[email protected]> Co-authored-by: Javier <[email protected]> Co-authored-by: Danut Copae <[email protected]>
* integrated MutationLevel into unary-operator-mutator.ts Changed enum to const object * Fix formatting to please Prettier --------- Co-authored-by: Ivo_Broekhof <[email protected]> Co-authored-by: Danut Copae <[email protected]>
* updated to conform to mutationlevels * modified tests * modified config file * initial implementation of condition * Revert "initial implementation of condition" This reverts commit bcb6cc0. * changed tests to pass CI/CD * changes nessecary for pass * small refactor * remove line added by mistake --------- Co-authored-by: Danut Copae <[email protected]> Co-authored-by: Danut Copae <[email protected]>
* Added support for arrowfunction * update schema * Fix up arrow function sting --------- Co-authored-by: Danut Copae <[email protected]> Co-authored-by: Danut Copae <[email protected]>
* object literal implementation of mutation levels * change construct of ObjectLiteral * Last Modifications to adhere to new implementation
* save progress * details
* Rename mutators in the schema * Change negation to substraction in arhitmeticop * Rename mutators, stable * Enforce type with a generic NodeMutatorConfiguration * Get rid of NodeMutatorMultiConfiguration * Move operators inside nodemutator interface * Update conditionalLevel test name * Finish aritmetic through conditional operators, stable * Fix arithmetic through object-literal operators, stable * Fix up optional-chaining * Finish renaming mutators * Reorder stryker-core to reduce generated warnings * Use the same key for the mutator operators when there is no reason to be more specific
* Made the arithmetic operator more consistent * Made the array declaration more consistent * Made the arrow function more consistent * Made the assignment operator more consistent * Made the block statement more consistent * Made the boolean literal more consistent * Made the conditional expression more consistent * Made the equality operator more consistent * Made the logical operator more consistent * Made the method expression more consistent * Made the object literal more consistent * Made the optional chaining more consistent * Made the regex more consistent * Made the string literal more consistent * Made the unary operator more consistent * Made the update operator more consistent * small modification in consistency * Fix consistency in all unit test files --------- Co-authored-by: Danut Copae <[email protected]>
* Build level for includedMutations * Add 'excludedMutations' functionality * Fix up tests after the excludedMutations changes * Remove redundant emptyMutationLevel object
… clear-text-reporter('s table) (#81) * Add 'excludedMutations' functionality * Fix up tests after the excludedMutations changes * WIP * Added isMutable to NodeMutator * Added numberOfMutants to NodeMutator * Added column to text score table for adjusted mutation score * Fix linting issues * Fixed tests for babel-transformer * Fixed instrumenter tests * Improved test coverage * Adjusted tests for clear-text-reporter * Removed additional useless writeLine * Remove redundant emptyMutationLevel * Refactor mutators to increase branch coverage * Fix lint * Fix method expression test --------- Co-authored-by: Danut Copae <[email protected]>
* chore(deps): update dependency tap to v18.5.8 (stryker-mutator#4585) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @sveltejs/kit to v1.27.6 (stryker-mutator#4586) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency ts-loader to v9.5.1 (stryker-mutator#4588) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency axios to v1.6.2 (stryker-mutator#4587) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency tap to v18.6.1 (stryker-mutator#4591) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency svelte to v4.2.4 (stryker-mutator#4594) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/node to v20.9.1 (stryker-mutator#4593) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency svelte to v4.2.5 (stryker-mutator#4596) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency eslint to v8.54.0 (stryker-mutator#4597) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/node to v20.9.2 (stryker-mutator#4599) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency svelte to v4.2.6 (stryker-mutator#4600) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @babel/cli to v7.23.4 (stryker-mutator#4601) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency svelte to v4.2.7 (stryker-mutator#4602) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update mutation-testing-elements to v3.0.0 (stryker-mutator#4592) * chore(deps): update dependency @types/istanbul to v0.4.34 (stryker-mutator#4605) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/babel__core to v7.20.5 (stryker-mutator#4604) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/karma to v6.3.8 (stryker-mutator#4606) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/mocha to v10.0.5 (stryker-mutator#4607) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/sinon to v17.0.2 (stryker-mutator#4610) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/node to v20.9.3 (stryker-mutator#4608) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/semver to v7.5.6 (stryker-mutator#4609) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/node to v20.9.4 (stryker-mutator#4612) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency svelte-check to v3.6.1 (stryker-mutator#4614) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency lerna to v8 (stryker-mutator#4616) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @sveltejs/vite-plugin-svelte to v2.5.3 (stryker-mutator#4615) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/node to v20.10.0 (stryker-mutator#4617) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/mocha to v10.0.6 (stryker-mutator#4611) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency svelte-check to v3.6.2 (stryker-mutator#4619) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency jsdom to v23 (stryker-mutator#4621) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update babel monorepo to v7.23.5 (stryker-mutator#4622) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(jest-runner): support `handleTestEvent` class property (stryker-mutator#4623) * chore(deps): update dependency typescript to v5.3.2 * fix(jest-runner): support `handleTestEvent` class property Support `handleTestEvent` as a custom class property (instead of method). --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/node to v20.10.1 (stryker-mutator#4624) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @cucumber/messages to v24 (stryker-mutator#4618) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update typescript-eslint monorepo to v6.13.1 (stryker-mutator#4584) * chore(deps): update typescript-eslint monorepo to v6.13.1 * fix eslint warnings for grabbed code --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Nico Jansen <[email protected]> * chore(deps): update dependency jsdom to v23.0.1 (stryker-mutator#4626) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency svelte to v4.2.8 (stryker-mutator#4627) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * feat(node): drop official support for node 16 (stryker-mutator#4542) - Set TS target to es2022 for more concise JavaScript - Drop support for node 16. The lowest supported version is now NodeJS 18. BREAKING CHANGE: NodeJS 16 is no longer supported. Please use NodeJS 18 or higher. See https://nodejs.org/en/about/previous-releases * feat(vitest): support browser mode (stryker-mutator#4628) - Support vitest browser mode - Support [email protected] * feat(init): add svelte custom initializer (stryker-mutator#4625) * Add svelte custom initializer * Add guide to configure Stryker for a svelte project * chore(release): bump StrykerJS peer dependency version * v8.0.0 * chore(deps): update dependency playwright to v1.40.1 (stryker-mutator#4629) * chore(deps): update dependency playwright to v1.40.1 * Regen lock file --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Nico Jansen <[email protected]> * chore(deps): update dependency prettier to v3.1.0 (stryker-mutator#4583) * chore(deps): update dependency prettier to v3.1.0 * Fix formatting --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Nico Jansen <[email protected]> * chore(deps): update dependency eslint to v8.55.0 (stryker-mutator#4632) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency eslint-config-prettier to v9.1.0 (stryker-mutator#4633) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update typescript-eslint monorepo to v6.13.2 (stryker-mutator#4637) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency ava to v6 (stryker-mutator#4638) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency ava to v6.0.1 (stryker-mutator#4642) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * feat(core): Add .next, .nuxt and .svelte-kit to ignorePattern (stryker-mutator#4645) * feat: Add .next .nuxt .svelte-kit to ALWAYS_IGNORE patterns * fix unit test for project-reader * chore(deps): update vitest monorepo to v1.0.3 (stryker-mutator#4636) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vite to v4.5.1 [security] (stryker-mutator#4639) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @testing-library/jest-dom to v6.1.5 (stryker-mutator#4630) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/node to v20.10.4 (stryker-mutator#4631) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency ts-node to v10.9.2 (stryker-mutator#4646) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency typescript to v5.3.3 (stryker-mutator#4643) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update vitest monorepo to v1.0.4 (stryker-mutator#4647) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @sveltejs/kit to v1.27.7 (stryker-mutator#4640) * chore(deps): update dependency @sveltejs/kit to v1.27.7 * Regen lock file --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Nico Jansen <[email protected]> * chore(deps): update dependency prettier to v3.1.1 (stryker-mutator#4648) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency angular-html-parser to ~5.2.0 (stryker-mutator#4649) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @sveltejs/kit to v1.28.0 (stryker-mutator#4650) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(ci): remove unused `--force` (stryker-mutator#4651) * chore(deps): update babel monorepo to v7.23.6 (stryker-mutator#4652) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update typescript-eslint monorepo to v6.14.0 (stryker-mutator#4653) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @sveltejs/kit to v1.29.0 (stryker-mutator#4654) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @sveltejs/kit to v1.29.1 (stryker-mutator#4655) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @sveltejs/kit to v1.30.0 (stryker-mutator#4656) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @sveltejs/kit to v1.30.1 (stryker-mutator#4657) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @sveltejs/kit to v1.30.2 (stryker-mutator#4659) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @sveltejs/kit to v1.30.3 (stryker-mutator#4660) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency eslint-plugin-import to v2.29.1 (stryker-mutator#4661) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency lerna to v8.0.1 (stryker-mutator#4665) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency eslint to v8.56.0 (stryker-mutator#4666) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/babel__generator to v7.6.8 (stryker-mutator#4667) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/node to v20.10.5 (stryker-mutator#4668) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update actions/upload-artifact action to v4 (stryker-mutator#4662) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update vitest monorepo to v1.1.0 (stryker-mutator#4670) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency eslint-plugin-prettier to v5.1.0 (stryker-mutator#4671) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency eslint-plugin-unicorn to v50 (stryker-mutator#4672) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency eslint-plugin-unicorn to v50.0.1 (stryker-mutator#4673) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency eslint-plugin-prettier to v5.1.1 (stryker-mutator#4674) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @cucumber/cucumber to v10.1.0 (stryker-mutator#4676) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency eslint-plugin-prettier to v5.1.2 (stryker-mutator#4679) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency axios to v1.6.3 (stryker-mutator#4680) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @testing-library/jest-dom to v6.1.6 (stryker-mutator#4682) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore: fix docs links * Base structure for selecting operators individually (#14) * Added project to test on * Add level to the config and read it from code * Move the debugging to the test project * Add mutation levels CLI argument, fix lint * Move testing-project back outside packages folder * Check if pipeline is fixed * Remove last change, there is something wrong with the pipeline environment * Modify mutation levels config file to reflect the submutators * Update meta config such that types are generated instead of strings * Add back comment inside instrumenter launch file * Trigger e2e and incremental_mutation_test workflows only on `master` push --------- Co-authored-by: luctia <[email protected]> * #18 restrict arraydeclaration mutator (#40) * Changed configuration file for testing purposes * small updates in the lock file of package.json * Adaptation of the NodeMutator * Added check to only run desired suboperators * changed file to only run desired operators and pass its suboperators * Modified ArrayDeclaration tests according to modifications * Linting * Make modfications to the tests. * Linting * changed the acceptation of undefined as well * Linting * process feedback PR * Unstable * Added new suboperators for ArrayDeclaration * Adapted the suboperators implementation accordingly * Solved issues with undefined * changed tests * just a different config file * changed codebase for testing purposes * cleaned up file * cleanup * processed feedback * last feedback processed * #23 restrict equalityoperator mutator (#41) * ArithmeticOp: pass the whole level * Add min size to level arrays and mandatory name * Move arithmetic ops to map * Add test for arithmetic operator * Restrict EqualityOperator Observed mutation score (equality-operator-mutator.ts): 85.71% * Formatting fixes * Formatting fixes and removed dead code * Update arithmetic-operator-mutator.ts and equality-operator-mutator.ts to comply with the changes to node-mutator.ts. Coded it such that `undefined` results in allowing everything since otherwise setting no MutationLevel results in blocking every mutator. --------- Co-authored-by: Danut Copae <[email protected]> Co-authored-by: Ivo_Broekhof <[email protected]> * #21 booleanliteral (#44) * WIP Mutation level support for BooleanLiterals * Fix prettier * Tests * Pleased linter * Fixed typo * Added tests for edge cases * #20 assignment operator (#46) * WIP support for assignmentoperator * Added assignmentoperator in definitions * Added tests for edge cases * Added comments about what's being mutated * Resolved merge conflict? * Add restriction for string literals (#43) Co-authored-by: Ivo Broekhof <[email protected]> * Restrict optional chaining mutator (#45) Co-authored-by: Ivo Broekhof <[email protected]> * Change mutation level specification style (#56) * Read default levels v2 (#60) * solution to read a json file which contains levels * implementation of reading json object * read config * Refactor default levels location * make method private again --------- Co-authored-by: Javier <[email protected]> * Restricted logical-operator-mutator.ts (#57) * Restricted logical-operator-mutator.ts * Pleased linter now --------- Co-authored-by: Ivo_Broekhof <[email protected]> * #22 restrict conditionalexpression mutator (#55) * Added an extra suboperator * changed implementation of suboperator * tests for conditional operator for mutationLevel * combined config file * moved order of yielding * modified tests properly --------- Co-authored-by: Danut Copae <[email protected]> * 25 restrict methodexpression mutator (#54) * integrated MutationLevel into method-expression-mutator.ts Converted Map to const object * Fix formatting to please Prettier Used prettier-ignore on operators * modified operator to pass test and still function --------- Co-authored-by: Ivo_Broekhof <[email protected]> Co-authored-by: Javier <[email protected]> Co-authored-by: Danut Copae <[email protected]> * 29 restrict unaryoperator mutator (#53) * integrated MutationLevel into unary-operator-mutator.ts Changed enum to const object * Fix formatting to please Prettier --------- Co-authored-by: Ivo_Broekhof <[email protected]> Co-authored-by: Danut Copae <[email protected]> * #30 restrict updateoperator mutator (#51) * updated to conform to mutationlevels * modified tests * modified config file * initial implementation of condition * Revert "initial implementation of condition" This reverts commit bcb6cc0. * changed tests to pass CI/CD * changes nessecary for pass * small refactor * remove line added by mistake --------- Co-authored-by: Danut Copae <[email protected]> Co-authored-by: Danut Copae <[email protected]> * Added support for arrowfunction (#47) * Added support for arrowfunction * update schema * Fix up arrow function sting --------- Co-authored-by: Danut Copae <[email protected]> Co-authored-by: Danut Copae <[email protected]> * #63 implement objectliteral mutator (#65) * object literal implementation of mutation levels * change construct of ObjectLiteral * Last Modifications to adhere to new implementation * Refactor mutators (#64) * save progress * details * Implement mutationLevel construct BlockStatement (#66) * implement MutationLevel construct for Regex (#67) * Rename mutators & enhance NodeMutatorConfiguration type (#68) * Rename mutators in the schema * Change negation to substraction in arhitmeticop * Rename mutators, stable * Enforce type with a generic NodeMutatorConfiguration * Get rid of NodeMutatorMultiConfiguration * Move operators inside nodemutator interface * Update conditionalLevel test name * Finish aritmetic through conditional operators, stable * Fix arithmetic through object-literal operators, stable * Fix up optional-chaining * Finish renaming mutators * Reorder stryker-core to reduce generated warnings * Use the same key for the mutator operators when there is no reason to be more specific * #48 ensure code consistency between mutators tests (#75) * Made the arithmetic operator more consistent * Made the array declaration more consistent * Made the arrow function more consistent * Made the assignment operator more consistent * Made the block statement more consistent * Made the boolean literal more consistent * Made the conditional expression more consistent * Made the equality operator more consistent * Made the logical operator more consistent * Made the method expression more consistent * Made the object literal more consistent * Made the optional chaining more consistent * Made the regex more consistent * Made the string literal more consistent * Made the unary operator more consistent * Made the update operator more consistent * small modification in consistency * Fix consistency in all unit test files --------- Co-authored-by: Danut Copae <[email protected]> * remove testing project folder * removed testing folder from the workspace file * Revert "chore: fix docs links" This reverts commit d51d612. * removed testing folder again * change naming of operators * small modification to one of the names * Fix up ignore-project * Copy CI from upstream * Fix up config reader test from upstream * Fix up reporters-e2e test * Modification of stryker config * Modify the mutantstatus dependency * removed last items from testing folder --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Hugo van Rijswijk <[email protected]> Co-authored-by: Nico Jansen <[email protected]> Co-authored-by: odinvanderlinden <[email protected]> Co-authored-by: Danut Copae <[email protected]> Co-authored-by: luctia <[email protected]> Co-authored-by: Ivo Broekhof <[email protected]> Co-authored-by: Danut Copae <[email protected]> Co-authored-by: Ivo_Broekhof <[email protected]> Co-authored-by: Luc Timmerman <[email protected]>
* Fix up ignore-project * Copy CI from upstream * Fix up config reader test from upstream * Fix up reporters-e2e test * Test ignored mutators when they are not present in includedMutations * Remove MutantStatus from ignore-project
* chore(deps): update dependency tap to v18.5.8 (stryker-mutator#4585) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @sveltejs/kit to v1.27.6 (stryker-mutator#4586) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency ts-loader to v9.5.1 (stryker-mutator#4588) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency axios to v1.6.2 (stryker-mutator#4587) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency tap to v18.6.1 (stryker-mutator#4591) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency svelte to v4.2.4 (stryker-mutator#4594) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/node to v20.9.1 (stryker-mutator#4593) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency svelte to v4.2.5 (stryker-mutator#4596) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency eslint to v8.54.0 (stryker-mutator#4597) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/node to v20.9.2 (stryker-mutator#4599) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency svelte to v4.2.6 (stryker-mutator#4600) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @babel/cli to v7.23.4 (stryker-mutator#4601) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency svelte to v4.2.7 (stryker-mutator#4602) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update mutation-testing-elements to v3.0.0 (stryker-mutator#4592) * chore(deps): update dependency @types/istanbul to v0.4.34 (stryker-mutator#4605) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/babel__core to v7.20.5 (stryker-mutator#4604) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/karma to v6.3.8 (stryker-mutator#4606) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/mocha to v10.0.5 (stryker-mutator#4607) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/sinon to v17.0.2 (stryker-mutator#4610) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/node to v20.9.3 (stryker-mutator#4608) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/semver to v7.5.6 (stryker-mutator#4609) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/node to v20.9.4 (stryker-mutator#4612) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency svelte-check to v3.6.1 (stryker-mutator#4614) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency lerna to v8 (stryker-mutator#4616) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @sveltejs/vite-plugin-svelte to v2.5.3 (stryker-mutator#4615) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/node to v20.10.0 (stryker-mutator#4617) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/mocha to v10.0.6 (stryker-mutator#4611) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency svelte-check to v3.6.2 (stryker-mutator#4619) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency jsdom to v23 (stryker-mutator#4621) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update babel monorepo to v7.23.5 (stryker-mutator#4622) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(jest-runner): support `handleTestEvent` class property (stryker-mutator#4623) * chore(deps): update dependency typescript to v5.3.2 * fix(jest-runner): support `handleTestEvent` class property Support `handleTestEvent` as a custom class property (instead of method). --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/node to v20.10.1 (stryker-mutator#4624) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @cucumber/messages to v24 (stryker-mutator#4618) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update typescript-eslint monorepo to v6.13.1 (stryker-mutator#4584) * chore(deps): update typescript-eslint monorepo to v6.13.1 * fix eslint warnings for grabbed code --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Nico Jansen <[email protected]> * chore(deps): update dependency jsdom to v23.0.1 (stryker-mutator#4626) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency svelte to v4.2.8 (stryker-mutator#4627) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * feat(node): drop official support for node 16 (stryker-mutator#4542) - Set TS target to es2022 for more concise JavaScript - Drop support for node 16. The lowest supported version is now NodeJS 18. BREAKING CHANGE: NodeJS 16 is no longer supported. Please use NodeJS 18 or higher. See https://nodejs.org/en/about/previous-releases * feat(vitest): support browser mode (stryker-mutator#4628) - Support vitest browser mode - Support [email protected] * feat(init): add svelte custom initializer (stryker-mutator#4625) * Add svelte custom initializer * Add guide to configure Stryker for a svelte project * chore(release): bump StrykerJS peer dependency version * v8.0.0 * chore(deps): update dependency playwright to v1.40.1 (stryker-mutator#4629) * chore(deps): update dependency playwright to v1.40.1 * Regen lock file --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Nico Jansen <[email protected]> * chore(deps): update dependency prettier to v3.1.0 (stryker-mutator#4583) * chore(deps): update dependency prettier to v3.1.0 * Fix formatting --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Nico Jansen <[email protected]> * chore(deps): update dependency eslint to v8.55.0 (stryker-mutator#4632) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency eslint-config-prettier to v9.1.0 (stryker-mutator#4633) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update typescript-eslint monorepo to v6.13.2 (stryker-mutator#4637) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency ava to v6 (stryker-mutator#4638) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency ava to v6.0.1 (stryker-mutator#4642) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * feat(core): Add .next, .nuxt and .svelte-kit to ignorePattern (stryker-mutator#4645) * feat: Add .next .nuxt .svelte-kit to ALWAYS_IGNORE patterns * fix unit test for project-reader * chore(deps): update vitest monorepo to v1.0.3 (stryker-mutator#4636) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency vite to v4.5.1 [security] (stryker-mutator#4639) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @testing-library/jest-dom to v6.1.5 (stryker-mutator#4630) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/node to v20.10.4 (stryker-mutator#4631) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency ts-node to v10.9.2 (stryker-mutator#4646) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency typescript to v5.3.3 (stryker-mutator#4643) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update vitest monorepo to v1.0.4 (stryker-mutator#4647) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @sveltejs/kit to v1.27.7 (stryker-mutator#4640) * chore(deps): update dependency @sveltejs/kit to v1.27.7 * Regen lock file --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Nico Jansen <[email protected]> * chore(deps): update dependency prettier to v3.1.1 (stryker-mutator#4648) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * fix(deps): update dependency angular-html-parser to ~5.2.0 (stryker-mutator#4649) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @sveltejs/kit to v1.28.0 (stryker-mutator#4650) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(ci): remove unused `--force` (stryker-mutator#4651) * chore(deps): update babel monorepo to v7.23.6 (stryker-mutator#4652) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update typescript-eslint monorepo to v6.14.0 (stryker-mutator#4653) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @sveltejs/kit to v1.29.0 (stryker-mutator#4654) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @sveltejs/kit to v1.29.1 (stryker-mutator#4655) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @sveltejs/kit to v1.30.0 (stryker-mutator#4656) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @sveltejs/kit to v1.30.1 (stryker-mutator#4657) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @sveltejs/kit to v1.30.2 (stryker-mutator#4659) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @sveltejs/kit to v1.30.3 (stryker-mutator#4660) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency eslint-plugin-import to v2.29.1 (stryker-mutator#4661) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency lerna to v8.0.1 (stryker-mutator#4665) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency eslint to v8.56.0 (stryker-mutator#4666) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/babel__generator to v7.6.8 (stryker-mutator#4667) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @types/node to v20.10.5 (stryker-mutator#4668) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update actions/upload-artifact action to v4 (stryker-mutator#4662) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update vitest monorepo to v1.1.0 (stryker-mutator#4670) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency eslint-plugin-prettier to v5.1.0 (stryker-mutator#4671) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency eslint-plugin-unicorn to v50 (stryker-mutator#4672) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency eslint-plugin-unicorn to v50.0.1 (stryker-mutator#4673) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency eslint-plugin-prettier to v5.1.1 (stryker-mutator#4674) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @cucumber/cucumber to v10.1.0 (stryker-mutator#4676) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency eslint-plugin-prettier to v5.1.2 (stryker-mutator#4679) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency axios to v1.6.3 (stryker-mutator#4680) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore(deps): update dependency @testing-library/jest-dom to v6.1.6 (stryker-mutator#4682) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> * chore: fix docs links * Base structure for selecting operators individually (#14) * Added project to test on * Add level to the config and read it from code * Move the debugging to the test project * Add mutation levels CLI argument, fix lint * Move testing-project back outside packages folder * Check if pipeline is fixed * Remove last change, there is something wrong with the pipeline environment * Modify mutation levels config file to reflect the submutators * Update meta config such that types are generated instead of strings * Add back comment inside instrumenter launch file * Trigger e2e and incremental_mutation_test workflows only on `master` push --------- Co-authored-by: luctia <[email protected]> * #18 restrict arraydeclaration mutator (#40) * Changed configuration file for testing purposes * small updates in the lock file of package.json * Adaptation of the NodeMutator * Added check to only run desired suboperators * changed file to only run desired operators and pass its suboperators * Modified ArrayDeclaration tests according to modifications * Linting * Make modfications to the tests. * Linting * changed the acceptation of undefined as well * Linting * process feedback PR * Unstable * Added new suboperators for ArrayDeclaration * Adapted the suboperators implementation accordingly * Solved issues with undefined * changed tests * just a different config file * changed codebase for testing purposes * cleaned up file * cleanup * processed feedback * last feedback processed * #23 restrict equalityoperator mutator (#41) * ArithmeticOp: pass the whole level * Add min size to level arrays and mandatory name * Move arithmetic ops to map * Add test for arithmetic operator * Restrict EqualityOperator Observed mutation score (equality-operator-mutator.ts): 85.71% * Formatting fixes * Formatting fixes and removed dead code * Update arithmetic-operator-mutator.ts and equality-operator-mutator.ts to comply with the changes to node-mutator.ts. Coded it such that `undefined` results in allowing everything since otherwise setting no MutationLevel results in blocking every mutator. --------- Co-authored-by: Danut Copae <[email protected]> Co-authored-by: Ivo_Broekhof <[email protected]> * #21 booleanliteral (#44) * WIP Mutation level support for BooleanLiterals * Fix prettier * Tests * Pleased linter * Fixed typo * Added tests for edge cases * #20 assignment operator (#46) * WIP support for assignmentoperator * Added assignmentoperator in definitions * Added tests for edge cases * Added comments about what's being mutated * Resolved merge conflict? * Add restriction for string literals (#43) Co-authored-by: Ivo Broekhof <[email protected]> * Restrict optional chaining mutator (#45) Co-authored-by: Ivo Broekhof <[email protected]> * Change mutation level specification style (#56) * Read default levels v2 (#60) * solution to read a json file which contains levels * implementation of reading json object * read config * Refactor default levels location * make method private again --------- Co-authored-by: Javier <[email protected]> * Restricted logical-operator-mutator.ts (#57) * Restricted logical-operator-mutator.ts * Pleased linter now --------- Co-authored-by: Ivo_Broekhof <[email protected]> * #22 restrict conditionalexpression mutator (#55) * Added an extra suboperator * changed implementation of suboperator * tests for conditional operator for mutationLevel * combined config file * moved order of yielding * modified tests properly --------- Co-authored-by: Danut Copae <[email protected]> * 25 restrict methodexpression mutator (#54) * integrated MutationLevel into method-expression-mutator.ts Converted Map to const object * Fix formatting to please Prettier Used prettier-ignore on operators * modified operator to pass test and still function --------- Co-authored-by: Ivo_Broekhof <[email protected]> Co-authored-by: Javier <[email protected]> Co-authored-by: Danut Copae <[email protected]> * 29 restrict unaryoperator mutator (#53) * integrated MutationLevel into unary-operator-mutator.ts Changed enum to const object * Fix formatting to please Prettier --------- Co-authored-by: Ivo_Broekhof <[email protected]> Co-authored-by: Danut Copae <[email protected]> * #30 restrict updateoperator mutator (#51) * updated to conform to mutationlevels * modified tests * modified config file * initial implementation of condition * Revert "initial implementation of condition" This reverts commit bcb6cc0. * changed tests to pass CI/CD * changes nessecary for pass * small refactor * remove line added by mistake --------- Co-authored-by: Danut Copae <[email protected]> Co-authored-by: Danut Copae <[email protected]> * Added support for arrowfunction (#47) * Added support for arrowfunction * update schema * Fix up arrow function sting --------- Co-authored-by: Danut Copae <[email protected]> Co-authored-by: Danut Copae <[email protected]> * #63 implement objectliteral mutator (#65) * object literal implementation of mutation levels * change construct of ObjectLiteral * Last Modifications to adhere to new implementation * Refactor mutators (#64) * save progress * details * Implement mutationLevel construct BlockStatement (#66) * implement MutationLevel construct for Regex (#67) * Rename mutators & enhance NodeMutatorConfiguration type (#68) * Rename mutators in the schema * Change negation to substraction in arhitmeticop * Rename mutators, stable * Enforce type with a generic NodeMutatorConfiguration * Get rid of NodeMutatorMultiConfiguration * Move operators inside nodemutator interface * Update conditionalLevel test name * Finish aritmetic through conditional operators, stable * Fix arithmetic through object-literal operators, stable * Fix up optional-chaining * Finish renaming mutators * Reorder stryker-core to reduce generated warnings * Use the same key for the mutator operators when there is no reason to be more specific * #48 ensure code consistency between mutators tests (#75) * Made the arithmetic operator more consistent * Made the array declaration more consistent * Made the arrow function more consistent * Made the assignment operator more consistent * Made the block statement more consistent * Made the boolean literal more consistent * Made the conditional expression more consistent * Made the equality operator more consistent * Made the logical operator more consistent * Made the method expression more consistent * Made the object literal more consistent * Made the optional chaining more consistent * Made the regex more consistent * Made the string literal more consistent * Made the unary operator more consistent * Made the update operator more consistent * small modification in consistency * Fix consistency in all unit test files --------- Co-authored-by: Danut Copae <[email protected]> * remove testing project folder * removed testing folder from the workspace file * Revert "chore: fix docs links" This reverts commit d51d612. * removed testing folder again * change naming of operators * small modification to one of the names * Fix up ignore-project * Copy CI from upstream * Fix up config reader test from upstream * Fix up reporters-e2e test * Modification of stryker config * Modify the mutantstatus dependency * removed last items from testing folder --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Hugo van Rijswijk <[email protected]> Co-authored-by: Nico Jansen <[email protected]> Co-authored-by: odinvanderlinden <[email protected]> Co-authored-by: Danut Copae <[email protected]> Co-authored-by: luctia <[email protected]> Co-authored-by: Ivo Broekhof <[email protected]> Co-authored-by: Danut Copae <[email protected]> Co-authored-by: Ivo_Broekhof <[email protected]> Co-authored-by: Luc Timmerman <[email protected]>
* Remove testing project from eslintignore
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks a lot better already! The biggest remark I have is about the NodeMutator
API.
Thanks a lot for the work so far 👏
@@ -0,0 +1,152 @@ | |||
{ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it's a good idea to separate this config, except I would expect it to be in a .ts
file, so you can simply import it, instead of having to load it some other way.
Especially since the names used here should be in sync with the names in the stryker-core.json file. Having it as a JSON file here breaks type safety.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good observation! We moved the default-mutation-levels
to a .ts file, and used the spread operator to remove some redundancy between the levels.
import { NodeMutatorConfiguration, MutationLevel } from '../mutation-level/mutation-level.js'; | ||
|
||
export interface NodeMutator<T extends keyof MutationLevel> { | ||
mutate(path: NodePath, levelMutations: string[] | undefined): Iterable<types.Node>; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Instead of having each NodeMutator
decide on whether to generate a mutant, it would be cleaner if they always generate everything and let excluding be done afterward (in the BabelInstrumenter
class). It would safe you a lot if-statements and features like "absolute mutant score" would be easier to implement later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Implemented, this indeed leaves a lot of if statements and duplicate code out.
}, | ||
"MutationLevelName": { | ||
"title": "MutationLevelName", | ||
"type": "string" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TODO: decide on the actual names
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
export type NodeMutatorConfiguration<T> = Record<string, ReplacementConfiguration<T>>; | ||
|
||
interface ReplacementConfiguration<T> { | ||
replacement?: any; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure if an any
is needed here. I think it was strongly typed before.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated the type to Node | Node[] | boolean | string | null
|
||
interface ReplacementConfiguration<T> { | ||
replacement?: any; | ||
mutationName: T; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think a better name is "mutationOperator"
(in line with research papers)
"anyOf": [ | ||
{ | ||
"const" : "AdditionOperatorNegation", | ||
"description": "Replace ```a + b``` with ```a - b```." |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is very useful to see all the descriptions here. It will help Stryker users enormously. 👏
* Added doc comments where they were missing * Added/modified description of mutation levels in docs * Updated section on level selection * Possibly fixed pipeline failure Looks like a dependency was snuck in from local, removed that * linter fixes Remove spurious whitespace at lines 12 and 17 * Updated naming changes in accordance to the new convention * Made mutation names consistent with previous naming change * Add calisto guide (specific commands still pending) --------- Co-authored-by: Ivo_Broekhof <[email protected]> Co-authored-by: Danut Copae <[email protected]> Co-authored-by: Danut Copae <[email protected]>
* Move default-mutation-levels file to .ts * Rename mutationName to mutationOperator * Move if statements outside of API * Remove `any` type from ReplacementConfiguration * Remove all the clear-text-reporter changes * Remove all clear-text reporter changes * Minimum includedMutations array length, warn when mutator isn't recognised * Remove default options for mutator options * Fix typo * Fix reporters-e2e test * Refer to Callisto documentation
Changes since Nico's last review:
|
What?
We've added support for mutation levels to improve the performance of Stryker. It includes mutation operators, mutation groups, mutation levels, documentation and tests. In addition, we have PRs for the reporters in stryker-mutator/mutation-testing-elements and stryker-mutator/stryker-dashboard. Those PR's are still a work in progress.
Why?
Currently, Stryker, by default, executes a comprehensive mutation testing suite on your project, offering maximum efficacy. However, this default setting demands substantial computational resources. Alternatively, users can leverage mutation levels for a more resource-efficient testing experience, ranging from level 1 (optimized for speed) to level 3 (prioritizing efficacy). For more background information, see the Calisto research (https://research.infosupport.com/callisto/).
How?
For a tailored configuration, Xavier allows the adjustment of mutation levels by specifying inclusion and exclusion fields. In the configuration file, mutation operators can be precisely designated by their literal names, while mutator groups and mutation levels are denoted with the
@
prefix (e.g.,@ArithmeticOperator
or@level1
). For instance, to refine level 2 by selectively retaining theAdditionOperatorNegation
mutation operator and excluding all other operators within theArithmeticOperator
group, the configuration would be expressed as follows:Testing?
We have made modifications to the ignore-project in the e2e test folder to support mutation levels as it had excluded mutations already in its configuration file. Moreover, we added unit tests for all mutator operators. We tested a subset of operators, an empty level and an undefined level.