]> BookStack Code Mirror - bookstack/commitdiff
Docker: Fix PHP tests 2522/head
authorAbijeet <redacted>
Tue, 26 Jan 2021 21:38:28 +0000 (03:08 +0530)
committerAbijeet <redacted>
Sun, 31 Jan 2021 13:24:24 +0000 (18:54 +0530)
This creates another mysql_testing database during db service setup

Replace server with env tags in phpunit.xml in order to force
override certain parameters when tests are run. See:
https://github.com/sebastianbergmann/phpunit/issues/2353 for more
information.

Rename primary developer Docker database from bookstack-test to
bookstack-dev. bookstack-test is used as the mysql_testing database

app/Config/database.php
dev/docker/entrypoint.app.sh
dev/docker/init.db/01.sql [new file with mode: 0644]
docker-compose.yml
phpunit.xml
readme.md

index ed654ffb9172b4789a62c922d971adb8f550976d..6e7cf529cf7527133c1ebd0d832addac0b68fe65 100644 (file)
@@ -81,10 +81,11 @@ return [
         'mysql_testing' => [
             'driver'    => 'mysql',
             'url' => env('TEST_DATABASE_URL'),
-            'host'      => '127.0.0.1',
+            'host'      => $mysql_host,
             'database'  => 'bookstack-test',
             'username'  => env('MYSQL_USER', 'bookstack-test'),
             'password'  => env('MYSQL_PASSWORD', 'bookstack-test'),
+            'port'      => $mysql_port,
             'charset'   => 'utf8mb4',
             'collation' => 'utf8mb4_unicode_ci',
             'prefix'    => '',
index e91d34a713377a7e579a6594000c01fb5c98ba57..9709139ab4a9606c660bc4ea3d7509f154b67364 100755 (executable)
@@ -10,6 +10,7 @@ else
     composer install
     wait-for-it db:3306 -t 45
     php artisan migrate --database=mysql
+    php artisan migrate --database=mysql_testing
     chown -R www-data:www-data storage
     exec apache2-foreground
 fi
diff --git a/dev/docker/init.db/01.sql b/dev/docker/init.db/01.sql
new file mode 100644 (file)
index 0000000..2536c3f
--- /dev/null
@@ -0,0 +1,5 @@
+# create test database
+CREATE DATABASE IF NOT EXISTS `bookstack-test`;
+
+# grant rights
+GRANT ALL PRIVILEGES ON `bookstack-test`.* TO 'bookstack-test'@'%';
index 39f5bdc18d11a997b5bfd71905ff1704966207a4..037c5f67eb5baf14bd5c764cf6b9592335786445 100644 (file)
@@ -10,12 +10,13 @@ services:
   db:
     image: mysql:8
     environment:
-      MYSQL_DATABASE: bookstack-test
+      MYSQL_DATABASE: bookstack-dev
       MYSQL_USER: bookstack-test
       MYSQL_PASSWORD: bookstack-test
       MYSQL_RANDOM_ROOT_PASSWORD: 'true'
     command: --default-authentication-plugin=mysql_native_password
     volumes:
+      - ./dev/docker/init.db:/docker-entrypoint-initdb.d
       - db:/var/lib/mysql
   app:
     build:
@@ -25,7 +26,7 @@ services:
       DB_CONNECTION: mysql
       DB_HOST: db
       DB_PORT: 3306
-      DB_DATABASE: bookstack-test
+      DB_DATABASE: bookstack-dev
       DB_USERNAME: bookstack-test
       DB_PASSWORD: bookstack-test
       MAIL_DRIVER: smtp
index 0332182883ceb77a5b477842593053aa5181ee11..3bcedfb42f95542cc81c5d18e5789734f153bc66 100644 (file)
@@ -19,7 +19,7 @@
         </whitelist>
     </filter>
     <php>
-        <server name="APP_ENV" value="testing"/>
+        <env name="APP_ENV" value="testing" force="true"/>
         <server name="APP_DEBUG" value="false"/>
         <server name="APP_LANG" value="en"/>
         <server name="APP_THEME" value="none"/>
@@ -29,7 +29,7 @@
         <server name="CACHE_DRIVER" value="array"/>
         <server name="SESSION_DRIVER" value="array"/>
         <server name="QUEUE_CONNECTION" value="sync"/>
-        <server name="DB_CONNECTION" value="mysql_testing"/>
+        <env name="DB_CONNECTION" value="mysql_testing" force="true"/>
         <server name="BCRYPT_ROUNDS" value="4"/>
         <server name="MAIL_DRIVER" value="array"/>
         <server name="LOG_CHANNEL" value="single"/>
@@ -56,5 +56,6 @@
         <server name="LOG_FAILED_LOGIN_MESSAGE" value=""/>
         <server name="LOG_FAILED_LOGIN_CHANNEL" value="testing"/>
         <server name="WKHTMLTOPDF" value="false"/>
+        <ini name="memory_limit" value="1024M"/>
     </php>
 </phpunit>
index 8cce8e6618bf9c7f239c01d5cb2a3848450424cc..d4cccf0d6edd031de52c24791a461fe3471c911d 100644 (file)
--- a/readme.md
+++ b/readme.md
@@ -96,18 +96,29 @@ If all the conditions are met, you can proceed with the following steps:
 1. **Copy `.env.example` to `.env`**, change `APP_KEY` to a random 32 char string and set `APP_ENV` to `local`.
 2. Make sure **port 8080 is unused** *or else* change `DEV_PORT` to a free port on your host.
 3. **Run `chgrp -R docker storage`**. The development container will chown the `storage` directory to the `www-data` user inside the container so BookStack can write to it. You need to change the group to your host's `docker` group here to not lose access to the `storage` directory.
-4. **Run `echo -e "\n\nDOCKER_UID=$(id -u)" >> .env && echo "DOCKER_GID=$(id -g)" >> .env`** to add your UID/GID to the `.env` file. This is then used to set permissions inside the docker. This is necessary if you are working on Linux.
-5. **Run `docker-compose up`** and wait until the image is built and all database migrations have been done.
-6. You can now login with `admin@admin.com` and `password` as password on `localhost:8080` (or another port if specified).
+4. **Run `docker-compose up`** and wait until the image is built and all database migrations have been done.
+5. You can now login with `admin@admin.com` and `password` as password on `localhost:8080` (or another port if specified).
 
 If needed, You'll be able to run any artisan commands via docker-compose like so:
 
- ```shell script
+```shell script
 docker-compose run app php artisan list
 ```
 
 The docker-compose setup runs an instance of [MailHog](https://github.com/mailhog/MailHog) and sets environment variables to redirect any BookStack-sent emails to MailHog. You can view this mail via the MailHog web interface on `localhost:8025`. You can change the port MailHog is accessible on by setting a `DEV_MAIL_PORT` environment variable.
 
+#### Running tests
+
+After starting the general development Docker, seed the testing database:
+ ```shell script
+# this is to be done only once
+docker-compose run app php artisan db:seed --class=DummyContentSeeder --database=mysql_testing
+```
+
+Once the database has been seeded, you can run the tests by:
+ ```shell script
+docker-compose run app php vendor/bin/phpunit
+```
 ## ðŸŒŽ Translations
 
 Translations for text within BookStack is managed through the [BookStack project on Crowdin](https://crowdin.com/project/bookstack). Some strings have colon-prefixed variables in such as `:userName`. Leave these values as they are as they will be replaced at run-time. Crowdin is the preferred way to provide translations, otherwise the raw translations files can be found within the `resources/lang` path.
Morty Proxy This is a proxified and sanitized view of the page, visit original site.