Browse Source

pytest: add test for a plugin which falls over outside a command.

This actually passes fine, but it's an interesting case to test.

Fixed-by: Darosior <darosior@protonmail.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
nifty/pset-pre
Rusty Russell 5 years ago
parent
commit
6441233d2b
  1. 31
      tests/plugins/fail_by_itself.py
  2. 15
      tests/test_plugin.py

31
tests/plugins/fail_by_itself.py

@ -0,0 +1,31 @@
#!/usr/bin/env python3
from pyln.client import Plugin
import os
import threading
import time
plugin = Plugin()
class FailThread(threading.Thread):
def __init__(self):
super().__init__()
self.start()
def run(self):
time.sleep(1)
print("Exiting!")
os._exit(1)
@plugin.init()
def init(options, configuration, plugin):
FailThread()
@plugin.method('failcmd')
def failcmd(plugin):
pass
plugin.run()

15
tests/test_plugin.py

@ -1218,3 +1218,18 @@ def test_replacement_payload(node_factory):
l1.rpc.pay(inv)
assert l2.daemon.wait_for_log("Attept to pay.*with wrong secret")
def test_plugin_fail(node_factory):
"""Test that a plugin which fails (not during a command)"""
plugin = os.path.join(os.path.dirname(__file__), 'plugins/fail_by_itself.py')
l1 = node_factory.get_node(options={"plugin": plugin})
time.sleep(2)
# It should clean up!
assert 'failcmd' not in [h['command'] for h in l1.rpc.help()['help']]
l1.rpc.plugin_start(plugin)
time.sleep(2)
# It should clean up!
assert 'failcmd' not in [h['command'] for h in l1.rpc.help()['help']]

Loading…
Cancel
Save