Files
site/WESP_REL/tests/test_verify_release_deps.py
T
2026-07-17 12:57:18 +03:00

69 lines
2.2 KiB
Python

"""Тесты verify_release_deps.py."""
from __future__ import annotations
import subprocess
import sys
import tempfile
import unittest
from pathlib import Path
ROOT = Path(__file__).resolve().parent.parent
SCRIPTS = ROOT / "scripts"
class VerifyReleaseDepsTests(unittest.TestCase):
def setUp(self) -> None:
self._tmp = tempfile.mkdtemp(prefix="wesp-verify-deps-")
self.root = Path(self._tmp)
self.req = self.root / "requirements.txt"
self.wheels = self.root / "vendor" / "wheels"
self.wheels.mkdir(parents=True)
self.req.write_text("Flask==2.3.3\nwaitress==2.1.2\n", encoding="utf-8")
def tearDown(self) -> None:
import shutil
shutil.rmtree(self._tmp, ignore_errors=True)
def _run(self, *extra: str) -> subprocess.CompletedProcess:
cmd = [
sys.executable,
str(SCRIPTS / "verify_release_deps.py"),
"--req",
str(self.req),
"--wheels",
str(self.wheels),
*extra,
]
return subprocess.run(cmd, capture_output=True, text=True, cwd=str(ROOT))
def test_pass_with_matching_wheels(self) -> None:
(self.wheels / "flask-2.3.3-py3-none-any.whl").write_bytes(b"1")
(self.wheels / "waitress-2.1.2-py3-none-any.whl").write_bytes(b"1")
r = self._run()
self.assertEqual(r.returncode, 0, r.stderr)
def test_fail_missing_wheel(self) -> None:
(self.wheels / "flask-2.3.3-py3-none-any.whl").write_bytes(b"1")
r = self._run()
self.assertEqual(r.returncode, 1)
self.assertIn("waitress", r.stderr.lower())
def test_fail_empty_wheelhouse(self) -> None:
r = self._run()
self.assertEqual(r.returncode, 1)
self.assertIn("wheelhouse", r.stderr.lower())
def test_write_manifest(self) -> None:
(self.wheels / "flask-2.3.3-py3-none-any.whl").write_bytes(b"1")
(self.wheels / "waitress-2.1.2-py3-none-any.whl").write_bytes(b"1")
r = self._run("--write-manifest")
self.assertEqual(r.returncode, 0)
manifest = self.wheels / "manifest.json"
self.assertTrue(manifest.is_file())
if __name__ == "__main__":
unittest.main()