Skip to content

Releases: mcol/caught-by-the-fuzz

CBTF 0.6.0 (CRAN)

13 Feb 10:29
v0.6.0
d906cab

Choose a tag to compare

Changes in 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.

Full Changelog: v0.5.0...v0.6.0

CBTF 0.5.0 (CRAN)

21 Aug 07:54
v0.5.0
551fd6e

Choose a tag to compare

Changes in 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.

Full Changelog: v0.4.0...v0.5.0

CBTF 0.4.0 (CRAN)

31 Jul 13:18
v0.4.0
6eb15c2

Choose a tag to compare

Changes in CBTF 0.4.0 (2025-07-31)

  • 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.

Full Changelog: v0.3.0...v0.4.0

CBTF 0.3.0

27 Jul 13:00
v0.3.0
d9b6a07

Choose a tag to compare

Changes in CBTF 0.3.0 (2025-07-26)

  • 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.

Full Changelog: v0.2.0...v0.3.0

CBTF 0.2.0

16 Jul 14:10
v0.2.0
cccb373

Choose a tag to compare

Changes in CBTF 0.2.0 (2025-07-16)

  • 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().

Full Changelog: v0.1.0...v0.2.0

CBTF 0.1.0

16 Jul 14:09
v0.1.0
5352bbc

Choose a tag to compare

Changes in CBTF 0.1.0 (2024-11-14)

Full Changelog: https://github.com/mcol/caught-by-the-fuzz/commits/v0.1.0