69 lines
2.2 KiB
Python
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()
|