From 0d5344174fee90a3cdd5c3aa041171ff50111bae Mon Sep 17 00:00:00 2001 From: Itamar Turner-Trauring Date: Fri, 21 May 2021 11:57:32 -0400 Subject: [PATCH] First integration test for put/get. --- integration/test_get_put.py | 51 +++++++++++++++++++++++++++++++++++++ newsfragments/3715.minor | 0 2 files changed, 51 insertions(+) create mode 100644 integration/test_get_put.py create mode 100644 newsfragments/3715.minor diff --git a/integration/test_get_put.py b/integration/test_get_put.py new file mode 100644 index 000000000..16df70d38 --- /dev/null +++ b/integration/test_get_put.py @@ -0,0 +1,51 @@ +""" +Integration tests for getting and putting files, including reading from stdin +and stdout. +""" + +from subprocess import Popen, PIPE + +import pytest + +from .util import run_in_thread, cli + +DATA = b"abc123 this is not utf-8 decodable \xff\x00\x33 \x11" +try: + DATA.decode("utf-8") +except UnicodeDecodeError: + pass # great, what we want +else: + raise ValueError("BUG, the DATA string was decoded from UTF-8") + + +@pytest.fixture(scope="session") +def get_put_alias(alice): + cli(alice, "create-alias", "getput") + + +def read_bytes(path): + with open(path, "rb") as f: + return f.read() + + +@run_in_thread +def test_put_from_stdin(alice, get_put_alias, tmpdir): + """ + It's possible to upload a file via `tahoe put`'s STDIN, and then download + it to a file. + """ + tempfile = str(tmpdir.join("file")) + p = Popen( + ["tahoe", "--node-directory", alice.node_dir, "put", "-", "getput:fromstdin"], + stdin=PIPE + ) + p.stdin.write(DATA) + p.stdin.close() + assert p.wait() == 0 + + cli(alice, "get", "getput:fromstdin", tempfile) + assert read_bytes(tempfile) == DATA + + +def test_get_from_stdin(): + pass diff --git a/newsfragments/3715.minor b/newsfragments/3715.minor new file mode 100644 index 000000000..e69de29bb