operators argument of mutate_file()
and mutate_package() to select the mutation operators by id
or family, e.g.
operators = c("default", "seq_idiom", "-bool_flip"). The
option mutator.operators sets it for a session. The new
mutation_operators() lists the operators.< to <=), ^,
%% and %/% swaps, removal of an
&&/|| operand,
break/next swaps, forced conditions,
off-by-one constants, empty strings, and R-specific operators:
TRUE/FALSE flips (also in argument defaults),
<<- to <-, && to
&, max to pmax,
[[ to [, seq_len(n) to
1:n, dropping drop = FALSE and other named
arguments, function swaps (any/all,
min/max, head/tail,
…), removal of wrappers such as rev() or
unique(), and removal of error handling
(tryCatch(), stop()). The replacement of
values by 42, which was disabled, is available as
value_42.&&/|| operand,
break/next,
TRUE/FALSE, <<-, named
argument, function swap and error handling operators. NA
type swaps (NA to NA_integer_, …) are no
longer in the default set, as most of their mutants are equivalent.
Results of mutate_package() therefore differ from earlier
versions.# mutator:ignore-start and
# mutator:ignore-file can list operator ids or families, to
exclude only those operators.mutate_package() reports the mutation score per
operator in summary$by_operator, printed with
isFullLog = TRUE.paste to paste0 with a single argument). A
message gives their number per file.Retry-After. Network errors are retried twice, and a
request may wait up to 30 minutes for the answer of a reasoning
model.operators input.mutator-source input selects cran (default),
r-universe, github, or local
(mutator is the package under test). When CRAN or r-universe cannot
provide the package, the workflow falls back to
PRL-PRG/mutator at the tag given by the new
mutator-ref input, which defaults to the release the
workflow is versioned with; set mutator-fallback: false to
fail instead. The existing mutator-spec input still accepts
a raw pak spec and now overrides mutator-source; it no
longer defaults to GitHub.This release addresses feedback received from CRAN during the review of the initial submission:
mutate_file(), so callers must explicitly choose where
mutant files are written.on.exit() in all package test-runner and coverage code
paths that temporarily change it.It also improves Windows support:
Sys.junction()) rather than symbolic links on Windows,
which unlink() cannot remove; this avoids leftover reparse
points and the accompanying R CMD check warnings.tinytest support. A package with an
inst/tinytest directory is now auto-detected and its
mutants are run in-process with pkgload::load_all() and
tinytest::run_test_dir(), without an install per mutant,
including coverage-guided test selection.strategy argument to
mutate_package() to override test-framework auto-detection.
Accepted values are "auto" (the default),
"testthat", "tinytest",
"tinytest-installed", and "installed".tinytest-installed strategy that installs each
mutant and runs tinytest::test_package(). It is a fallback
for packages whose in-process load diverges from an installed copy and
unlike the generic installed-tests fallback it still supports
coverage-guided selection.per_file coverage backend to forward the
package’s tests/testthat.R harness arguments (notably any
filter) to testthat::test_dir(), matching the
record_tests backend.record_tests coverage backend so it forwards
the selected CRAN mode consistently.imputesrcref from its default branch, replacing the removed
development-branch reference.