1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-05-28 08:02:40 -07:00
emacs/test/lisp/jsonrpc-resources/server-remote-during-sync-2.py
João Távora 36036e71c0 Jsonrpc: migrate more tests to Python subprocess fixtures
All tests now use 'jsonrpc--with-python-fixture' with a Python3
subprocess instead of the in-Emacs TCP server.  Changed the "harakiri"
method to be a request instead of a notification for to reduce chance of
"Sentinel hasn't run" warning.

The two in-Emacs-RPC-specific error tests ('errors-with--32601' and
'signals-an--32603-JSONRPC-error') are dropped with the fixture itself,
as the error paths they exercise are internal to the Emacs Lisp
dispatcher and have no direct Python equivalent.  They will have to be
re-done later on in other form.

* test/lisp/jsonrpc-resources/server-emacsrpc.py: New file.

* test/lisp/jsonrpc-resources/server-anxious-nested.py: Use new
  harakiri.

* test/lisp/jsonrpc-resources/server-emacsrpc.py: Use new harakiri.

* test/lisp/jsonrpc-resources/server-harakiri.py: Use new harakiri.

* test/lisp/jsonrpc-resources/server-remote-during-sync-1.py: Use new
  harakiri.

* test/lisp/jsonrpc-resources/server-remote-during-sync-2.py: Use new
  harakiri.

* test/lisp/jsonrpc-resources/server-remote-error.py: Use new harakiri.

* test/lisp/jsonrpc-resources/common.py (harakiri): New definition.

* test/lisp/jsonrpc-tests.el
(jsonrpc--with-python-fixture): Rework, move up.
(jsonrpc-connection-ready-p): Move up.
(jsonrpc--call-with-emacsrpc-fixture)
(jsonrpc--with-emacsrpc-fixture)
(errors-with--32601)
(signals-an--32603-JSONRPC-error): Remove.
(returns-3, times-out, doesnt-time-out, stretching-it-but-works)
(deferred-action-toolate, deferred-action-intime)
(deferred-action-complex-tests): Migrate to Python fixture.
(scontrol-remote-during-sync-1, scontrol-remote-during-sync-2)
(scontrol-anxious-nested, scontrol-remote-error)
(shutdown-clean-after-notification): Tweak.
2026-05-17 19:28:07 +01:00

40 lines
1.2 KiB
Python
Executable file

#!/usr/bin/env python3
"""Test server for scontrol-remote-during-sync-2.
Choreography (tests bug#80623):
client -> server: LR1 (id=1)
server -> client: RR1 (id=1000)
client -> server: response RR1 "rr1-ok"
server -> client: response LR1 "lr1-ok"
"""
import os
import sys
sys.path.insert(0, os.path.dirname(__file__))
from common import read_msg, write_msg, log, harakiri
def main():
while True:
msg = read_msg()
if msg is None:
break
mid = msg.get('id')
method = msg.get('method')
log(f'<- {method or "(response)"} id={mid}')
if harakiri(msg): break
elif method == 'LR1':
# Send RR1 request
write_msg({'jsonrpc': '2.0', 'id': 1000,
'method': 'RR1', 'params': {}})
log('-> RR1 id=1000')
# Wait for reply to RR1
resp = read_msg()
log(f'<- (response RR1) id={resp.get("id") if resp else None}')
# Only NOW answer LR1
write_msg({'jsonrpc': '2.0', 'id': mid, 'result': 'lr1-ok'})
log(f'-> (response LR1) id={mid}')
if __name__ == '__main__':
main()