mirror of
https://github.com/LukeHagar/ytdl-sub.git
synced 2025-12-06 12:57:44 +00:00
* [BACKEND] Error if arg after positional arg * working * dry-run default * remove unused code
65 lines
2.5 KiB
Python
65 lines
2.5 KiB
Python
import os
|
|
from pathlib import Path
|
|
from typing import List
|
|
|
|
from resources import REGENERATE_FIXTURES
|
|
from resources import RESOURCE_PATH
|
|
|
|
from ytdl_sub.utils.file_handler import FileHandlerTransactionLog
|
|
|
|
_TRANSACTION_LOG_SUMMARY_PATH = RESOURCE_PATH / "transaction_log_summaries"
|
|
|
|
|
|
def assert_transaction_log_matches(
|
|
output_directory: Path,
|
|
transaction_log: FileHandlerTransactionLog,
|
|
transaction_log_summary_file_name: str,
|
|
regenerate_transaction_log: bool = REGENERATE_FIXTURES,
|
|
):
|
|
"""
|
|
Parameters
|
|
----------
|
|
output_directory
|
|
Output directory the files are saved to
|
|
transaction_log
|
|
Transaction log to check
|
|
transaction_log_summary_file_name
|
|
Name if the transaction log summary to compare.
|
|
Lives in tests/e2e/resources/transaction_log_summaries
|
|
regenerate_transaction_log
|
|
USE WITH CAUTION - MANUALLY INSPECT CHANGED FILES TO ENSURE THEY LOOK GOOD!
|
|
Updates the file with the input transaction log. Should only be used to update
|
|
tests after an expected change is made.
|
|
"""
|
|
transaction_log_path = _TRANSACTION_LOG_SUMMARY_PATH / transaction_log_summary_file_name
|
|
summary = transaction_log.to_output_message(output_directory=output_directory)
|
|
|
|
# Write the expected summary file if regenerate is True
|
|
if regenerate_transaction_log:
|
|
os.makedirs(os.path.dirname(transaction_log_path), exist_ok=True)
|
|
with open(transaction_log_path, "w", encoding="utf-8") as summary_file:
|
|
summary_file.write(
|
|
transaction_log.to_output_message(output_directory="{output_directory}")
|
|
)
|
|
|
|
# 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=FileHandlerTransactionLog.format_path_str(output_directory)
|
|
)
|
|
|
|
# Split, ensure there are the same number of new lines
|
|
summary_lines: List[str] = summary.split("\n")
|
|
expected_summary_lines: List[str] = expected_summary.split("\n")
|
|
print(summary_lines)
|
|
print(expected_summary_lines)
|
|
assert len(summary_lines) == len(
|
|
expected_summary_lines
|
|
), f"Summary number of lines differ: {len(summary_lines) != len(expected_summary_lines)}"
|
|
|
|
# Ensure each line equals
|
|
for idx in range(len(summary_lines)):
|
|
line = summary_lines[idx]
|
|
expected_line = expected_summary_lines[idx]
|
|
assert line == expected_line, f"Summary line {idx} differs: '{line}' != '{expected_line}'"
|