feat(automation): weekly Forgejo package prune shell resolver (WP-0020)
Add forgejo_package_prune query, weekly activity-definition (disabled), State Hub evidence sink support for shell sources, and runbook notes.
This commit is contained in:
parent
a853cd3118
commit
5b6d9f4e95
7 changed files with 176 additions and 7 deletions
39
tests/test_forgejo_prune_context_resolver.py
Normal file
39
tests/test_forgejo_prune_context_resolver.py
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
from unittest import mock
|
||||
|
||||
from activity_core.context_resolvers.base import CONTEXT_RESOLVER_REGISTRY
|
||||
|
||||
|
||||
class _Completed:
|
||||
def __init__(self, payload: dict, returncode: int = 0, stderr: str = "") -> None:
|
||||
self.stdout = json.dumps(payload)
|
||||
self.stderr = stderr
|
||||
self.returncode = returncode
|
||||
|
||||
|
||||
def test_shell_resolver_runs_forgejo_package_prune(tmp_path, monkeypatch) -> None:
|
||||
script = tmp_path / "forgejo-package-prune"
|
||||
script.write_text("#!/usr/bin/env bash\necho '{}'\n", encoding="utf-8")
|
||||
script.chmod(0o755)
|
||||
payload = {
|
||||
"candidate_count": 2,
|
||||
"deleted_count": 0,
|
||||
"skipped_protected_count": 1,
|
||||
"errors": [],
|
||||
}
|
||||
|
||||
monkeypatch.setattr(
|
||||
"activity_core.context_resolvers.forgejo_prune.subprocess.run",
|
||||
lambda *args, **kwargs: _Completed(payload),
|
||||
)
|
||||
|
||||
result = CONTEXT_RESOLVER_REGISTRY["shell"]().resolve(
|
||||
"forgejo_package_prune",
|
||||
None,
|
||||
{"prune_script": str(script), "max_versions": 3, "apply": False},
|
||||
)
|
||||
|
||||
assert result["kind"] == "forgejo_package_prune"
|
||||
assert result["candidate_count"] == 2
|
||||
Loading…
Add table
Add a link
Reference in a new issue