code-distortion / adapt

A Laravel package that builds databases for your tests, improving their speed
MIT License
24 stars 3 forks source link

Reuseinfo with sqlite is failing after initial run #3

Closed carltondickson closed 1 year ago

carltondickson commented 1 year ago

Description:

Attempted to run an sqlite test (currently fails as in the process of setting this up for our application, looks super useful by the way!) and then a subsequent test run fails, possibly because \CodeDistortion\Adapt\Adapters\LaravelSQLite\LaravelSQLiteReuseMetaDataTable::loadReuseInfo returns an array and we try and do $reuseInfo->project_name?

── An Exception Occurred - ErrorException ────────────────────────────────────────────────────────────────────────┐  {"request_id":"oBIL0tPjGZxehr6r"}
[2022-10-20 09:52:40] testing.ERROR: ADAPT: │ Attempt to read property "project_name" on array                                                                 │  {"request_id":"oBIL0tPjGZxehr6r"}
[2022-10-20 09:52:40] testing.ERROR: ADAPT: │ /opt/project/vendor/code-distortion/adapt/src/Adapters/AbstractClasses/AbstractReuseMetaDataTable.php on line 66 │  {"request_id":"oBIL0tPjGZxehr6r"}
[2022-10-20 09:52:40] testing.ERROR: ADAPT: └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

Logs:

[2022-10-20 09:44:30] testing.DEBUG: ADAPT: Disconnecting established database connection "testing"  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: Changed the default connection to: "sqlite"  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: Looking for stale things to remove  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: Generated a build-source checksum based on file modified timestamps (5ms)  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: Retrieved database list (connection: "sqlite", driver: "sqlite") (0ms)  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: - Found database "/opt/project/database/adapt-test-storage/databases/testing.7ac05c-b166cdd8bfb6.sqlite" (stale - within grace period) (3ms)  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: - Found database "/opt/project/database/adapt-test-storage/databases/testing.c18964-e9f3186080bc.sqlite" (stale - within grace period) (3ms)  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: - Found database "/opt/project/database/adapt-test-storage/databases/testing.fc1a39-b166cdd8bfb6.sqlite" (usable) (3ms)  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: Retrieved snapshot list (0ms)  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: - No snapshots were found (0ms)  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: Nothing found to remove - total time taken (15ms)
  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: ┌── ADAPT (v0.12.0) ─────────────────────────────────────────────────────────────────────────────────┐  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: │ Preparing a database for connection "sqlite"                                                       │  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: │ For test "OurTests::TestSomething" │  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: └────────────────────────────────────────────────────────────────────────────────────────────────────┘  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: Detected software versions (1ms)  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: ┌── Software ──────┐  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: │ OS:      Linux   │  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: │ PHP:     8.1.11  │  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: │ Laravel: 8.83.23 │  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: │ PHPUnit: 9.5.24  │  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: │ Adapt:   0.12.0  │  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: │ SQLite:  3.22.0  │  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: └──────────────────┘  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: ┌── Build Sources ─────────────────────────────────────┐  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: │ Initial imports:   None                              │  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: │ Migrations:        Yes                               │  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: │ Seeder:            "Database\Seeders\DatabaseSeeder" │  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: │ Snapshots enabled? No                                │  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: └──────────────────────────────────────────────────────┘  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: ┌── Build Settings ──────────────────────────────────────┐  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: │ Using scenarios?    Yes                                │  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: │ Re-use method:      Transaction                        │  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: │ Verify db after?    No                                 │  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: │ For a browser test? No                                 │  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: │ Parallel testing?   No                                 │  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: │ Build-checksum:     "fc1a3902d7d9290eadc6857f89fd6715" │  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: │ Snapshot-checksum:  "20eae355a0e7a8bd5c97d9a05a384bbe" │  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: │ Scenario-checksum:  "b166cdd8bfb6cbb738992fa3bc66c544" │  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: └────────────────────────────────────────────────────────┘  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: ┌── Resolved Database ────────────────────────────────────────────────────────────────────────────────┐  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: │ Connection: "sqlite"                                                                                │  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: │ Driver:     "sqlite"                                                                                │  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: │ Database:   "/opt/project/database/adapt-test-storage/databases/testing.fc1a39-b166cdd8bfb6.sqlite" │  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: └─────────────────────────────────────────────────────────────────────────────────────────────────────┘  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.DEBUG: ADAPT: Changed the database for connection "sqlite" to "/opt/project/database/adapt-test-storage/databases/testing.fc1a39-b166cdd8bfb6.sqlite"  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.ERROR: ADAPT: ┌── An Exception Occurred - ErrorException ────────────────────────────────────────────────────────────────────────┐  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.ERROR: ADAPT: │ Attempt to read property "project_name" on array                                                                 │  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.ERROR: ADAPT: │ /opt/project/vendor/code-distortion/adapt/src/Adapters/AbstractClasses/AbstractReuseMetaDataTable.php on line 66 │  {"request_id":"dJoFMqf5HvNb1pY8"}
[2022-10-20 09:44:30] testing.ERROR: ADAPT: └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
  {"request_id":"dJoFMqf5HvNb1pY8"}
carltondickson commented 1 year ago

Oops, found the error we have some legacy code that was probably added when Laravel removed this from config.database.php a few versions back

        Event::listen(StatementPrepared::class, function ($event) {
            $event->statement->setFetchMode(\PDO::FETCH_ASSOC);
        });