unitizer v1.4.6

0

Monthly downloads

0th

Percentile

Interactive R Unit Tests

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.

Readme

unitizeR - Interactive R Unit Tests

Project Status: WIP - Initial development is in progress, but there has not yet been a stable, usable release suitable for the public.

TL;DR

unitizer simplifies creating, reviewing, and debugging unit tests in R. To install:

install.packages('unitizer')

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:

library(unitizer)
demo(unitizer)

Or check out the screencast to see unitizer in action.

Why Another Testing Framework?

Automated Test Formalization

Are you tired of the deparse/dput then copy-paste R objects into test file dance, or do you use testthat::expect_equal_to_reference a lot?

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

Streamlined Debugging

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:

diff
example

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:

review
example

Fast Test Updates

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.

Usage

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 Extensions, except that we're storing the actual R objects and it is much easier to review them.

To use unitizer:

  • Write test expressions as you would when informally testing code on the command line, and save them to a file (e.g. "my_file_name.R")
  • Run unitize("my_file_name.R") and follow the prompts
  • Continue developing your package
  • Re-run 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.

Documentation

Acknowledgments

Thank you to:

About the Author

Brodie Gaslam is a hobbyist programmer based in the US East Coast.

Functions in unitizer

Name Description
as.character,unitizerChanges-method Print Out A Summary Of the Changes
unitizer_demo Demo Details and Helper Functions
as.expression,unitizerList-method Coerce to expression by returning items coerced to expressions
healEnvs Fix Environment Ancestries
unitizerGlobalBase-class Structures For Tracking Global Options
capture_output Capture Both StdOut and StdErr
set_unitizer Set and Retrieve Store Contents
show,unitizerChanges-method Print Out A Summary Of the Changes
desc One Line Description of Object
sizeUntz Utility To Examine Object Size
filename_to_storeid Create a Store ID from a Test File Name
$,unitizerItemTestsErrorsDiffs-method Subsetting Methods for unitizerItemTestsErrorsDiffs objects
conditionList Contains A List of Conditions
all.equal.condition Compare Conditions
testFuns Store Functions for New vs. Reference Test Comparisons
unitizerSection-class Contains Representation For a Section of Tests
all_eq Like all.equal but Returns Empty String If Not all.equal
cap_first Captalizes or Decapitalizes First Letter
unitizerState Tests and Session State
flattenUntz Reduce S4 objects Into Lists
infer_unitizer_location Infers Possible Unitizer Path From Context
getFun Utility Function
invalidateLs Clears ls Info and Marks as Invalid
repair_environments Repair Environment Chains
options_zero Set Options to Initial Zero State
length,unitizerChanges-method Return Sum of Total Changes
print.bullet Print Methods for UL and OL objects
length,unitizerSection-method Compute Length of a unitizerSection-class
unitizer_prompt Interactively Retrieve User Input
testthat_transcribe_file Transcribes a testtaht File Into unitizer Format
unitize Unitize an R Test Script
text_wrap Text Wrapping Utilities
unitizer_result Return Values and Related Methods for unitize Functions
testthat_translate_file Convert a testthat Test File to a unitizer
unitizerChanges-class Summary of Changes
unitizerList S4 Object To Implement Base List Methods
valid_names Make Valid Names
show,unitizerDummy-method Documentation Block for Internal S4 Methods
validate_pre_post Helper function for validations
run_ls Worker function to actually execute the `ls` work
unitizer_sect Define a unitizer Section
show.conditionList Prints A list of Conditions
sizeRDS Measure object size as an RDS
$.unitizerItem Retrieve Test Contents From Test Item
editCalls Edit Calls In Unitizer
unitizerTests-class Collections of Calls For Testing
mock_item Generates a Dummy Item For Use in Examples
nextItem,unitizerList-method Iterate through items of a unitizerList ObjectJK
unitizer_ls An `ls` Like Function
show,unitizerItemTestsErrorsDiff-method Show Method for unitizerItemTestsErrorsDiff objects
show,unitizerItemTestsErrorsDiffs-method Show Method for unitizerItemTestsErrorsDiffs objects
unitizer unitizer
unitizer.opts Unitizer Options
as.character.bullet Produce Character Vector Representation of Bullet Lists
No Results!

Vignettes of unitizer

Name
styles.css
u0_unitizer_index.Rmd
u1_intro.Rmd
u2_tests.Rmd
u3_interactive-env.Rmd
u4_reproducible-tests.Rmd
u5_miscellanous.Rmd
No Results!

Last month downloads

Details

VignetteBuilder knitr
License GPL (>= 2)
LazyData true
URL https://github.com/brodieG/unitizer
BugReports https://github.com/brodieG/unitizer/issues
Collate 'asciiml.R' 'capture.R' 'is.R' 'global.R' 'change.R' 'class_unions.R' 'list.R' 'conditions.R' 'item.R' 'deparse.R' 'text.R' 'item.sub.R' 'section.R' 'test.R' 'unitizer.R' 'exec.R' 'prompt.R' 'browse.struct.R' 'browse.R' 'demo.R' 'diff.R' 'faux_prompt.R' 'get.R' 'heal.R' 'load.R' 'ls.R' 'misc.R' 'search.R' 'options.R' 'onload.R' 'parse.R' 'rename.R' 'repairenvs.R' 'result.R' 'shims.R' 'size.R' 'state.R' 'state.compare.R' 'translate.R' 'unitize.R' 'unitize.core.R' 'unitizer-package.r' 'unitizer.add.R' 'upgrade.R'
RoxygenNote 6.0.1
NeedsCompilation no
Packaged 2019-01-27 20:29:59 UTC; bg
Repository CRAN
Date/Publication 2019-01-27 22:50:03 UTC

Include our badge in your README

[![Rdoc](http://www.rdocumentation.org/badges/version/unitizer)](http://www.rdocumentation.org/packages/unitizer)