From b5777299fdcf93f2d1db7cbe580e30aa4fbcb781 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Mon, 9 Oct 2017 16:08:56 +0200 Subject: [PATCH] Fix getting a short text from the SqlError --- qutebrowser/browser/history.py | 3 +-- qutebrowser/misc/sql.py | 7 +++++++ tests/unit/misc/test_sql.py | 11 +++++++++-- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/qutebrowser/browser/history.py b/qutebrowser/browser/history.py index 2869410ff..55b4d1c2b 100644 --- a/qutebrowser/browser/history.py +++ b/qutebrowser/browser/history.py @@ -204,8 +204,7 @@ class WebHistory(sql.SqlTable): }, replace=True) except sql.SqlError as e: if e.environmental: - message.error("Failed to write history: {}".format( - e.error.databaseText())) + message.error("Failed to write history: {}".format(e.text())) else: raise diff --git a/qutebrowser/misc/sql.py b/qutebrowser/misc/sql.py index 69e010a50..5b0d3361d 100644 --- a/qutebrowser/misc/sql.py +++ b/qutebrowser/misc/sql.py @@ -40,6 +40,10 @@ class SqlError(Exception): super().__init__(msg) self.environmental = environmental + def text(self): + """Get a short text to display.""" + return str(self) + class SqliteError(SqlError): @@ -71,6 +75,9 @@ class SqliteError(SqlError): ] self.environmental = error.nativeErrorCode() in environmental_errors + def text(self): + return self.error.databaseText() + @classmethod def from_query(cls, what, query, error): """Construct an error from a failed query. diff --git a/tests/unit/misc/test_sql.py b/tests/unit/misc/test_sql.py index d3f332bf9..fdd5c89c8 100644 --- a/tests/unit/misc/test_sql.py +++ b/tests/unit/misc/test_sql.py @@ -29,8 +29,10 @@ pytestmark = pytest.mark.usefixtures('init_sql') def test_sqlerror(): - err = sql.SqlError("Hello World", environmental=True) - assert str(err) == "Hello World" + text = "Hello World" + err = sql.SqlError(text, environmental=True) + assert str(err) == text + assert err.text() == text assert err.environmental @@ -71,6 +73,11 @@ class TestSqliteError: with pytest.raises(sql.SqlError): raise sql.SqliteError("text", QSqlError()) + def test_text(self): + sql_err = QSqlError("driver text", "db text") + err = sql.SqliteError("Message", sql_err) + assert err.text() == "db text" + def test_init(): sql.SqlTable('Foo', ['name', 'val', 'lucky'])