From d454ef5b8e867b4827dfc0d1cef818d4f94833c7 Mon Sep 17 00:00:00 2001 From: Antoine Tenart Date: Wed, 27 Mar 2019 18:53:18 +0100 Subject: [PATCH] libmat2: fix dependency checks for cmd line utilities The command line checks for command line utilities are done by trying to access the executables and by throwing an exception when not found. This lead to: - The mat2 cmd line --check-dependencies option failing. - The ffmpeg unit tests failing when ffmpeg isn't installed (even though it's an optional dependency). This patch fixes it. Signed-off-by: Antoine Tenart --- libmat2/__init__.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/libmat2/__init__.py b/libmat2/__init__.py index 1d945d4..46e56b3 100644 --- a/libmat2/__init__.py +++ b/libmat2/__init__.py @@ -38,13 +38,14 @@ DEPENDENCIES = { 'Mutagen': 'mutagen', } +CMD_DEPENDENCIES = { + 'Exiftool': exiftool._get_exiftool_path, + 'Ffmpeg': video._get_ffmpeg_path, + } def check_dependencies() -> Dict[str, bool]: ret = collections.defaultdict(bool) # type: Dict[str, bool] - ret['Exiftool'] = bool(exiftool._get_exiftool_path()) - ret['Ffmpeg'] = bool(video._get_ffmpeg_path()) - for key, value in DEPENDENCIES.items(): ret[key] = True try: @@ -52,6 +53,13 @@ def check_dependencies() -> Dict[str, bool]: except ImportError: # pragma: no cover ret[key] = False # pragma: no cover + for key, value in CMD_DEPENDENCIES.items(): + ret[key] = True + try: + value() + except RuntimeError: # pragma: no cover + ret[key] = False + return ret