Интегрирован wesp в сайт
CI / quality (push) Canceled after 0s

This commit is contained in:
влад
2026-07-17 12:57:18 +03:00
parent 5dfa06ddbe
commit 355c0ef9f1
883 changed files with 194576 additions and 177 deletions
+78
View File
@@ -0,0 +1,78 @@
"""Tests for update_verify."""
from __future__ import annotations
import tempfile
import unittest
from pathlib import Path
from unittest.mock import patch
from app.services.update_verify import (
requirements_changed,
run_smoke_test,
wheelhouse_covers_requirements,
)
class UpdateVerifyTests(unittest.TestCase):
def setUp(self) -> None:
self._tmp = tempfile.mkdtemp(prefix="wesp-verify-")
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\n", encoding="utf-8")
def tearDown(self) -> None:
import shutil
shutil.rmtree(self._tmp, ignore_errors=True)
def test_requirements_changed(self) -> None:
old = self.root / "old.txt"
new = self.root / "new.txt"
old.write_text("a\n", encoding="utf-8")
new.write_text("a\n", encoding="utf-8")
self.assertFalse(requirements_changed(old, new))
new.write_text("b\n", encoding="utf-8")
self.assertTrue(requirements_changed(old, new))
def test_wheelhouse_covers_ok(self) -> None:
(self.wheels / "flask-2.3.3-py3-none-any.whl").write_bytes(b"x")
ok, missing = wheelhouse_covers_requirements(self.req, self.wheels)
self.assertTrue(ok)
self.assertEqual(missing, [])
def test_wheelhouse_missing(self) -> None:
ok, missing = wheelhouse_covers_requirements(self.req, self.wheels)
self.assertFalse(ok)
self.assertTrue(missing)
def test_wheelhouse_uses_prod_not_dev_requirements(self) -> None:
"""requirements.txt с -r и pytest не ломает OTA-проверку wheelhouse."""
(self.root / "requirements.txt").write_text(
"-r requirements-prod.txt\npytest>=8.0.0,<9\n",
encoding="utf-8",
)
(self.root / "requirements-prod.txt").write_text("Flask==2.3.3\n", encoding="utf-8")
(self.wheels / "flask-2.3.3-py3-none-any.whl").write_bytes(b"x")
ok, missing = wheelhouse_covers_requirements(self.root / "requirements.txt", self.wheels)
self.assertTrue(ok, missing)
self.assertEqual(missing, [])
@patch("app.services.update_verify.subprocess.run")
def test_smoke_test_ok(self, mock_run) -> None:
mock_run.return_value = unittest.mock.Mock(returncode=0, stdout="", stderr="")
ok, msg = run_smoke_test(self.root)
self.assertTrue(ok)
@patch("app.services.update_verify.subprocess.run")
def test_smoke_test_fail(self, mock_run) -> None:
mock_run.return_value = unittest.mock.Mock(returncode=1, stdout="", stderr="boom")
ok, msg = run_smoke_test(self.root)
self.assertFalse(ok)
self.assertIn("boom", msg)
if __name__ == "__main__":
unittest.main()