# Copyright (C) 2012-2021 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 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