knitr::opts_chunk$set( comment = "#>", collapse = TRUE, warning = FALSE, message = FALSE )
mutant
- mutation testing
(wikipedia: mutation testing vs. fuzzing)
mutaters.R
remotes::install_github("sckott/astr", "sckott/mutant")
As of this writing (2020-05-18) ...
# path to an R package with working tests in tests/ path <- "../randgeo/" ## collect fxns into an environment env <- collect_fxns(path) ls.str(env) ## make pkg map for later pkgmap <- make_pkg_map(path) ## parse fxns with getParseData # fxns <- parse_fxns(env) ## mutate something mut_fxns <- mutate(as.list(env)) # what fxn was mutated? which(vapply(mut_fxns, function(x) attr(x, "mutated"), logical(1))) ## write a new package with test suite to a tempdir new_fxns <- make_fxns(mut_fxns) newpath <- write_mutated_pkg(pkg_path = path, fxns = new_fxns, map = pkgmap) ## run test suite & collect diagnostics mutout <- mutation_test(newpath) # mutout dplyr::select(data.frame(mutout), file, context, test, nb, failed, skipped, error, warning, passed)
This will all be internal code however - only exposing probably a few functions to users to run mutation testing, do something with results, etc.
brainstorming high level steps:
mutant
in R doing citation(package = 'mutant')
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.