1
0
mirror of https://github.com/BookStackApp/BookStack.git synced 2025-12-13 07:42:23 +03:00

DB Testing: Updated supported DB list, added readme

Also fixed potentally flaky GIf test to be more accurate with single
frame GIF images.
This commit is contained in:
Dan Brown
2025-11-22 12:24:36 +00:00
parent 22a7772c3d
commit 870f3c58c0
4 changed files with 38 additions and 8 deletions

View File

@@ -19,8 +19,8 @@ ARG BRANCH=development
# Download BookStack & install PHP deps
RUN mkdir -p /var/www && \
git clone https://github.com/bookstackapp/bookstack.git --branch "$BRANCH" --single-branch /var/www/bookstack && \
cd /var/www/bookstack && \
wget https://raw.githubusercontent.com/composer/getcomposer.org/f3108f64b4e1c1ce6eb462b159956461592b3e3e/web/installer -O - -q | php -- --quiet --filename=composer && \
cd /var/www/bookstack && \
wget https://raw.githubusercontent.com/composer/getcomposer.org/f3108f64b4e1c1ce6eb462b159956461592b3e3e/web/installer -O - -q | php -- --quiet --filename=composer && \
php composer install
# Set the BookStack dir as the default working dir

View File

@@ -0,0 +1,32 @@
# Database Testing Suite
This docker setup is designed to run BookStack's test suite against each major database version we support
across MySQL and MariaDB to ensure compatibility and highlight any potential issues before a release.
This is a fairly slow and heavy process, so is designed to just be run manually before a release which
makes changes to the database schema, or a release which makes significant changes to database queries.
### Running
Everything is ran via the `run.sh` script. This will:
- Optionally, accept a branch of BookStack to use for testing.
- Build the docker image from the `Dockerfile`.
- This will include a built-in copy of the chosen BookStack branch.
- Cycle through each major supported database version:
- Migrate and seed the database.
- Run the full PHP test suite.
If there's a failure for a database version, the script will prompt if you'd like to continue or stop testing.
This script should be ran from this `db-testing` directory:
```bash
# Enter this directory
cd dev/docker/db-testing
# Runs for the 'development' branch by default
./run.sh
# Run for a specific branch
./run.sh v25-11
```

View File

@@ -11,11 +11,9 @@ fi
# List of database containers to test against
containers=(
"mysql:5.7"
"mysql:8.0"
"mysql:8.4"
"mysql:9.5"
"mariadb:10.2"
"mariadb:10.6"
"mariadb:10.11"
"mariadb:11.4"

View File

@@ -720,15 +720,15 @@ class ImageTest extends TestCase
$galleryFileSize = filesize($galleryThumbPath);
// Basic scan of GIF content to check frame count
$originalFrameCount = count(explode("\x00\x21\xF9", file_get_contents($originalFile)));
$galleryFrameCount = count(explode("\x00\x21\xF9", file_get_contents($galleryThumbPath)));
$originalFrameCount = count(explode("\x00\x21\xF9", file_get_contents($originalFile))) - 1;
$galleryFrameCount = count(explode("\x00\x21\xF9", file_get_contents($galleryThumbPath))) - 1;
$this->files->deleteAtRelativePath($relPath);
$this->files->deleteAtRelativePath($galleryThumbRelPath);
$this->assertNotEquals($originalFileSize, $galleryFileSize);
$this->assertEquals(3, $originalFrameCount);
$this->assertEquals(1, $galleryFrameCount);
$this->assertEquals(2, $originalFrameCount);
$this->assertLessThan(2, $galleryFrameCount);
}
protected function getTestProfileImage()