aboutsummaryrefslogtreecommitdiffstats
path: root/test/test_deferred_write_error.py
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2021-10-09 13:44:31 -0400
committerDavid Robillard <d@drobilla.net>2022-01-28 21:57:07 -0500
commitcbf01be4126cbc0f6d80364a7e0b6ad777a7d8ae (patch)
tree20cd2919e0d4c47caa346123c5701daa70a05ac3 /test/test_deferred_write_error.py
parent5ea7c0d763685c23dc6933e273dfa11eec5bec14 (diff)
downloadserd-cbf01be4126cbc0f6d80364a7e0b6ad777a7d8ae.tar.gz
serd-cbf01be4126cbc0f6d80364a7e0b6ad777a7d8ae.tar.bz2
serd-cbf01be4126cbc0f6d80364a7e0b6ad777a7d8ae.zip
Fix handling of deferred write errors that happen when closing
Diffstat (limited to 'test/test_deferred_write_error.py')
-rw-r--r--test/test_deferred_write_error.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/test/test_deferred_write_error.py b/test/test_deferred_write_error.py
new file mode 100644
index 00000000..4005d570
--- /dev/null
+++ b/test/test_deferred_write_error.py
@@ -0,0 +1,31 @@
+#!/usr/bin/env python3
+
+"""Test errors that only really happen when the output file is closed."""
+
+import argparse
+import sys
+import shlex
+import subprocess
+import os
+
+parser = argparse.ArgumentParser(description=__doc__)
+
+parser.add_argument("--tool", default="tools/serd-pipe", help="executable")
+parser.add_argument("--wrapper", default="", help="executable wrapper")
+parser.add_argument("input", help="valid input file")
+
+args = parser.parse_args(sys.argv[1:])
+command = shlex.split(args.wrapper) + [args.tool, '-b', '1024', args.input]
+
+if os.path.exists("/dev/full"):
+
+ with open("/dev/full", "w") as out:
+ proc = subprocess.run(
+ command, check=False, stdout=out, stderr=subprocess.PIPE
+ )
+
+ assert proc.returncode != 0
+ assert "error" in proc.stderr.decode("utf-8")
+
+else:
+ sys.stderr.write("warning: /dev/full not present, skipping test")