Update tests
This commit is contained in:
77
tests/conftest.py
Normal file
77
tests/conftest.py
Normal file
@@ -0,0 +1,77 @@
|
||||
"""Shared pytest fixtures for cura-te-ipsum tests."""
|
||||
import os
|
||||
import random
|
||||
import string
|
||||
import tempfile
|
||||
import pytest
|
||||
|
||||
from curateipsum import backup as bk, fs
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def backup_dir(tmp_path):
|
||||
"""Provide a temporary backup directory."""
|
||||
return tmp_path / "backups"
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def source_dir(tmp_path):
|
||||
"""Provide a temporary source directory."""
|
||||
src = tmp_path / "source"
|
||||
src.mkdir()
|
||||
return src
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def add_backup(backup_dir):
|
||||
"""Factory fixture for creating test backups."""
|
||||
backup_dir.mkdir(parents=True, exist_ok=True)
|
||||
|
||||
def _add_backup(backup_name: str) -> fs.PseudoDirEntry:
|
||||
backup = fs.PseudoDirEntry(os.path.join(str(backup_dir), backup_name))
|
||||
os.mkdir(backup.path)
|
||||
bk.set_backup_marker(backup)
|
||||
|
||||
fd, path = tempfile.mkstemp(prefix="backup_file_", dir=backup.path)
|
||||
with open(fd, "w") as f:
|
||||
f.write(''.join(random.choices(string.printable, k=128)))
|
||||
return backup
|
||||
|
||||
return _add_backup
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def check_backup_not_empty():
|
||||
"""Helper to verify backup is not empty."""
|
||||
def _check(backup: fs.PseudoDirEntry) -> bool:
|
||||
return bool(os.listdir(backup.path))
|
||||
return _check
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def check_backups(backup_dir, check_backup_not_empty):
|
||||
"""Helper to verify expected backups exist."""
|
||||
def _check(expected_backups):
|
||||
backups_list = os.listdir(str(backup_dir))
|
||||
assert sorted(b.name for b in expected_backups) == sorted(backups_list)
|
||||
for b in expected_backups:
|
||||
assert check_backup_not_empty(b)
|
||||
return _check
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def run_cleanup(backup_dir):
|
||||
"""Helper to run cleanup_old_backups with default parameters."""
|
||||
def _run(**kwargs):
|
||||
cleanup_kwargs = {
|
||||
"backups_dir": str(backup_dir),
|
||||
"dry_run": False,
|
||||
"keep_all": None,
|
||||
"keep_daily": None,
|
||||
"keep_weekly": None,
|
||||
"keep_monthly": None,
|
||||
"keep_yearly": None,
|
||||
}
|
||||
cleanup_kwargs.update(**kwargs)
|
||||
bk.cleanup_old_backups(**cleanup_kwargs)
|
||||
return _run
|
||||
Reference in New Issue
Block a user