Split the three oversized test files into support modules and topic files, evaluate the rmdir dir_fd capability once at import, and drop unused imports. Claude-Session: https://claude.ai/code/session_01Agoc9bRVE9KL7mmWtey9Vq
43 lines
950 B
Python
43 lines
950 B
Python
from __future__ import annotations
|
|
|
|
import os
|
|
from pathlib import Path
|
|
|
|
|
|
from elydora.plugins import _transaction
|
|
|
|
|
|
def write_source(path: Path, source: str) -> None:
|
|
path.write_bytes(source.encode("utf-8"))
|
|
|
|
|
|
def make_change(
|
|
path: Path,
|
|
original: str | None,
|
|
next_source: str | None,
|
|
mode: int = 0o600,
|
|
enforce_mode: bool = False,
|
|
) -> _transaction.FileChange:
|
|
change = _transaction.source_change(
|
|
str(path),
|
|
path.name,
|
|
original,
|
|
next_source,
|
|
mode,
|
|
enforce_mode=enforce_mode,
|
|
)
|
|
assert change is not None
|
|
return change
|
|
|
|
|
|
def transaction_subprocess_environment(home: Path) -> dict[str, str]:
|
|
environment = os.environ.copy()
|
|
environment["HOME"] = str(home)
|
|
environment["USERPROFILE"] = str(home)
|
|
return environment
|
|
|
|
|
|
def swap_directory(parent: Path, backup: Path, redirected: Path) -> None:
|
|
parent.rename(backup)
|
|
redirected.rename(parent)
|