Browse Source

pytest: test passing utf8 into and out of plugin JSON.

We should be able to pass UTF-8 strings to and from plugins without
python turning them into JSON-\u escapes.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
issue-2504
Rusty Russell 6 years ago
committed by Christian Decker
parent
commit
5f437de771
  1. 14
      tests/plugins/utf8.py
  2. 19
      tests/test_plugin.py

14
tests/plugins/utf8.py

@ -0,0 +1,14 @@
#!/usr/bin/env python3
from lightning import Plugin
plugin = Plugin()
@plugin.method("utf8")
def echo(plugin, utf8):
assert '\\u' not in utf8
return {'utf8': utf8}
plugin.run()

19
tests/test_plugin.py

@ -188,3 +188,22 @@ def test_async_rpcmethod(node_factory, executor):
l1.rpc.asyncflush(42)
assert [r.result() for r in results] == [42] * len(results)
@pytest.mark.xfail(strict=True)
def test_utf8_passthrough(node_factory, executor):
l1 = node_factory.get_node(options={'plugin': 'tests/plugins/utf8.py',
'log-level': 'io'})
# This works because Python unmangles.
res = l1.rpc.call('utf8', ['ナンセンス 1杯'])
assert '\\u' not in res['utf8']
assert res['utf8'] == 'ナンセンス 1杯'
# Now, try native.
out = subprocess.check_output(['cli/lightning-cli',
'--lightning-dir={}'
.format(l1.daemon.lightning_dir),
'utf8', 'ナンセンス 1杯']).decode('utf-8')
assert '\\u' not in out
assert out == '{"utf8": "ナンセンス 1杯"}\n'

Loading…
Cancel
Save