Fix getting a short text from the SqlError

This commit is contained in:
Florian Bruhin 2017-10-09 16:08:56 +02:00
parent b608259751
commit b5777299fd
3 changed files with 17 additions and 4 deletions

View File

@ -204,8 +204,7 @@ class WebHistory(sql.SqlTable):
}, replace=True) }, replace=True)
except sql.SqlError as e: except sql.SqlError as e:
if e.environmental: if e.environmental:
message.error("Failed to write history: {}".format( message.error("Failed to write history: {}".format(e.text()))
e.error.databaseText()))
else: else:
raise raise

View File

@ -40,6 +40,10 @@ class SqlError(Exception):
super().__init__(msg) super().__init__(msg)
self.environmental = environmental self.environmental = environmental
def text(self):
"""Get a short text to display."""
return str(self)
class SqliteError(SqlError): class SqliteError(SqlError):
@ -71,6 +75,9 @@ class SqliteError(SqlError):
] ]
self.environmental = error.nativeErrorCode() in environmental_errors self.environmental = error.nativeErrorCode() in environmental_errors
def text(self):
return self.error.databaseText()
@classmethod @classmethod
def from_query(cls, what, query, error): def from_query(cls, what, query, error):
"""Construct an error from a failed query. """Construct an error from a failed query.

View File

@ -29,8 +29,10 @@ pytestmark = pytest.mark.usefixtures('init_sql')
def test_sqlerror(): def test_sqlerror():
err = sql.SqlError("Hello World", environmental=True) text = "Hello World"
assert str(err) == "Hello World" err = sql.SqlError(text, environmental=True)
assert str(err) == text
assert err.text() == text
assert err.environmental assert err.environmental
@ -71,6 +73,11 @@ class TestSqliteError:
with pytest.raises(sql.SqlError): with pytest.raises(sql.SqlError):
raise sql.SqliteError("text", QSqlError()) 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(): def test_init():
sql.SqlTable('Foo', ['name', 'val', 'lucky']) sql.SqlTable('Foo', ['name', 'val', 'lucky'])