Refresh the database before caching a connection handle to it #78
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
OpenGuides->new() caches a connection to the SQLite database. When
OpenGuides::Test::refresh_db() is called, it removes the database file
and reconnects to it. If that happens after OpenGuides->new(), the cached
handle becomes read-only as of SQLite 3.8.3. From its changelog:
Add SQLITE_READONLY_DBMOVED error code, returned at the beginning of
a transaction, to indicate that the underlying database file has been
renamed or moved out from under SQLite.
This causes test failures with error messages like
Unhandled error: [DBD::SQLite::st execute failed: attempt to write a readonly database at /usr/share/perl5/Wiki/Toolkit/Store/Database.pm line 567.
] at /usr/share/perl5/Wiki/Toolkit.pm line 849.
Moving the refresh_db() call earlier fixes these failures.