Crates.io | test-temp-dir |
lib.rs | test-temp-dir |
version | 0.3.0 |
source | src |
created_at | 2024-01-26 01:07:55.695917 |
updated_at | 2024-09-30 15:58:26.006088 |
description | Temporary directories for use in tests |
homepage | https://gitlab.torproject.org/tpo/core/arti/-/wikis/home |
repository | https://gitlab.torproject.org/tpo/core/arti.git/ |
max_upload_size | |
id | 1114968 |
size | 17,824 |
Temp directories in tests
Improves on
tempdir
by adding several new features for testing:
The principal entrypoint is [test_temp_dir!
]
which returns a [TestTempDir
].
The behaviour is influenced by TEST_TEMP_RETAIN
:
0
(or unset): use a temporary directory in TMPDIR
or /tmp
and try to delete it after the test completes
(equivalent to using [tempfile::TempDir
]).
1
: use the directory target/test/crate::module::function
.
Delete and recreate it on entry to the test, but do not delete it afterwards.
On Windows, ,
is used to replace ::
since ::
cannot appear in filenames.
Pathname starting with /
or .
: like 1
,
but the supplied path is used instead of target/test
.
This is a crate for use in tests. When invoked, it will print a message to stdout about the test directory.
When using raw [tempfile
], or the untracked
methods in this crate,
it is easy to write test cases where the temporary directory might be deleted
while paths referring to it are still stored and ready for use
(for example in objects such as tor_keymgr::KeyMgr
or from tor_persist
).
Consequences would include the tests trying to refer to the now-deleted directory; in principle, this might even constitute a vulnerability, since an attacker might be able to replace the deleted directory with malicious data, and then the test case might read it!
The problem might even go undetected if the test case is such that "file not found" counts as a pass.
This can only happen if the TempDir
or [TestTempDir
] object is dropped too early.
The principal APIs in this crate use Rust lifetimes to help prevent that:
the temporary directory path is not directly accessible in 'static
form.
This is a crate for use in tests. Most error conditions will cause a panic.
tempfile
:
Underlying facility for raw temporary directories
with auto-deletion;
dependency of this crate.
temp_testdir
:
Similar to this crate, but rather less sophisticated.
Doesn't have the lifetime-based API,
and has less predictable filenames.