working dir e2e fixture

This commit is contained in:
Jesse Bannon 2022-11-30 10:13:15 -08:00
parent 959c5dfc9d
commit 8cf2507952
3 changed files with 36 additions and 35 deletions

View file

@ -1,7 +1,6 @@
import contextlib import contextlib
import json import json
import logging import logging
import shutil
import tempfile import tempfile
from typing import Any from typing import Any
from typing import Callable from typing import Callable
@ -10,12 +9,14 @@ from typing import List
from unittest.mock import patch from unittest.mock import patch
import pytest import pytest
from expected_download import _get_files_in_directory
from ytdl_sub.subscriptions.subscription_download import SubscriptionDownload
from ytdl_sub.utils.logger import Logger from ytdl_sub.utils.logger import Logger
logger = Logger.get("test")
@pytest.fixture
def working_directory() -> str:
with tempfile.TemporaryDirectory() as temp_dir:
yield temp_dir
@pytest.fixture() @pytest.fixture()
@ -24,31 +25,6 @@ def output_directory():
yield temp_dir yield temp_dir
@pytest.fixture
def working_directory() -> str:
"""
Any time the working directory is used, ensure no files remain on cleaning it up
"""
with tempfile.TemporaryDirectory() as temp_dir:
def _assert_working_directory_empty(self, is_error: bool):
files = [str(file_path) for file_path in _get_files_in_directory(temp_dir)]
num_files = len(files)
shutil.rmtree(temp_dir)
if not is_error:
if num_files > 0:
logger.error("left-over files in working dir:\n%s", "\n".join(files))
assert num_files == 0
with patch.object(
SubscriptionDownload,
"_delete_working_directory",
new=_assert_working_directory_empty,
):
yield temp_dir
@contextlib.contextmanager @contextlib.contextmanager
def assert_debug_log(logger: logging.Logger, expected_message: str): def assert_debug_log(logger: logging.Logger, expected_message: str):
""" """

View file

@ -1,4 +1,5 @@
import json import json
import shutil
import sys import sys
import tempfile import tempfile
from typing import List from typing import List
@ -6,13 +7,43 @@ from typing import Tuple
from unittest.mock import patch from unittest.mock import patch
import pytest import pytest
from expected_download import _get_files_in_directory
from ytdl_sub.cli.main import main from ytdl_sub.cli.main import main
from ytdl_sub.config.config_file import ConfigFile from ytdl_sub.config.config_file import ConfigFile
from ytdl_sub.subscriptions.subscription import Subscription from ytdl_sub.subscriptions.subscription import Subscription
from ytdl_sub.subscriptions.subscription_download import SubscriptionDownload
from ytdl_sub.utils.file_handler import FileHandlerTransactionLog from ytdl_sub.utils.file_handler import FileHandlerTransactionLog
from ytdl_sub.utils.logger import Logger
from ytdl_sub.utils.yaml import load_yaml from ytdl_sub.utils.yaml import load_yaml
logger = Logger.get("test")
@pytest.fixture
def working_directory() -> str:
"""
Any time the working directory is used, ensure no files remain on cleaning it up
"""
with tempfile.TemporaryDirectory() as temp_dir:
def _assert_working_directory_empty(self, is_error: bool):
files = [str(file_path) for file_path in _get_files_in_directory(temp_dir)]
num_files = len(files)
shutil.rmtree(temp_dir)
if not is_error:
if num_files > 0:
logger.error("left-over files in working dir:\n%s", "\n".join(files))
assert num_files == 0
with patch.object(
SubscriptionDownload,
"_delete_working_directory",
new=_assert_working_directory_empty,
):
yield temp_dir
@pytest.fixture() @pytest.fixture()
def music_video_config_path(): def music_video_config_path():

View file

@ -24,12 +24,6 @@ from ytdl_sub.entries.variables.kwargs import UPLOAD_DATE
from ytdl_sub.entries.variables.kwargs import WEBPAGE_URL from ytdl_sub.entries.variables.kwargs import WEBPAGE_URL
@pytest.fixture
def working_directory() -> str:
with tempfile.TemporaryDirectory() as temp_dir:
yield temp_dir
@pytest.fixture @pytest.fixture
def subscription_name(working_directory) -> str: def subscription_name(working_directory) -> str:
name = "subscription_test" name = "subscription_test"