nixos/prosody: fix broken tests

This commit is contained in:
Andrey Golovizin 2021-02-11 18:46:07 +01:00
parent 987955680f
commit 3fd5a41676
2 changed files with 25 additions and 3 deletions

View File

@ -85,7 +85,7 @@ in import ../make-test-python.nix {
server.succeed('prosodyctl status | grep "Prosody is running"') server.succeed('prosodyctl status | grep "Prosody is running"')
server.succeed("create-prosody-users") server.succeed("create-prosody-users")
client.succeed('send-message 2>&1 | grep "XMPP SCRIPT TEST SUCCESS"') client.succeed("send-message")
server.succeed("delete-prosody-users") server.succeed("delete-prosody-users")
''; '';
} }

View File

@ -23,8 +23,26 @@ class CthonTest(ClientXMPP):
def __init__(self, jid, password): def __init__(self, jid, password):
ClientXMPP.__init__(self, jid, password) ClientXMPP.__init__(self, jid, password)
self.add_event_handler("session_start", self.session_start) self.add_event_handler("session_start", self.session_start)
self.test_succeeded = False
async def session_start(self, event): async def session_start(self, event):
try:
# Exceptions in event handlers are printed to stderr but not
# propagated, they do not make the script terminate with a non-zero
# exit code. We use the `test_succeeded` flag as a workaround and
# check it later at the end of the script to exit with a proper
# exit code.
# Additionally, this flag ensures that this event handler has been
# actually run by ClientXMPP, which may well not be the case.
await self.test_xmpp_server()
self.test_succeeded = True
finally:
# Even if an exception happens in `test_xmpp_server()`, we still
# need to disconnect explicitly, otherwise the process will hang
# forever.
self.disconnect(wait=True)
async def test_xmpp_server(self):
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
self.send_presence() self.send_presence()
self.get_roster() self.get_roster()
@ -42,11 +60,12 @@ class CthonTest(ClientXMPP):
log.error("ERROR: Cannot run upload command. XEP_0363 seems broken") log.error("ERROR: Cannot run upload command. XEP_0363 seems broken")
sys.exit(1) sys.exit(1)
log.info('Upload success!') log.info('Upload success!')
# Test MUC # Test MUC
self.plugin['xep_0045'].join_muc('testMucRoom', 'cthon98', wait=True) # TODO: use join_muc_wait() after slixmpp 1.8.0 is released.
self.plugin['xep_0045'].join_muc('testMucRoom', 'cthon98')
log.info('MUC join success!') log.info('MUC join success!')
log.info('XMPP SCRIPT TEST SUCCESS') log.info('XMPP SCRIPT TEST SUCCESS')
self.disconnect(wait=True)
if __name__ == '__main__': if __name__ == '__main__':
@ -62,4 +81,7 @@ if __name__ == '__main__':
ct.register_plugin('xep_0045') ct.register_plugin('xep_0045')
ct.connect(("server", 5222)) ct.connect(("server", 5222))
ct.process(forever=False) ct.process(forever=False)
if not ct.test_succeeded:
sys.exit(1)
'' ''