{
  "_id": "6a1019c4acfb0bcc41c86133",
  "Package": "muttest",
  "Type": "Package",
  "Title": "Mutation Testing",
  "Version": "0.2.0",
  "Authors@R": "c(\nperson(\n\"Jakub\", \"Sobolewski\",\nemail = \"jakupsob@gmail.com\",\nrole = c(\"aut\", \"cre\")\n)\n)",
  "Description": "Measure quality of your tests. 'muttest' introduces small\nchanges (mutations) to your code and runs your tests to check\nif they catch the changes. If they do, your tests are good. If\nnot, your assertions are not specific enough. 'muttest' gives\nyou percent score of how often your tests catch the changes.",
  "License": "MIT + file LICENSE",
  "Encoding": "UTF-8",
  "RoxygenNote": "7.3.3",
  "Roxygen": "list(markdown = TRUE)",
  "Config/testthat/edition": "3",
  "URL": "https://jakubsobolewski.com/muttest/",
  "VignetteBuilder": "knitr",
  "Config/pak/sysreqs": "cmake make libuv1-dev",
  "Repository": "https://jakubsob.r-universe.dev",
  "Date/Publication": "2026-05-14 12:42:20 UTC",
  "RemoteUrl": "https://github.com/jakubsob/muttest",
  "RemoteRef": "HEAD",
  "RemoteSha": "b35a34fd32a5480d760421d79e56f5a9e3ee1d4f",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-05-14 13:16:41 UTC",
    "User": "root"
  },
  "Author": "Jakub Sobolewski [aut, cre]",
  "Maintainer": "Jakub Sobolewski <jakupsob@gmail.com>",
  "MD5sum": "fec53aa84df0e67706e94ec427f5683e",
  "_user": "jakubsob",
  "_type": "src",
  "_file": "muttest_0.2.0.tar.gz",
  "_fileid": "2fdfbe4b550ad7c23b48ed2aedaa0258b2d86d7953a1971b1588f1086e82174a",
  "_filesize": 275399,
  "_sha256": "2fdfbe4b550ad7c23b48ed2aedaa0258b2d86d7953a1971b1588f1086e82174a",
  "_created": "2026-05-14T13:16:41.000Z",
  "_published": "2026-05-22T08:54:28.914Z",
  "_distro": "noble",
  "_jobs": [
    {
      "job": 77347552422,
      "time": 170,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "6995237617"
    },
    {
      "job": 77347552913,
      "time": 159,
      "config": "linux-release-x86_64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6995233939"
    },
    {
      "job": 77347552436,
      "time": 217,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "6995240219"
    },
    {
      "job": 77347552444,
      "time": 162,
      "config": "macos-release-arm64",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6995226133"
    },
    {
      "job": 77347551923,
      "time": 243,
      "config": "source",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6995181264"
    },
    {
      "job": 77347552049,
      "time": 112,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "7156617638"
    },
    {
      "job": 77347552595,
      "time": 140,
      "config": "windows-devel",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "6995228105"
    },
    {
      "job": 77347552565,
      "time": 95,
      "config": "windows-oldrel",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "6995213437"
    },
    {
      "job": 77347552649,
      "time": 93,
      "config": "windows-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "6995212945"
    }
  ],
  "_buildurl": "https://github.com/r-universe/jakubsob/actions/runs/25861953528",
  "_status": "success",
  "_host": "GitHub-Actions",
  "_upstream": "https://github.com/jakubsob/muttest",
  "_commit": {
    "id": "b35a34fd32a5480d760421d79e56f5a9e3ee1d4f",
    "author": "jakub <jakupsob@gmail.com>",
    "committer": "jakub <jakupsob@gmail.com>",
    "message": "chore: :memo: update cran comments\n",
    "time": 1778762540
  },
  "_maintainer": {
    "name": "Jakub Sobolewski",
    "email": "jakupsob@gmail.com",
    "login": "jakubsob",
    "linkedin": "in/jakub-sobolewski-r",
    "uuid": 37193264
  },
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.1.0",
      "role": "Depends"
    },
    {
      "package": "checkmate",
      "role": "Imports"
    },
    {
      "package": "cli",
      "role": "Imports"
    },
    {
      "package": "fs",
      "role": "Imports"
    },
    {
      "package": "mirai",
      "role": "Imports"
    },
    {
      "package": "R6",
      "role": "Imports"
    },
    {
      "package": "rlang",
      "role": "Imports"
    },
    {
      "package": "testthat",
      "role": "Imports"
    },
    {
      "package": "treesitter",
      "role": "Imports"
    },
    {
      "package": "treesitter.r",
      "role": "Imports"
    },
    {
      "package": "withr",
      "role": "Imports"
    },
    {
      "package": "box",
      "role": "Suggests"
    },
    {
      "package": "covr",
      "role": "Suggests"
    },
    {
      "package": "cucumber",
      "version": ">= 2.1.0",
      "role": "Suggests"
    },
    {
      "package": "ggplot2",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "purrr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "shiny",
      "role": "Suggests"
    },
    {
      "package": "stringr",
      "role": "Suggests"
    }
  ],
  "_owner": "jakubsob",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2025-20",
      "n": 3
    },
    {
      "week": "2026-19",
      "n": 24
    },
    {
      "week": "2026-20",
      "n": 17
    }
  ],
  "_tags": [
    {
      "name": "v0.1.0",
      "date": "2025-05-31"
    }
  ],
  "_topics": [
    "mutation-testing",
    "testing",
    "testing-tools",
    "testthat"
  ],
  "_stars": 23,
  "_contributors": [
    {
      "user": "jakubsob",
      "count": 97,
      "uuid": 37193264
    }
  ],
  "_userbio": {
    "uuid": 37193264,
    "type": "user",
    "name": "Jakub Sobolewski"
  },
  "_downloads": {
    "count": 530,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/muttest"
  },
  "_devurl": "https://github.com/jakubsob/muttest",
  "_pkgdown": "https://jakubsobolewski.com/muttest/",
  "_searchresults": 2,
  "_rbuild": "4.6.0",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/muttest.html",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/readme.html",
    "extra/readme.md",
    "manual.pdf"
  ],
  "_homeurl": "https://github.com/jakubsob/muttest",
  "_realowner": "jakubsob",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.1.0",
      "date": "2025-05-30"
    }
  ],
  "_exports": [
    "arithmetic_operators",
    "boolean_literal",
    "boolean_literals",
    "call_name",
    "comparison_operators",
    "condition_mutations",
    "CopyStrategy",
    "default_copy_strategy",
    "default_reporter",
    "default_test_strategy",
    "delete_statement",
    "FileTestStrategy",
    "FullTestStrategy",
    "index_decrement",
    "index_increment",
    "index_mutations",
    "logical_operators",
    "MutationReporter",
    "Mutator",
    "muttest",
    "muttest_plan",
    "na_literal",
    "na_literals",
    "negate_condition",
    "numeric_decrement",
    "numeric_increment",
    "numeric_literals",
    "operator",
    "PackageCopyStrategy",
    "ProgressMutationReporter",
    "remove_condition_negation",
    "remove_negation",
    "replace_return_value",
    "string_empty",
    "string_fill",
    "string_literals",
    "TestStrategy"
  ],
  "_help": [
    {
      "page": "arithmetic_operators",
      "title": "Arithmetic operator mutators",
      "topics": [
        "arithmetic_operators"
      ]
    },
    {
      "page": "boolean_literal",
      "title": "Mutate a boolean literal",
      "topics": [
        "boolean_literal"
      ]
    },
    {
      "page": "boolean_literals",
      "title": "Boolean literal mutators",
      "topics": [
        "boolean_literals"
      ]
    },
    {
      "page": "call_name",
      "title": "Mutate a function call name",
      "topics": [
        "call_name"
      ]
    },
    {
      "page": "comparison_operators",
      "title": "Comparison operator mutators",
      "topics": [
        "comparison_operators"
      ]
    },
    {
      "page": "condition_mutations",
      "title": "Condition mutation mutators",
      "topics": [
        "condition_mutations"
      ]
    },
    {
      "page": "CopyStrategy",
      "title": "CopyStrategy interface",
      "concept": [
        "CopyStrategy"
      ],
      "topics": [
        "CopyStrategy"
      ]
    },
    {
      "page": "default_copy_strategy",
      "title": "Create a default project copy strategy",
      "concept": [
        "CopyStrategy"
      ],
      "topics": [
        "default_copy_strategy"
      ]
    },
    {
      "page": "default_reporter",
      "title": "Create a default reporter",
      "concept": [
        "MutationReporter"
      ],
      "topics": [
        "default_reporter"
      ]
    },
    {
      "page": "default_test_strategy",
      "title": "Create a default run strategy",
      "concept": [
        "TestStrategy"
      ],
      "topics": [
        "default_test_strategy"
      ]
    },
    {
      "page": "delete_statement",
      "title": "Delete statements one at a time",
      "topics": [
        "delete_statement"
      ]
    },
    {
      "page": "FileTestStrategy",
      "title": "Run tests matching the mutated source file name",
      "concept": [
        "TestStrategy"
      ],
      "topics": [
        "FileTestStrategy"
      ]
    },
    {
      "page": "FullTestStrategy",
      "title": "Run all tests for a mutant",
      "concept": [
        "TestStrategy"
      ],
      "topics": [
        "FullTestStrategy"
      ]
    },
    {
      "page": "index_decrement",
      "title": "Decrement subscript indices",
      "topics": [
        "index_decrement"
      ]
    },
    {
      "page": "index_increment",
      "title": "Increment subscript indices",
      "topics": [
        "index_increment"
      ]
    },
    {
      "page": "index_mutations",
      "title": "Index mutation mutators",
      "topics": [
        "index_mutations"
      ]
    },
    {
      "page": "logical_operators",
      "title": "Logical operator mutators",
      "topics": [
        "logical_operators"
      ]
    },
    {
      "page": "MutationReporter",
      "title": "Reporter for Mutation Testing",
      "concept": [
        "MutationReporter"
      ],
      "topics": [
        "MutationReporter"
      ]
    },
    {
      "page": "Mutator",
      "title": "Mutator",
      "topics": [
        "Mutator"
      ]
    },
    {
      "page": "muttest",
      "title": "Run a mutation test",
      "topics": [
        "muttest"
      ]
    },
    {
      "page": "muttest_plan",
      "title": "Create a plan for mutation testing",
      "topics": [
        "muttest_plan"
      ]
    },
    {
      "page": "na_literal",
      "title": "Mutate an NA or NULL literal",
      "topics": [
        "na_literal"
      ]
    },
    {
      "page": "na_literals",
      "title": "NA and NULL literal mutators",
      "topics": [
        "na_literals"
      ]
    },
    {
      "page": "negate_condition",
      "title": "Negate the condition of if/while statements",
      "topics": [
        "negate_condition"
      ]
    },
    {
      "page": "numeric_decrement",
      "title": "Decrement numeric literals",
      "topics": [
        "numeric_decrement"
      ]
    },
    {
      "page": "numeric_increment",
      "title": "Increment numeric literals",
      "topics": [
        "numeric_increment"
      ]
    },
    {
      "page": "numeric_literals",
      "title": "Numeric literal mutators",
      "topics": [
        "numeric_literals"
      ]
    },
    {
      "page": "operator",
      "title": "Mutate a binary operator",
      "topics": [
        "operator"
      ]
    },
    {
      "page": "PackageCopyStrategy",
      "title": "Package copy strategy",
      "concept": [
        "CopyStrategy"
      ],
      "topics": [
        "PackageCopyStrategy"
      ]
    },
    {
      "page": "ProgressMutationReporter",
      "title": "Progress Reporter for Mutation Testing",
      "concept": [
        "MutationReporter"
      ],
      "topics": [
        "ProgressMutationReporter"
      ]
    },
    {
      "page": "remove_condition_negation",
      "title": "Remove negation from the condition of if/while statements",
      "topics": [
        "remove_condition_negation"
      ]
    },
    {
      "page": "remove_negation",
      "title": "Remove logical negation",
      "topics": [
        "remove_negation"
      ]
    },
    {
      "page": "replace_return_value",
      "title": "Replace the value in explicit return() calls",
      "topics": [
        "replace_return_value"
      ]
    },
    {
      "page": "string_empty",
      "title": "Mutate non-empty string literals to the empty string",
      "topics": [
        "string_empty"
      ]
    },
    {
      "page": "string_fill",
      "title": "Mutate the empty string literal to a placeholder string",
      "topics": [
        "string_fill"
      ]
    },
    {
      "page": "string_literals",
      "title": "String literal mutators",
      "topics": [
        "string_literals"
      ]
    },
    {
      "page": "TestStrategy",
      "title": "TestStrategy interface",
      "concept": [
        "TestStrategy"
      ],
      "topics": [
        "TestStrategy"
      ]
    }
  ],
  "_pkglogo": "https://github.com/jakubsob/muttest/raw/HEAD/man/figures/logo.png",
  "_readme": "https://github.com/jakubsob/muttest/raw/HEAD/README.md",
  "_rundeps": [
    "backports",
    "brio",
    "callr",
    "checkmate",
    "cli",
    "crayon",
    "desc",
    "diffobj",
    "evaluate",
    "fs",
    "glue",
    "jsonlite",
    "lifecycle",
    "magrittr",
    "mirai",
    "nanonext",
    "pkgbuild",
    "pkgload",
    "praise",
    "processx",
    "ps",
    "R6",
    "rlang",
    "rprojroot",
    "testthat",
    "treesitter",
    "treesitter.r",
    "vctrs",
    "waldo",
    "withr"
  ],
  "_vignettes": [
    {
      "source": "getting-started.Rmd",
      "filename": "getting-started.html",
      "title": "Getting Started with muttest",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Prerequisites",
        "Step 1 — Pick a source file to mutate",
        "Step 2 — Define a test plan",
        "Step 3 — Run the tests",
        "Step 4 — Read the output and improve your tests",
        "The feedback loop",
        "Next steps"
      ],
      "created": "2026-05-06 18:58:06",
      "modified": "2026-05-14 11:42:02",
      "commits": 6
    },
    {
      "source": "mutators.Rmd",
      "filename": "mutators.html",
      "title": "Mutator Reference and Choosing the Right Mutators",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Operator mutators",
        "operator() — custom pair",
        "arithmetic_operators() — preset for arithmetic",
        "comparison_operators() — preset for comparisons",
        "logical_operators() — preset for logical operators",
        "Boolean literal mutators",
        "boolean_literal() — flip TRUE/FALSE",
        "boolean_literals() — preset for boolean literals",
        "Numeric mutators",
        "numeric_increment() — add 1 to every numeric literal",
        "numeric_decrement() — subtract 1 from every numeric literal",
        "numeric_literals() — preset for numeric constants",
        "String mutators",
        "string_empty() — replace strings with \"\"",
        "string_fill() — replace empty strings with \"mutant\"",
        "string_literals() — preset for string literals",
        "Condition mutators",
        "negate_condition() — wrap condition in !(...)",
        "remove_condition_negation() — strip leading !",
        "remove_negation() — remove ! anywhere",
        "condition_mutations() — preset for condition logic",
        "Function call mutator",
        "call_name() — swap one function name for another",
        "NA and NULL mutators",
        "na_literal() — swap NA/NULL values",
        "na_literals() — preset for NA and NULL",
        "Return value mutators",
        "replace_return_value() — replace explicit return values",
        "Index and subscript mutators",
        "index_increment() — shift subscript indices up by one",
        "index_decrement() — shift subscript indices down by one",
        "index_mutations() — preset for subscript indices",
        "Recommended starting set"
      ],
      "created": "2026-05-06 18:58:06",
      "modified": "2026-05-14 11:42:02",
      "commits": 7
    },
    {
      "source": "interpreting-results.Rmd",
      "filename": "interpreting-results.html",
      "title": "Reading mutation results and strengthening tests",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The output table",
        "What the score tells you",
        "Summary: three patterns, three fixes"
      ],
      "created": "2026-05-06 18:58:06",
      "modified": "2026-05-14 09:43:07",
      "commits": 5
    },
    {
      "source": "ci-integration.Rmd",
      "filename": "ci-integration.html",
      "title": "Running muttest in CI",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Why run mutation tests in CI",
        "GitHub Actions: minimal workflow",
        "Mutation score badge",
        "Choosing which files to mutate in CI",
        "Failing the build on a low score",
        "Performance tips"
      ],
      "created": "2026-05-06 18:58:06",
      "modified": "2026-05-14 11:42:02",
      "commits": 4
    },
    {
      "source": "mutation-testing-101.Rmd",
      "filename": "mutation-testing-101.html",
      "title": "What is Mutation Testing and Why Does it Matter?",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Code coverage is not test quality",
        "What a mutant is",
        "Kill vs survive",
        "The mutation score",
        "The LLM-generated tests problem",
        "When mutation testing pays off most",
        "When it is less useful",
        "How it relates to covr",
        "Next steps"
      ],
      "created": "2026-05-06 18:58:06",
      "modified": "2026-05-14 09:43:07",
      "commits": 2
    }
  ],
  "_score": 6.236789099409293,
  "_indexed": true,
  "_nocasepkg": "muttest",
  "_universes": [
    "jakubsob"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.2.0",
      "date": "2026-05-14T13:19:26.000Z",
      "distro": "noble",
      "commit": "b35a34fd32a5480d760421d79e56f5a9e3ee1d4f",
      "fileid": "36e542a534b5f651f4ec61a13c71b5643415e03b6607636f3ef22efbea7d7c82",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/jakubsob/actions/runs/25861953528"
    },
    {
      "r": "4.6.0",
      "os": "linux",
      "version": "0.2.0",
      "date": "2026-05-14T13:19:17.000Z",
      "distro": "noble",
      "commit": "b35a34fd32a5480d760421d79e56f5a9e3ee1d4f",
      "fileid": "437ded124b320e88909bd8f9eb53646efdbde988513d5b36bc58752b4829f560",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/jakubsob/actions/runs/25861953528"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.2.0",
      "date": "2026-05-14T13:19:35.000Z",
      "commit": "b35a34fd32a5480d760421d79e56f5a9e3ee1d4f",
      "fileid": "51125a69ad89964c0ec0ebbf01a04d630374e5d0136cb3ce8e1516327b81081e",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/jakubsob/actions/runs/25861953528"
    },
    {
      "r": "4.6.0",
      "os": "mac",
      "version": "0.2.0",
      "date": "2026-05-14T13:18:52.000Z",
      "commit": "b35a34fd32a5480d760421d79e56f5a9e3ee1d4f",
      "fileid": "3a0f82cc5dd3747554aa234c53a050ec75746cb449c55f354c40993058e592d6",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/jakubsob/actions/runs/25861953528"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.2.0",
      "date": "2026-05-14T13:18:48.000Z",
      "commit": "b35a34fd32a5480d760421d79e56f5a9e3ee1d4f",
      "fileid": "c77cec05a41dc104b5a79f74e7ef0236c9d344ab056101b9016e7a2c0afaf452",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/jakubsob/actions/runs/25861953528"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.2.0",
      "date": "2026-05-14T13:18:04.000Z",
      "commit": "b35a34fd32a5480d760421d79e56f5a9e3ee1d4f",
      "fileid": "7a8a4137f62cbcf1d676fd19e90c751eeb618893bdf1a9df05e211b9f55698bb",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/jakubsob/actions/runs/25861953528"
    },
    {
      "r": "4.6.0",
      "os": "win",
      "version": "0.2.0",
      "date": "2026-05-14T13:18:02.000Z",
      "commit": "b35a34fd32a5480d760421d79e56f5a9e3ee1d4f",
      "fileid": "9f2399efae512d7230be94846b77679e0f682620bbd20308751ecf37e00f4547",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/jakubsob/actions/runs/25861953528"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.2.0",
      "date": "2026-05-22T08:54:07.000Z",
      "commit": "b35a34fd32a5480d760421d79e56f5a9e3ee1d4f",
      "fileid": "7c87670c93b3a15d2998ec8e166c69a2fd0bd39534ddff8385b8f90d2db2d0e3",
      "status": "success",
      "buildurl": "https://github.com/r-universe/jakubsob/actions/runs/25861953528"
    }
  ]
}