mirror of
https://github.com/aljazceru/turso.git
synced 2026-01-06 01:34:21 +01:00
This PR imports the `sync` test suite from libSQL, and modifies the export structure match `better-sqlite3`, so that at least a few tests from the new test suite are passing. I also changed the `package.json` to expose `wrapper.js` as an entrypoint. I think the plain `index.js` was probably never meant to be exposed directly to clients, because the wrapper does some important transformation. It's also how libSQL-js is [structured](https://github.com/tursodatabase/libsql- js/blob/main/package.json#L20). ## DualTest test runner The test suite that I imported was previously run twice, with different environment variables: one run for libSQL-js, one run for better- sqlite3. This worked well with libSQL, because it's compatible with better-sqlite3. But Turso isn't there yet, so even though all tests need to run on better-sqlite3, not all tests are passing on Turso. To make it possible to run the test suite on both implementation, and to make it possible to track the progress of Turso, I've added a `DualTest` test runner that emulates the API of the Ava test runner, but instead of a single `test()` function, it exposes two methods: `both()`, and `onlySqlitePasses()`. The first one runs the test on both implementations, and the second one also runs it on both, but expects that Turso will fail. When Turso is completely compatible with better-sqlite3, it will be easy to remove the dual-test runner, since it has the same API as Ava. ## Future development ### Existing tests The existing tests were divided in two files: `better-sqlite3.spec.mjs`, and `dual-test.mjs` that are kept in sync manually. The first one is mostly a superset of the second one, with additional tests indicating behaviour that isn't implemented in Turso yet. I want to merge these test suites to also use the dual-test test runner. This will make it easier to evolve test suites and to track the progress of Turso. ### `SqliteError` Modifying the test called `errors` to `both()` will show that Turso is still missing an `SqliteError` type, to be compatible with better- sqlite3. I have the required changes in a stash and will open a PR shortly. ----- as part of https://github.com/tursodatabase/turso/issues/1900 Closes #1941