Test Utilities
_Test Utilities_
_test_
This collection provides one file:
_test.ss_: utilities for unit testing
======================================================================
test.ss
-------
> (in-new-directory dir e1 e2 ...) :: syntax
A special form that creates a new directory with the path specified by `dir' and
evaluates the subexpressions with the value of the _current-directory_ parameter
set to the new directory for the duration of the evaluation. After evaluation
terminates, either by completing normally, raising an exception, or invoking a
continuation, if the value of the `keep-new-directories?' is #f, the temporary
directory is deleted.
Temporary directories created by further invocations of `in-new-directory'
during the extent of the evaluation are *not* deleted, so that they may be
accessed during the test.
You can prevent any directories from being deleted by wrapping a top-level
instance of `in-new-directory' with
(parameterize ([keep-new-directories #t])
...)
> keep-new-directories? :: (parameterof boolean)
When the evaluation of an instance of the `in-new-directory' form terminates, it
checks the current value of this parameter to determine whether to delete the
temporary directory it created.
This parameter is initially set to #f, so that at the top level of any
particular test, the entire directory tree created by `in-new-directory' will be
deleted. It is set to #t for all subsequent tests nested within an initial
test.
WARNING --------------------------------------------------------------
Note that if you capture the continuation during the extent of an
`in-new-directory' and reinvoke it after its initial evaluation has terminated,
all bets are off. In particular, the directory will have already been deleted.
EXAMPLE --------------------------------------------------------------
(in-new-directory "sandbox"
(in-new-directory "subdir-1"
;; make a bunch of files ...
)
(in-new-directory "subdir-2"
;; make a bunch more files ...
)
... (directory-list "subdir-1") ...
... (directory-list "subdir-1") ...
...)
(directory-exists? "sandbox")
=>
#f