NEWS
CBTF 0.6.0 (2026-02-13)
New features
- Rewrite
fuzz() to use a backend based on the mirai package. This allows
to parallelize computations and support a timeout to stop non-failing
functions (#4).
- Add the
timeout argument to fuzz() to control the number of seconds to
wait before interrupting the execution of a function being fuzzed.
- Add the
args argument to allow fuzzing multiple function arguments instead
of only the first, with support for named and fixed arguments (#6, #7, #8).
- Add support for
what = NULL, which allows running the set of arguments
listed in args with no modifications. This can be used after a fuzz run to
collect results on just one set of problematic inputs.
- Replace the
show_all logical argument of print() with a show argument
that accepts the class of results to be printed, any of "fail", "warn",
"skip", "ok" or "all" (#9).
Updates
- Use unicode symbols only on terminals that support UTF8, and respect the
cli.unicode option, so that options(cli.unicode = FALSE) can be used to
disable all unicode output.
- Fix bug that caused failures in the
+() operator to be whitelisted just
because the + was interpreted as a regular expression quantifier.
- Ignore deprecated functions by default in
get_exported_functions().
- Add more inputs to
test_inputs(), bringing the total number of inputs from
60 to 70.
- Move the NA inputs in
test_inputs() from the "scalar" to the new "na"
class.
- Add the
[[ operator to extract the results for a specific test input.
- Stop exporting the
namify() helper.
CBTF 0.5.0 (2025-08-21)
- Streamline the progress report from
fuzz().
- In case both an error and a warning are raised by the function being
fuzzed, we now report the error; previously the warning was reported
because of how
tryCatch() is implemented.
- The
length() S3 method for objects of class cbtf now counts the total
number of tests performed, instead of the number of inputs tested.
- Add the
tabulate argument to summary() to control whether the tabulation
of results should be printed to the terminal or not.
- Change the internal structure of the
cbtf object to store the names of
the functions fuzzed only once.
- Store the values of the
ignore_patterns and ignore_warnings options in
the cbtf object.
- Add the
whitelist() function to remove false positives from a cbtf
object.
- Make
test_input() recognise the "help" keyword, in which case it returns
a vector of valid input classes.
- Add the
namify() function to help create a named list of custom input
objects.
CBTF 0.4.0 (2025-08-19)
- Don't crash in
get_exported_functions() if getNameSpaceExports() fails.
- Store the error message in the results object also in case of whitelisted
errors, so it can be reported from
print(..., show_all = TRUE).
- Add the tabulation shown in
summary() as attribute "summary_table" of
the data frame returned.
- Make
get_exported_functions() return only fuzzable functions, so that
functions with no arguments are no longer returned.
- Expand the documentation to satisfy the CRAN request.
CBTF 0.3.0
- Warnings containing the name of the function being fuzzed are no longer
reported, to make their behaviour consistent with that of errors.
- Add the
package argument to fuzz() as an alternative and simpler way
to specify the namespace where function names are searched.
- Don't consider primitives (such as
list() or +) to be functions with no
arguments (#5).
- Make the
what argument to fuzz() accept a list of inputs, so that
the function can test multiple inputs in the same run.
- Add function
test_inputs() to return a configurable list of problematic
inputs.
- Add the
listify_what argument to fuzz() so that each input in what
is also tested in its listified version.
- Provide the S3 method for
length().
- Make the output from
summary() more informative and include a column with
the inputs tested in the data frame returned.
CBTF 0.2.0
- Return an object with the raw results from
fuzz() and provide S3 methods
for summary() and print() (#1).
- Skip functions that call
readline(), as in an interactive session they
stall waiting for user input (#4).
- Skip non-existing function names and functions that accept no arguments.
- Show a progress bar during
fuzz().
- Prettify the output from
fuzz(), summary() and print().
CBTF 0.1.0
- First version of the package.
- The package website is now available at
https://mcol.github.io/caught-by-the-fuzz/