testutil: extrace new make_fake_tree() helper

Extract a new helper `make_fake_tree()` that generalizes the existing
helper `make_fake_input_tree()`. The later will always create the
content under `{basedir}/tree` which is convinient for input tree
based tests but too specialized when using it in different contexts.

The existing `make_fake_input_tree()` is preserved unchanged and
becomes just a tiny wrapper.
This commit is contained in:
Michael Vogt 2023-12-15 20:32:33 +01:00 committed by Brian C. Lane
parent 25d198da3c
commit ad8fd2f532
2 changed files with 31 additions and 10 deletions

View file

@ -16,7 +16,7 @@ def assert_dict_has(v, keys, expected_value):
assert v == expected_value
def make_fake_input_tree(tmpdir, fake_content: dict) -> str:
def make_fake_tree(basedir, fake_content: dict):
"""Create a directory tree of files with content.
Call it with:
@ -24,10 +24,17 @@ def make_fake_input_tree(tmpdir, fake_content: dict) -> str:
filename paths will have their parents created as needed, under tmpdir.
"""
basedir = os.path.join(tmpdir, "tree")
for path, content in fake_content.items():
dirp, name = os.path.split(os.path.join(basedir, path.lstrip("/")))
os.makedirs(dirp, exist_ok=True)
with open(os.path.join(dirp, name), "w", encoding="utf-8") as fp:
fp.write(content)
return basedir
def make_fake_input_tree(tmpdir, fake_content: dict) -> str:
"""
Wrapper around make_fake_tree for "input trees"
"""
basedir = tmpdir / "tree"
make_fake_tree(basedir, fake_content)
return os.fspath(basedir)