mirror of
https://github.com/jrnl-org/jrnl.git
synced 2025-05-10 08:38:32 +02:00
87 lines
2.2 KiB
Python
87 lines
2.2 KiB
Python
# Copyright (C) 2012-2022 jrnl contributors
|
|
# License: https://www.gnu.org/licenses/gpl-3.0.html
|
|
|
|
import functools
|
|
import os
|
|
|
|
|
|
def does_directory_contain_files(file_list, directory_path):
|
|
if not os.path.isdir(directory_path):
|
|
return False
|
|
|
|
for file in file_list.split("\n"):
|
|
fullpath = directory_path + "/" + file
|
|
if not os.path.isfile(fullpath):
|
|
return False
|
|
|
|
return True
|
|
|
|
|
|
def does_directory_contain_n_files(directory_path, number):
|
|
count = 0
|
|
if not os.path.isdir(directory_path):
|
|
return False
|
|
|
|
files = [
|
|
f
|
|
for f in os.listdir(directory_path)
|
|
if os.path.isfile(os.path.join(directory_path, f))
|
|
]
|
|
count = len(files)
|
|
|
|
return int(number) == count
|
|
|
|
|
|
def parse_should_or_should_not(should_or_should_not):
|
|
if should_or_should_not == "should":
|
|
return True
|
|
elif should_or_should_not == "should not":
|
|
return False
|
|
else:
|
|
raise Exception(
|
|
"should_or_should_not valid values are 'should' or 'should not'"
|
|
)
|
|
|
|
|
|
def assert_equal_tags_ignoring_order(
|
|
actual_line, expected_line, actual_content, expected_content
|
|
):
|
|
actual_tags = set(tag.strip() for tag in actual_line[len("tags: ") :].split(","))
|
|
expected_tags = set(
|
|
tag.strip() for tag in expected_line[len("tags: ") :].split(",")
|
|
)
|
|
assert actual_tags == expected_tags, [
|
|
[actual_tags, expected_tags],
|
|
[expected_content, actual_content],
|
|
]
|
|
|
|
|
|
# @see: https://stackoverflow.com/a/65782539/569146
|
|
def get_nested_val(dictionary, path, *default):
|
|
try:
|
|
return functools.reduce(lambda x, y: x[y], path.split("."), dictionary)
|
|
except KeyError:
|
|
if default:
|
|
return default[0]
|
|
raise
|
|
|
|
|
|
# @see: https://stackoverflow.com/a/41599695/569146
|
|
def spy_wrapper(wrapped_function):
|
|
from unittest import mock
|
|
|
|
mock = mock.MagicMock()
|
|
|
|
def wrapper(self, *args, **kwargs):
|
|
mock(*args, **kwargs)
|
|
return wrapped_function(self, *args, **kwargs)
|
|
|
|
wrapper.mock = mock
|
|
return wrapper
|
|
|
|
|
|
def get_fixture(request, name, default=None):
|
|
result = default
|
|
if name in request.node.fixturenames:
|
|
result = request.getfixturevalue(name)
|
|
return result
|