unit tests almost passing
This commit is contained in:
parent
d1705e3942
commit
b6af2c8de7
6 changed files with 45 additions and 10 deletions
|
|
@ -7,6 +7,8 @@ from typing import Optional
|
|||
from yt_dlp.utils import sanitize_filename
|
||||
|
||||
from ytdl_sub.entries.entry import Entry
|
||||
from ytdl_sub.validators.file_path_validators import OverridesStringFormatterValidatorFilePathValidator, \
|
||||
StringFormatterFilePathValidator
|
||||
from ytdl_sub.validators.strict_dict_validator import StrictDictValidator
|
||||
from ytdl_sub.validators.string_datetime import StringDatetimeValidator
|
||||
from ytdl_sub.validators.string_formatter_validators import DictFormatterValidator
|
||||
|
|
@ -221,19 +223,19 @@ class OutputOptions(StrictDictValidator):
|
|||
|
||||
# Output directory should resolve without any entry variables.
|
||||
# This is to check the directory for any download-archives before any downloads begin
|
||||
self._output_directory: OverridesStringFormatterValidator = self._validate_key(
|
||||
key="output_directory", validator=OverridesStringFormatterValidator
|
||||
self._output_directory = self._validate_key(
|
||||
key="output_directory", validator=OverridesStringFormatterValidatorFilePathValidator
|
||||
)
|
||||
|
||||
# file name and thumbnails however can use entry variables
|
||||
self._file_name: StringFormatterValidator = self._validate_key(
|
||||
key="file_name", validator=StringFormatterValidator
|
||||
self._file_name = self._validate_key(
|
||||
key="file_name", validator=StringFormatterFilePathValidator
|
||||
)
|
||||
self._thumbnail_name = self._validate_key_if_present(
|
||||
key="thumbnail_name", validator=StringFormatterValidator
|
||||
key="thumbnail_name", validator=StringFormatterFilePathValidator
|
||||
)
|
||||
self._info_json_name = self._validate_key_if_present(
|
||||
key="info_json_name", validator=StringFormatterValidator
|
||||
key="info_json_name", validator=StringFormatterFilePathValidator
|
||||
)
|
||||
|
||||
self._maintain_download_archive = self._validate_key_if_present(
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ from ytdl_sub.utils.xml import XmlElement
|
|||
from ytdl_sub.utils.xml import to_max_3_byte_utf8_dict
|
||||
from ytdl_sub.utils.xml import to_max_3_byte_utf8_string
|
||||
from ytdl_sub.utils.xml import to_xml
|
||||
from ytdl_sub.validators.file_path_validators import StringFormatterFilePathValidator
|
||||
from ytdl_sub.validators.nfo_validators import NfoTagsValidator
|
||||
from ytdl_sub.validators.string_formatter_validators import DictFormatterValidator
|
||||
from ytdl_sub.validators.string_formatter_validators import StringFormatterValidator
|
||||
|
|
@ -46,7 +47,7 @@ class SharedNfoTagsOptions(PluginOptions):
|
|||
super().__init__(name, value)
|
||||
|
||||
self._nfo_name = self._validate_key_if_present(
|
||||
key="nfo_name", validator=StringFormatterValidator
|
||||
key="nfo_name", validator=StringFormatterFilePathValidator
|
||||
)
|
||||
self._nfo_root = self._validate_key_if_present(
|
||||
key="nfo_root", validator=StringFormatterValidator
|
||||
|
|
@ -57,7 +58,7 @@ class SharedNfoTagsOptions(PluginOptions):
|
|||
).value
|
||||
|
||||
@property
|
||||
def nfo_name(self) -> StringFormatterValidator:
|
||||
def nfo_name(self) -> StringFormatterFilePathValidator:
|
||||
"""
|
||||
The NFO file name.
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ from ytdl_sub.plugins.plugin import PluginOptions
|
|||
from ytdl_sub.utils.file_handler import FileHandler
|
||||
from ytdl_sub.utils.file_handler import FileMetadata
|
||||
from ytdl_sub.utils.logger import Logger
|
||||
from ytdl_sub.validators.file_path_validators import StringFormatterFilePathValidator
|
||||
from ytdl_sub.validators.string_formatter_validators import StringFormatterValidator
|
||||
from ytdl_sub.validators.string_select_validator import StringSelectValidator
|
||||
from ytdl_sub.validators.validators import BoolValidator
|
||||
|
|
@ -58,7 +59,7 @@ class SubtitleOptions(PluginOptions):
|
|||
def __init__(self, name, value):
|
||||
super().__init__(name, value)
|
||||
self._subtitles_name = self._validate_key_if_present(
|
||||
key="subtitles_name", validator=StringFormatterValidator
|
||||
key="subtitles_name", validator=StringFormatterFilePathValidator
|
||||
)
|
||||
self._subtitles_type = self._validate_key_if_present(
|
||||
key="subtitles_type", validator=SubtitlesTypeValidator, default="srt"
|
||||
|
|
|
|||
|
|
@ -155,6 +155,15 @@ class FileHandlerTransactionLog:
|
|||
Tracks file 'transactions' performed by a FileHandler
|
||||
"""
|
||||
|
||||
@classmethod
|
||||
def format_path_str(cls, path_str: Path | str) -> str:
|
||||
"""
|
||||
Returns
|
||||
-------
|
||||
str formatted to always look like a unix string
|
||||
"""
|
||||
return str(path_str).replace(os.sep, '/')
|
||||
|
||||
def __init__(self):
|
||||
self.files_created: Dict[str, FileMetadata] = {}
|
||||
self.files_modified: Dict[str, FileMetadata] = {}
|
||||
|
|
@ -241,6 +250,10 @@ class FileHandlerTransactionLog:
|
|||
file_directory = os.path.dirname(Path(output_directory) / file_path)
|
||||
file_name = os.path.basename(Path(output_directory) / file_path)
|
||||
|
||||
# Format file directories/names to always look like unix
|
||||
file_directory = cls.format_path_str(file_directory)
|
||||
file_name = cls.format_path_str(file_name)
|
||||
|
||||
directory_set[file_directory][file_name] = file_metadata
|
||||
|
||||
lines: List[str] = [file_set_title, "-" * 40]
|
||||
|
|
|
|||
18
src/ytdl_sub/validators/file_path_validators.py
Normal file
18
src/ytdl_sub/validators/file_path_validators.py
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
import os
|
||||
from typing import Dict
|
||||
|
||||
from ytdl_sub.validators.string_formatter_validators import StringFormatterValidator, OverridesStringFormatterValidator
|
||||
|
||||
|
||||
class StringFormatterFilePathValidator(StringFormatterValidator):
|
||||
_expected_value_type_name = "filepath"
|
||||
|
||||
def apply_formatter(self, variable_dict: Dict[str, str]) -> str:
|
||||
return os.path.relpath(super().apply_formatter(variable_dict))
|
||||
|
||||
|
||||
class OverridesStringFormatterValidatorFilePathValidator(OverridesStringFormatterValidator):
|
||||
_expected_value_type_name = "static filepath"
|
||||
|
||||
def apply_formatter(self, variable_dict: Dict[str, str]) -> str:
|
||||
return os.path.relpath(super().apply_formatter(variable_dict))
|
||||
|
|
@ -43,7 +43,7 @@ def assert_transaction_log_matches(
|
|||
|
||||
# Read the expected summary file
|
||||
with open(transaction_log_path, "r", encoding="utf-8") as summary_file:
|
||||
expected_summary = summary_file.read().format(output_directory=output_directory)
|
||||
expected_summary = summary_file.read().format(output_directory=FileHandlerTransactionLog.format_path_str(output_directory))
|
||||
|
||||
# Split, ensure there are the same number of new lines
|
||||
summary_lines: List[str] = summary.split("\n")
|
||||
|
|
|
|||
Loading…
Reference in a new issue