diff --git a/galvani/res2sqlite.py b/galvani/res2sqlite.py index 92cf630..c2fab8d 100755 --- a/galvani/res2sqlite.py +++ b/galvani/res2sqlite.py @@ -353,9 +353,16 @@ CREATE VIEW IF NOT EXISTS Capacity_View def mdb_get_data_text(s3db, filename, table): print("Reading %s..." % table) # TODO after dropping Python 2 support - use Popen as contextmanager - mdb_sql = sp.Popen(['mdb-export', '-I', 'postgres', filename, table], - bufsize=-1, stdin=None, stdout=sp.PIPE, - universal_newlines=True) + try: + mdb_sql = sp.Popen(['mdb-export', '-I', 'postgres', filename, table], + bufsize=-1, stdin=None, stdout=sp.PIPE, + universal_newlines=True) + except OSError as e: + if e.errno == 2: + raise RuntimeError('Could not locate the `mdb-export` executable. ' + 'Check that mdbtools is properly installed.') + else: + raise try: # Initialize values to avoid NameError in except clause mdb_output = '' @@ -381,9 +388,16 @@ def mdb_get_data_text(s3db, filename, table): def mdb_get_data_numeric(s3db, filename, table): print("Reading %s..." % table) # TODO after dropping Python 2 support - use Popen as contextmanager - mdb_sql = sp.Popen(['mdb-export', filename, table], - bufsize=-1, stdin=None, stdout=sp.PIPE, - universal_newlines=True) + try: + mdb_sql = sp.Popen(['mdb-export', filename, table], + bufsize=-1, stdin=None, stdout=sp.PIPE, + universal_newlines=True) + except OSError as e: + if e.errno == 2: + raise RuntimeError('Could not locate the `mdb-export` executable. ' + 'Check that mdbtools is properly installed.') + else: + raise try: mdb_csv = csv.reader(mdb_sql.stdout) mdb_headers = next(mdb_csv) diff --git a/tests/test_Arbin.py b/tests/test_Arbin.py index 9032a9b..f21bd50 100644 --- a/tests/test_Arbin.py +++ b/tests/test_Arbin.py @@ -3,7 +3,6 @@ import os import sqlite3 import subprocess -import sys import pytest @@ -28,11 +27,7 @@ def test_convert_Arbin_no_mdbtools(testdata_dir, tmpdir): """Checks that the conversion fails with an appropriate error message.""" res_file = os.path.join(testdata_dir, 'arbin1.res') sqlite_file = os.path.join(str(tmpdir), 'arbin1.s3db') - if sys.version_info >= (3, 3): - expected_exception = FileNotFoundError - else: - expected_exception = OSError - with pytest.raises(expected_exception, match="No such file or directory: 'mdb-export'"): + with pytest.raises(RuntimeError, match="Could not locate the `mdb-export` executable."): res2sqlite.convert_arbin_to_sqlite(res_file, sqlite_file)