From 31fad78829a964f5048642f8cdf75c4e2d43742d Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 11 Oct 2024 18:55:00 +0530 Subject: [PATCH] Better error message when __convert_image__ fails to write output --- kitty/render_cache.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/kitty/render_cache.py b/kitty/render_cache.py index 17748bb17..1ca969a04 100644 --- a/kitty/render_cache.py +++ b/kitty/render_cache.py @@ -69,8 +69,10 @@ class ImageRenderCache: import subprocess with open(src_path, 'rb') as src, open(output_path, 'wb', opener=partial(os.open, mode=stat.S_IREAD | stat.S_IWRITE)) as output: cp = subprocess.run([kitten_exe(), '__convert_image__', 'RGBA'], stdin=src, stdout=output, stderr=subprocess.PIPE) - if cp.returncode != 0: - raise ValueError(f'Failed to convert path to RGBA data with error: {cp.stderr.decode("utf-8", "replace")}') + if cp.returncode != 0: + raise ValueError(f'Failed to convert {src_path} to RGBA data with error: {cp.stderr.decode("utf-8", "replace")}') + if output.seek(0, os.SEEK_END) < 8: + raise ValueError(f'Failed to convert {src_path} to RGBA data, no output written. stderr: {cp.stderr.decode("utf-8", "replace")}') def read_metadata(self, output_path: str) -> tuple[int, int, int]: with open(output_path, 'rb') as f: