Skip to content
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
@penberg

Description

@penberg

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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions