This repository was archived by the owner on Jun 11, 2025. It is now read-only.
This repository was archived by the owner on Jun 11, 2025. It is now read-only.
Test suite fails against libSQL server #3
Open
Description
I am running latest sqld
locally and when I run poetry run pytest
, I get the following set of test failures:
========================================================================================= sqlalchemy installation ==========================================================================================
SQLAlchemy 2.0.20 (user site loaded)
Path: /Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/sqlalchemy/__init__.py
compiled extension enabled, e.g. /Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/sqlalchemy/cyextension/util.cpython-311-darwin.so
/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/sqlalchemy/testing/config.py:280: PytestUnknownMarkWarning: Unknown pytest.mark.mypy - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
return getattr(_fixture_functions.add_to_marker, attr)
=========================================================================================== test session starts ============================================================================================
platform darwin -- Python 3.11.4, pytest-7.4.0, pluggy-1.2.0 -- /Users/penberg/src/libsql/sqlalchemy-libsql/.env/bin/python3.11
cachedir: .pytest_cache
rootdir: /Users/penberg/src/libsql/sqlalchemy-libsql
configfile: pyproject.toml
collecting ... /Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/_pytest/nodes.py:355: PytestUnknownMarkWarning: Unknown pytest.mark.backend - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
marker_ = getattr(MARK_GEN, marker)
collected 193 items
test/test_suite.py::AttachedDBTest::test_col_targeting SKIPPED ('test.test_suite.AttachedDBTest' unsupported on any DB implementation 'sqlite(3.42.0)+libsql'custom function) [ 0%]
test/test_suite.py::AttachedDBTest::test_col_targeting_union SKIPPED ('test.test_suite.AttachedDBTest' unsupported on any DB implementation 'sqlite(3.42.0)+libsql'custom function) [ 1%]
test/test_suite.py::AttachedDBTest::test_column_names SKIPPED ('test.test_suite.AttachedDBTest' unsupported on any DB implementation 'sqlite(3.42.0)+libsql'custom function) [ 1%]
test/test_suite.py::AttachedDBTest::test_crud SKIPPED ('test.test_suite.AttachedDBTest' unsupported on any DB implementation 'sqlite(3.42.0)+libsql'custom function) [ 2%]
test/test_suite.py::AttachedDBTest::test_no_tables SKIPPED ('test.test_suite.AttachedDBTest' unsupported on any DB implementation 'sqlite(3.42.0)+libsql'custom function) [ 2%]
test/test_suite.py::AttachedDBTest::test_reflect_system_table SKIPPED ('test.test_suite.AttachedDBTest' unsupported on any DB implementation 'sqlite(3.42.0)+libsql'custom function) [ 3%]
test/test_suite.py::AttachedDBTest::test_reflect_user_table SKIPPED ('test.test_suite.AttachedDBTest' unsupported on any DB implementation 'sqlite(3.42.0)+libsql'custom function) [ 3%]
test/test_suite.py::AttachedDBTest::test_schema_names SKIPPED ('test.test_suite.AttachedDBTest' unsupported on any DB implementation 'sqlite(3.42.0)+libsql'custom function) [ 4%]
test/test_suite.py::AttachedDBTest::test_table_names_present SKIPPED ('test.test_suite.AttachedDBTest' unsupported on any DB implementation 'sqlite(3.42.0)+libsql'custom function) [ 4%]
test/test_suite.py::AttachedDBTest::test_table_names_system SKIPPED ('test.test_suite.AttachedDBTest' unsupported on any DB implementation 'sqlite(3.42.0)+libsql'custom function) [ 5%]
test/test_suite.py::AutoIncrementTest::test_sqlite_autoincrement PASSED [ 5%]
test/test_suite.py::AutoIncrementTest::test_sqlite_autoincrement_constraint PASSED [ 6%]
test/test_suite.py::AutoIncrementTest::test_sqlite_autoincrement_int_affinity PASSED [ 6%]
test/test_suite.py::AutoIncrementTest::test_sqlite_no_autoincrement PASSED [ 7%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_check_constraint PASSED [ 7%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_constraint_cols[ix-[Code]-Code] FAILED [ 8%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_constraint_cols[ix-[Code]-[Code]] FAILED [ 8%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_constraint_cols[ix-name with spaces-name with spaces] FAILED [ 9%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_constraint_cols[ix-plain_name-plain_name] FAILED [ 9%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_constraint_cols[ix-plainname-plainname] FAILED [ 10%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_constraint_cols[pk-[Code]-Code] PASSED [ 10%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_constraint_cols[pk-[Code]-[Code]] PASSED [ 11%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_constraint_cols[pk-name with spaces-name with spaces] PASSED [ 11%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_constraint_cols[pk-plain_name-plain_name] PASSED [ 12%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_constraint_cols[pk-plainname-plainname] PASSED [ 12%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_constraint_cols[uq-[Code]-Code] FAILED [ 13%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_constraint_cols[uq-[Code]-[Code]] FAILED [ 13%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_constraint_cols[uq-name with spaces-name with spaces] FAILED [ 14%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_constraint_cols[uq-plain_name-plain_name] FAILED [ 15%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_constraint_cols[uq-plainname-plainname] FAILED [ 15%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_constraint_cols[uq_inline-[Code]-Code] FAILED [ 16%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_constraint_cols[uq_inline-[Code]-[Code]] FAILED [ 16%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_constraint_cols[uq_inline-name with spaces-name with spaces] FAILED [ 17%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_constraint_cols[uq_inline-plain_name-plain_name] FAILED [ 17%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_constraint_cols[uq_inline-plainname-plainname] FAILED [ 18%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_create_index_with_schema FAILED [ 18%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_dont_reflect_autoindex FAILED [ 19%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_foreign_key_composite_broken_casing PASSED [ 19%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_foreign_key_composite_implicit_parent PASSED [ 20%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_foreign_key_deferrable_initially PASSED [ 20%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_foreign_key_implicit_missing_parent PASSED [ 21%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_foreign_key_implicit_missing_parent_reflection PASSED [ 21%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_foreign_key_implicit_parent PASSED [ 22%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_foreign_key_name_is_none PASSED [ 22%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_foreign_key_name_is_not_none PASSED [ 23%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_foreign_key_ondelete_onupdate PASSED [ 23%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_foreign_key_options_unnamed_inline PASSED [ 24%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_legacy_quoted_identifiers_unit PASSED [ 24%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_primary_key_constraint_named PASSED [ 25%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_primary_key_constraint_no_pk PASSED [ 25%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_primary_key_constraint_unnamed PASSED [ 26%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_reflect_partial_indexes FAILED [ 26%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_unique_constraint_named FAILED [ 27%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_unique_constraint_named_broken_casing FAILED [ 27%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_unique_constraint_named_broken_temp ERROR [ 28%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_unique_constraint_unnamed_inline FAILED [ 29%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_unique_constraint_unnamed_inline_quoted FAILED [ 29%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_unique_constraint_unnamed_normal FAILED [ 30%]
test/test_suite.py::ConstraintReflectionTest_sqlite+libsql_3_42_0::test_unique_constraint_unnamed_normal_temporary ERROR [ 30%]Traceback (most recent call last):
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/libsql_client/dbapi2/hrana.py", line 366, in _raw_execute_one
result = self.connection._raw_execute(stmt)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/libsql_client/dbapi2/hrana.py", line 214, in wrapper
return future.result(timeout=self._timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/[email protected]/3.11.4_1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/concurrent/futures/_base.py", line 456, in result
return self.__get_result()
^^^^^^^^^^^^^^^^^^^
File "/opt/homebrew/Cellar/[email protected]/3.11.4_1/Frameworks/Python.framework/Versions/3.11/lib/python3.11/concurrent/futures/_base.py", line 401, in __get_result
raise self._exception
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/libsql_client/dbapi2/_async_executor.py", line 210, in run_in_main_loop
r = await r
^^^^^^^
libsql_client.client.LibsqlError: SQLITE_UNKNOWN: SQLite error: no such table: main.a1
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1965, in _exec_single_context
self.dialect.do_execute(
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 921, in do_execute
cursor.execute(statement, parameters)
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/libsql_client/dbapi2/types.py", line 1333, in execute
self._query_execute(sql, (parameters,), multiple=False, want_rows=True)
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/libsql_client/dbapi2/types.py", line 907, in wrapper
return fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/libsql_client/dbapi2/types.py", line 1314, in _query_execute
_raise_converted_exception(error)
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/libsql_client/dbapi2/types.py", line 972, in _raise_converted_exception
raise dbapi2_exc from exc
sqlite3.OperationalError: SQLITE_UNKNOWN: SQLite error: no such table: main.a1
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/bin/pytest", line 8, in <module>
sys.exit(console_main())
^^^^^^^^^^^^^^
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/_pytest/config/__init__.py", line 189, in console_main
code = main()
^^^^^^
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/_pytest/config/__init__.py", line 166, in main
ret: Union[ExitCode, int] = config.hook.pytest_cmdline_main(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/pluggy/_hooks.py", line 433, in __call__
return self._hookexec(self.name, self._hookimpls, kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/pluggy/_manager.py", line 112, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/pluggy/_callers.py", line 116, in _multicall
raise exception.with_traceback(exception.__traceback__)
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/pluggy/_callers.py", line 80, in _multicall
res = hook_impl.function(*args)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/_pytest/main.py", line 317, in pytest_cmdline_main
return wrap_session(config, _main)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/_pytest/main.py", line 305, in wrap_session
config.hook.pytest_sessionfinish(
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/pluggy/_hooks.py", line 433, in __call__
return self._hookexec(self.name, self._hookimpls, kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/pluggy/_manager.py", line 112, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/pluggy/_callers.py", line 133, in _multicall
teardown[0].send(outcome)
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/_pytest/terminal.py", line 857, in pytest_sessionfinish
outcome.get_result()
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/pluggy/_result.py", line 108, in get_result
raise exc.with_traceback(exc.__traceback__)
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/pluggy/_callers.py", line 80, in _multicall
res = hook_impl.function(*args)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/_pytest/runner.py", line 108, in pytest_sessionfinish
session._setupstate.teardown_exact(None)
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/_pytest/runner.py", line 537, in teardown_exact
raise exceptions[0]
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/_pytest/runner.py", line 526, in teardown_exact
fin()
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/_pytest/fixtures.py", line 701, in <lambda>
subrequest.node.addfinalizer(lambda: fixturedef.finish(request=subrequest))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/_pytest/fixtures.py", line 1031, in finish
raise exc
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/_pytest/fixtures.py", line 1024, in finish
func()
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/_pytest/fixtures.py", line 911, in _teardown_yield_fixture
next(it)
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/sqlalchemy/testing/plugin/pytestplugin.py", line 531, in setup_class_methods
asyncio._maybe_async(cls.teardown_test_class)
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/sqlalchemy/testing/asyncio.py", line 94, in _maybe_async
return fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^
File "/Users/penberg/src/libsql/sqlalchemy-libsql/test/test_suite.py", line 1971, in teardown_test_class
conn.exec_driver_sql("drop table %s" % name)
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1774, in exec_driver_sql
ret = self._execute_context(
^^^^^^^^^^^^^^^^^^^^^^
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1844, in _execute_context
return self._exec_single_context(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1984, in _exec_single_context
self._handle_dbapi_exception(
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 2339, in _handle_dbapi_exception
raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/sqlalchemy/engine/base.py", line 1965, in _exec_single_context
self.dialect.do_execute(
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/sqlalchemy/engine/default.py", line 921, in do_execute
cursor.execute(statement, parameters)
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/libsql_client/dbapi2/types.py", line 1333, in execute
self._query_execute(sql, (parameters,), multiple=False, want_rows=True)
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/libsql_client/dbapi2/types.py", line 907, in wrapper
return fn(*args, **kwargs)
^^^^^^^^^^^^^^^^^^^
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/libsql_client/dbapi2/types.py", line 1314, in _query_execute
_raise_converted_exception(error)
File "/Users/penberg/src/libsql/sqlalchemy-libsql/.env/lib/python3.11/site-packages/libsql_client/dbapi2/types.py", line 972, in _raise_converted_exception
raise dbapi2_exc from exc
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) SQLITE_UNKNOWN: SQLite error: no such table: main.a1
[SQL: drop table a2]
(Background on this error at: https://sqlalche.me/e/20/e3q8)