[−][src]Crate testdir
Semi-persistent, scoped test directories
This module provides a convenient way to have an empty directory for tests which can be inspected after the test run in a predicatable location. On subsequent test runs the directory trees of previous runs will be cleaned up to keep the total number of directories limited.
Quickstart
mod tests { use std::path::PathBuf; use testdir::testdir; #[test] fn test_write() { let dir: PathBuf = testdir!(); let path = dir.join("hello.txt"); std::fs::write(&path, "hi there").ok(); assert!(path.exists()); } #[test] fn test_nonexisting() { let dir: PathBuf = testdir!(); let path = dir.join("not-here.txt"); assert!(!path.exists()); } }
If it does not yet exist this will create a directory called rstest-of-$USER
in you
system's temporary directory. Inside there you will find subdirectories named after
your crate name and with a number suffix which increases each time your run the tests.
There is also a -current
suffix which symlinks to the most recent numbered directory.
Inside the numbered directory you will find a directory structure resembling your
crate's modules structure. For example if the above tests are in lib.rs
of a crate
called mycrate
, than on my UNIX system it looks like this:
$ tree /tmp/rstest-of-flub/
/tmp/rstest-of-flub/
+- mycrate-0/
| +- mycrate/
| +- tests/
| +- test_nonexisting/
| +- test_write/
| +- hello.txt
+- testdir-current -> /tmp/rstest-of-flub/mycrate-0
Macros
init_testdir | Initialises the global |
testdir | Creates a test directory at the requested scope. |
Structs
NumberedDir | A sequentially numbered directory. |
NumberedDirBuilder | Builder to create a |
NumberedDirIter | Iterator of |
Constants
KEEP_DEFAULT | The default number of test directories retained by |
ROOT_DEFAULT | Default to build the |
Functions
with_testdir | Executes a function passing the global |