diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/test_special_iocommands.py | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/tests/test_special_iocommands.py b/tests/test_special_iocommands.py new file mode 100644 index 0000000..ec60163 --- /dev/null +++ b/tests/test_special_iocommands.py @@ -0,0 +1,59 @@ +import os +import tempfile + +import pytest + +import litecli.packages.special + + +def test_once_command(): + with pytest.raises(TypeError): + litecli.packages.special.execute(None, ".once") + + with pytest.raises(OSError): + litecli.packages.special.execute(None, ".once /proc/access-denied") + + litecli.packages.special.write_once("hello world") # write without file set + # keep Windows from locking the file with delete=False + with tempfile.NamedTemporaryFile(delete=False) as f: + litecli.packages.special.execute(None, ".once " + f.name) + litecli.packages.special.write_once("hello world") + if os.name == "nt": + assert f.read() == b"hello world\r\n" + else: + assert f.read() == b"hello world\n" + + litecli.packages.special.execute(None, ".once -o " + f.name) + litecli.packages.special.write_once("hello world line 1") + litecli.packages.special.write_once("hello world line 2") + f.seek(0) + if os.name == "nt": + assert f.read() == b"hello world line 1\r\nhello world line 2\r\n" + else: + assert f.read() == b"hello world line 1\nhello world line 2\n" + # delete=False means we should try to clean up + try: + if os.path.exists(f.name): + os.remove(f.name) + except Exception as e: + print(f"An error occurred while attempting to delete the file: {e}") + + +def test_pipe_once_command(): + with pytest.raises(IOError): + litecli.packages.special.execute(None, "\\pipe_once") + + with pytest.raises(OSError): + litecli.packages.special.execute(None, "\\pipe_once /proc/access-denied") + + if os.name == "nt": + litecli.packages.special.execute(None, '\\pipe_once python -c "import sys; print(len(sys.stdin.read().strip()))"') + litecli.packages.special.write_pipe_once("hello world") + litecli.packages.special.unset_pipe_once_if_written() + else: + with tempfile.NamedTemporaryFile() as f: + litecli.packages.special.execute(None, "\\pipe_once tee " + f.name) + litecli.packages.special.write_pipe_once("hello world") + litecli.packages.special.unset_pipe_once_if_written() + f.seek(0) + assert f.read() == b"hello world\n" |