Интегрирован 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
@@ -0,0 +1,94 @@
"""Тесты offline install_requirements (OTA)."""
from __future__ import annotations
import os
import tempfile
import unittest
from pathlib import Path
from unittest.mock import patch
from install_deps import UpdateDepsError, install_requirements, wheelhouse_has_packages
class InstallDepsOfflineTests(unittest.TestCase):
def setUp(self) -> None:
self._tmp = tempfile.mkdtemp(prefix="wesp-deps-")
self.root = Path(self._tmp)
(self.root / "requirements-prod.txt").write_text("Flask==2.3.3\n", encoding="utf-8")
self.wheels = self.root / "vendor" / "wheels"
self.wheels.mkdir(parents=True)
(self.wheels / "flask-2.3.3-py3-none-any.whl").write_bytes(b"x")
def tearDown(self) -> None:
import shutil
shutil.rmtree(self._tmp, ignore_errors=True)
@patch("install_deps.subprocess.check_call")
def test_offline_only_ignores_pypi_allow(self, mock_call) -> None:
install_requirements(self.root, offline_only=True)
cmd = mock_call.call_args[0][0]
self.assertIn("--no-index", cmd)
self.assertIn("--ignore-installed", cmd)
self.assertTrue(any("--find-links=" in str(a) for a in cmd))
@patch("install_deps.subprocess.check_call")
def test_offline_uses_wesp_venv(self, mock_call) -> None:
venv = self.root / "prod_venv"
bindir = venv / "bin"
bindir.mkdir(parents=True)
py = bindir / "python3"
py.write_text("#!/bin/sh\necho venv\n", encoding="utf-8")
py.chmod(0o755)
with patch.dict(os.environ, {"WESP_VENV": str(venv)}, clear=False):
install_requirements(self.root, offline_only=True)
cmd = mock_call.call_args[0][0]
self.assertEqual(cmd[0], str(py.resolve()))
@patch("install_deps.subprocess.check_call")
def test_offline_uses_wes_mac_python_when_present(self, mock_call) -> None:
layout = Path(self._tmp) / "layout"
app = layout / "wesp"
app.mkdir(parents=True)
(app / "requirements-prod.txt").write_text("Flask==2.3.3\n", encoding="utf-8")
wheels = app / "vendor" / "wheels"
wheels.mkdir(parents=True)
(wheels / "flask-2.3.3-py3-none-any.whl").write_bytes(b"x")
wes_mac = layout / "wes_mac" / "bin"
wes_mac.mkdir(parents=True)
py = wes_mac / "python3"
py.write_text("#!/bin/sh\necho venv\n", encoding="utf-8")
py.chmod(0o755)
with patch.dict(os.environ, {}, clear=True):
install_requirements(app, offline_only=True)
cmd = mock_call.call_args[0][0]
self.assertEqual(cmd[0], str(py.resolve()))
@patch("install_deps.subprocess.check_call")
def test_offline_only_with_wheels(self, mock_call) -> None:
install_requirements(self.root, offline_only=True)
mock_call.assert_called_once()
def test_offline_only_empty_wheelhouse_raises(self) -> None:
for f in self.wheels.glob("*"):
f.unlink()
self.assertFalse(wheelhouse_has_packages(self.wheels))
with self.assertRaises(UpdateDepsError):
install_requirements(self.root, offline_only=True)
@patch.dict(os.environ, {"WESP_OTA_UPDATE": "1"}, clear=False)
@patch("install_deps.subprocess.check_call")
def test_ota_env_forces_offline(self, mock_call) -> None:
install_requirements(self.root, offline_only=False)
cmd = mock_call.call_args[0][0]
self.assertIn("--no-index", cmd)
@patch("install_deps.subprocess.check_call", side_effect=__import__("subprocess").CalledProcessError(1, "pip"))
def test_pip_failure_raises_update_deps_error(self, _mock) -> None:
with self.assertRaises(UpdateDepsError):
install_requirements(self.root, offline_only=True)
if __name__ == "__main__":
unittest.main()