mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-05-15 14:36:38 +00:00
e63c403623
* docs: simplex-chat-python design and implementation plan * bots: Python wire types codegen * simplex-chat-python: package scaffold * simplex-chat-python: native libsimplex loader * simplex-chat-python: async FFI wrappers * simplex-chat-python: ChatApi with 49 api methods * simplex-chat-python: Bot class with decorators and dispatch * simplex-chat-python: install CLI, example bot, README * simplex-chat-python: audit fixes * bots: regenerate API docs and types Catches up the markdown, TypeScript and Python codegen outputs with two upstream schema changes: - APIConnectPlan.connectionLink became optional (from sh/python-lib audit fixes); cmdString and EBNF syntax now reflect optional parameter. - APIAddGroupRelays command and CRGroupRelaysAdded/CRGroupRelaysAddFailed responses added in #6917 (relay management). The TS and markdown outputs were regenerated when #6917 landed but the Python types module only got the new entries with this regeneration. * core: refresh SQLite query plans after relay_inactive_at migration The M20260507_relay_inactive_at migration (#6917 / #6952) shifted the query plans that 'Save query plans' verifies. Regenerated via the test that owns those snapshots; no behavioral change. * bots: keep APIConnectPlan connectionLink as required parameter The prior audit-fixes commit changed the syntax expression to `Optional ...` because the Haskell field is `connectionLink :: Maybe AConnectionLink`. That misrepresents the API contract: the `Maybe` is purely an internal signal for link-parsing failure (the handler returns `CEInvalidConnReq` on `Nothing`), not API-level optionality. Callers MUST always pass a connection link. Revert the syntax expression to `Param "connectionLink"` and add a comment so the intent is preserved next time someone audits. Regenerates COMMANDS.md, commands.ts and _commands.py to match.
56 lines
1.6 KiB
Python
56 lines
1.6 KiB
Python
from unittest.mock import patch
|
|
import pytest
|
|
from simplex_chat._native import _platform_tag, _libs_url, _libname
|
|
|
|
|
|
@patch("sys.platform", "linux")
|
|
@patch("platform.machine", return_value="x86_64")
|
|
def test_platform_linux_x64(_):
|
|
assert _platform_tag() == "linux-x86_64"
|
|
|
|
|
|
@patch("sys.platform", "darwin")
|
|
@patch("platform.machine", return_value="arm64")
|
|
def test_platform_macos_arm64(_):
|
|
assert _platform_tag() == "macos-aarch64"
|
|
|
|
|
|
@patch("sys.platform", "win32")
|
|
@patch("platform.machine", return_value="AMD64")
|
|
def test_platform_windows_x64(_):
|
|
assert _platform_tag() == "windows-x86_64"
|
|
|
|
|
|
@patch("sys.platform", "freebsd")
|
|
@patch("platform.machine", return_value="x86_64")
|
|
def test_platform_unsupported(_):
|
|
with pytest.raises(RuntimeError, match="Unsupported"):
|
|
_platform_tag()
|
|
|
|
|
|
def test_libname_per_platform():
|
|
with patch("sys.platform", "linux"):
|
|
assert _libname() == "libsimplex.so"
|
|
with patch("sys.platform", "darwin"):
|
|
assert _libname() == "libsimplex.dylib"
|
|
with patch("sys.platform", "win32"):
|
|
assert _libname() == "libsimplex.dll"
|
|
|
|
|
|
@patch("simplex_chat._native._platform_tag", return_value="linux-x86_64")
|
|
def test_url_sqlite(_):
|
|
assert (
|
|
_libs_url("sqlite")
|
|
== "https://github.com/simplex-chat/simplex-chat-libs/releases/download/"
|
|
"v6.5.1/simplex-chat-libs-linux-x86_64.zip"
|
|
)
|
|
|
|
|
|
@patch("simplex_chat._native._platform_tag", return_value="linux-x86_64")
|
|
def test_url_postgres(_):
|
|
assert (
|
|
_libs_url("postgres")
|
|
== "https://github.com/simplex-chat/simplex-chat-libs/releases/download/"
|
|
"v6.5.1/simplex-chat-libs-linux-x86_64-postgres.zip"
|
|
)
|