test_store fails if executed individually from a different directory to test/
from top level directory rt-ramsis:
- $pytest # results in an error for all tests in test_store
- $pytest tests/test_store.py # tests pass from rt-ramsis/tests
- $pytest # tests pass
Once of the tracebacks for when the tests fail shows that maybe the spatialite extension has not been loaded:
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7f0700a74f60>, cursor = <sqlite3.Cursor object at 0x7f07006b1650>
statement = 'INSERT INTO project (creationinfo_author, creationinfo_authoruri_resourceid, creationinfo_authoruri_used, creationinf...int, spatialreference, starttime, endtime) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, GeomFromEWKT(?), ?, ?, ?)'
parameters = (None, None, None, None, None, None, ...), context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7f070057c320>
def do_execute(self, cursor, statement, parameters, context=None):
> cursor.execute(statement, parameters)
E sqlite3.OperationalError: table project has no column named referencepoint
../../../miniconda3/envs/ramsis/lib/python3.6/site-packages/sqlalchemy/engine/default.py:552: OperationalError
The above exception was the direct cause of the following exception:
self = <tests.test_store.TestStoreOperation testMethod=test_saving>
def test_saving(self):
project = self.store.create_project({'name': 'test_project',
'starttime': datetime.now(),
> 'spatialreference': '4326'})
tests/test_store.py:132:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
RAMSIS/core/store.py:120: in create_project
self.session.commit()
../../../miniconda3/envs/ramsis/lib/python3.6/site-packages/sqlalchemy/orm/session.py:1027: in commit
self.transaction.commit()
../../../miniconda3/envs/ramsis/lib/python3.6/site-packages/sqlalchemy/orm/session.py:494: in commit
self._prepare_impl()
../../../miniconda3/envs/ramsis/lib/python3.6/site-packages/sqlalchemy/orm/session.py:473: in _prepare_impl
self.session.flush()
../../../miniconda3/envs/ramsis/lib/python3.6/site-packages/sqlalchemy/orm/session.py:2459: in flush
self._flush(objects)
../../../miniconda3/envs/ramsis/lib/python3.6/site-packages/sqlalchemy/orm/session.py:2597: in _flush
transaction.rollback(_capture_exception=True)
../../../miniconda3/envs/ramsis/lib/python3.6/site-packages/sqlalchemy/util/langhelpers.py:68: in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
../../../miniconda3/envs/ramsis/lib/python3.6/site-packages/sqlalchemy/util/compat.py:153: in reraise
raise value
../../../miniconda3/envs/ramsis/lib/python3.6/site-packages/sqlalchemy/orm/session.py:2557: in _flush
flush_context.execute()
../../../miniconda3/envs/ramsis/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py:422: in execute
rec.execute(self)
../../../miniconda3/envs/ramsis/lib/python3.6/site-packages/sqlalchemy/orm/unitofwork.py:589: in execute
uow,
../../../miniconda3/envs/ramsis/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py:245: in save_obj
insert,
../../../miniconda3/envs/ramsis/lib/python3.6/site-packages/sqlalchemy/orm/persistence.py:1138: in _emit_insert_statements
statement, params
../../../miniconda3/envs/ramsis/lib/python3.6/site-packages/sqlalchemy/engine/base.py:988: in execute
return meth(self, multiparams, params)
../../../miniconda3/envs/ramsis/lib/python3.6/site-packages/sqlalchemy/sql/elements.py:287: in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
../../../miniconda3/envs/ramsis/lib/python3.6/site-packages/sqlalchemy/engine/base.py:1107: in _execute_clauseelement
distilled_params,
../../../miniconda3/envs/ramsis/lib/python3.6/site-packages/sqlalchemy/engine/base.py:1253: in _execute_context
e, statement, parameters, cursor, context
../../../miniconda3/envs/ramsis/lib/python3.6/site-packages/sqlalchemy/engine/base.py:1473: in _handle_dbapi_exception
util.raise_from_cause(sqlalchemy_exception, exc_info)
../../../miniconda3/envs/ramsis/lib/python3.6/site-packages/sqlalchemy/util/compat.py:398: in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
../../../miniconda3/envs/ramsis/lib/python3.6/site-packages/sqlalchemy/util/compat.py:152: in reraise
raise value.with_traceback(tb)
../../../miniconda3/envs/ramsis/lib/python3.6/site-packages/sqlalchemy/engine/base.py:1249: in _execute_context
cursor, statement, parameters, context
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <sqlalchemy.dialects.sqlite.pysqlite.SQLiteDialect_pysqlite object at 0x7f0700a74f60>, cursor = <sqlite3.Cursor object at 0x7f07006b1650>
statement = 'INSERT INTO project (creationinfo_author, creationinfo_authoruri_resourceid, creationinfo_authoruri_used, creationinf...int, spatialreference, starttime, endtime) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, GeomFromEWKT(?), ?, ?, ?)'
parameters = (None, None, None, None, None, None, ...), context = <sqlalchemy.dialects.sqlite.base.SQLiteExecutionContext object at 0x7f070057c320>
def do_execute(self, cursor, statement, parameters, context=None):
> cursor.execute(statement, parameters)
E sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) table project has no column named referencepoint
E [SQL: INSERT INTO project (creationinfo_author, creationinfo_authoruri_resourceid, creationinfo_authoruri_used, creationinfo_agencyid, creationinfo_agencyuri_resourceid, creationinfo_agencyuri_used, creationinfo_creationtime, creationinfo_version, creationinfo_copyrightowner, creationinfo_copyrightowneruri_resourceid, creationinfo_copyrightowneruri_used, creationinfo_license, name, description, referencepoint, spatialreference, starttime, endtime) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, GeomFromEWKT(?), ?, ?, ?)]
E [parameters: (None, None, None, None, None, None, '2019-09-11 09:44:10.674438', None, None, None, None, None, 'test_project', None, None, '4326', '2019-09-11 11:44:17.115866', None)]
E (Background on this error at: http://sqlalche.me/e/e3q8)
../../../miniconda3/envs/ramsis/lib/python3.6/site-packages/sqlalchemy/engine/default.py:552: OperationalError
--------------------------------------------------------------------------------------------------------------------- Captured log call ----------------------------------------------------------------------------------------------------------------------
ERROR RAMSIS.core.store:store.py:66 Error while initializing DB: (sqlite3.OperationalError) no such function: AddGeometryColumn
[SQL: SELECT AddGeometryColumn(?, ?, ?, ?, ?) AS "AddGeometryColumn_1"]
[parameters: ('project', 'referencepoint', -1, 'POINTZ', 3)]
(Background on this error at: http://sqlalche.me/e/e3q8)
Edited by sarsonl