Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rec/tdir
🗃 Create, fill a temporary directory 🗃
https://github.com/rec/tdir
python tempfile temporary-directory testing
Last synced: 15 days ago
JSON representation
🗃 Create, fill a temporary directory 🗃
- Host: GitHub
- URL: https://github.com/rec/tdir
- Owner: rec
- License: mit
- Created: 2020-05-25T13:04:23.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-03-20T18:25:35.000Z (10 months ago)
- Last Synced: 2024-12-04T01:02:49.816Z (about 1 month ago)
- Topics: python, tempfile, temporary-directory, testing
- Language: Python
- Homepage: https://rec.github.io/tdir/
- Size: 676 KB
- Stars: 4
- Watchers: 3
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG
- Funding: FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# 🗃 tdir - create and fill a temporary directory 🗃
Run code inside a temporary directory filled with zero or more files.
Very convenient for writing tests: you can decorate individual tests or a whole
test suite.`tdir()` runs code in a temporary directory pre-filled with files: it can
either be used as a context manager, or a decorator for functions or classes.`tdir.fill()` is a tiny function that recursively fills a directory.
## Example: as a context manager
from pathlib import Path
import tdircwd = Path.cwd()
# Simplest invocation.
with tdir():
# Do a lot of things in a temporary directory# Everything is gone!
# With a single file
with tdir('hello') as td:
# The file `hello` is there
assert Path('hello').read_text() = 'hello\n'# We're in a temporary directory
assert td == Path.cwd()
assert td != cwd# Write some other file
Path('junk.txt').write_text('hello, world\n')# The temporary directory and the files are gone
assert not td.exists()
assert cwd == Path.cwd()# A more complex example:
#
with tdir(
'one.txt',
three='some information',
four=Path('existing/file'), # Copy a file into the tempdir
sub1={
'file.txt': 'blank lines\n\n\n\n',
'sub2': [
'a', 'b', 'c'
]
},
):
assert Path('one.txt').exists()
assert Path('four').read_text() == Path('/existing/file').read_text()
assert Path('sub1/sub2/a').exists()# All files gone!
## Example: as a decorator
from pathlib import Path
import tdir
import unittest@tdir
def my_function():
pass # my_function() always operates in a temporary directory# Decorate a TestCase so each test runs in a new temporary directory
# with two files
@tdir('a', foo='bar')
class MyTest(unittest.TestCast):
def test_something(self):
assert Path('a').read_text() = 'a\n'def test_something_else(self):
assert Path('foo').read_text() = 'bar\n'class MyTest2(unittest.TestCast):
# Decorate just one test in a unitttest
@tdir(foo='bar', baz=bytes(range(4))) # binary files are possible
def test_something(self):
assert Path('foo').read_text() = 'bar\n'
assert Path('baz').read_bytes() = bytes(range(4)))# Run test in an empty temporary directory
@tdir
def test_something_else(self):
assert not Path('a').exists()
assert Path().absolute() != self.ORIGINAL_PATHORIGINAL_PATH = Path().absolute()
### [API Documentation](https://rec.github.io/tdir#tdir--api-documentation)