Simplifies regression tests by comparing objects produced by test code with earlier versions of those same objects. If objects are unchanged the tests pass, otherwise execution stops with error details. If in interactive mode, tests can be reviewed through the provided interactive environment.
unitizer simplifies creating, reviewing, and debugging unit tests in R. To install:
Please keep in mind this is an experimental framework that has been thoroughly tested by one person.
unitizer bakes in a lot of contextual help so you can get started without reading all the documentation. Try the demo to get an idea:
Or check out the screencast to see
unitizer in action.
Are you tired of the
dput then copy-paste R objects into test file
dance, or do you use
testthat::expect_equal_to_reference a lot?
unitizer you review function output at an interactive prompt as you
would with informal tests. You then store the value, conditions (e.g.
warnings, etc.), and environment for use as the reference values in formal
tests, all with a single keystroke.
Do you wish the nature of a test failure was more immediately obvious?
When tests fail, you are shown a proper diff so you can clearly identify how the test failed:
Do you wish that you could start debugging your failed tests without additional set-up work?
unitizer drops you in the test environment so you can debug why the test
failed without further ado:
Do you avoid improvements to your functions because that would require painstakingly updating many tests?
The diffs for the failed tests let you immediately confirm only what you intended changed. Then you can update each test with a single keystroke.
unitizer stores R expressions and the result of evaluating them so that it can
detect code regressions. This is akin to saving test output to a
.Rout.save file as documented in Writing R
except that we're storing the actual R objects and it is much easier to review
unitize("my_file_name.R")and follow the prompts
unitize("my_file_name.R"); if any tests fail you will be able to review and debug them in an interactive prompt
unitizer can run in a non-interactive mode for use with
R CMD check.
help(package="unitizer"), in particular
browseVignettes("unitizer")for a list of vignettes, or skip straight to the Introduction vignette
Thank you to:
Brodie Gaslam is a hobbyist programmer based in the US East Coast.
RNGversion()in internal tests due to changes to R sampling mechanism.
devtoolsas a suggests dependency (reported by @jimhester).
q()actually works now.
tryto avoid killing
test_dircalls to use
testthatversions greater than 0.1.2.
.Last.valuedoes not work
unitizersgenerated by later versions of the package in earlier version of the packages provided the object validates
Fixing CRAN submission errors.
First Release to CRAN.
Interim release to get changes over past year out on the master branch.
quit()by mistake you can now cancel that action before
unitize_dirwithout specifying any arguments (infer from working directory)
tools:rstudio, and many others
base.envnow unique for each
debugis usable again
Rdiff_objto run a
tools::Rdiffdirectly on two R objects
107, 106, 104, 103, 101, 99, 98, 94, 93, 90, 85, 84, 77, 74, 71, 67, 127, 115, 132, 134
unitizertranslation utilities (see
unitizeby default auto-preload files in subdir 'helper'
par.env(technically API breaking, but since no one is using this package yet...)
unitize_dirworks with empty dirs (#78)
reviewnow properly infers unitizer locations
unitizecan now infer partially specified test file names (in particular, will know to look in
parse_with_commentsno longer run in non-interactive mode (#63)
search_path_cleanupmore robust (#59)
get_text_capturetests added (#60)
editCallsand provides more comprehensive editing of calls (Issue #52)
get*functions, instead, access test details with
editFunNamesto allow user to modify stored calls in
unitizerso that tests can be re-used even if function names are changed
Doc updates; should have been part of 0.6.4, but was too rushed to push...
reviewmode (issue #43)
traceback()now works for
Minor release, no substantive changes.
unitizerno longer automatically modifies it through
upgradecleaned up and has tests now
pkg:::funno longer causes problems when checking for ignoredness
getno longer warns if
unitizerids don't match
unitize_dirallows you to run all tests in a directory (issue #24)
reviewallows you to review and drop tests from an existing
unitizerstore (issue #21)
unitize(..., force.update=TRUE)will overwrite unitizer even if there were no changes recorded (issue #19)
unitizenow runs with
Summary titles cleaned up, interative prompts made clearer, package reload warn conflicts quieted (d2fe594c747, #23)