diff --git a/.env.test b/.env.test
index 2ed1ce0f..f654aca0 100644
--- a/.env.test
+++ b/.env.test
@@ -3,5 +3,6 @@ KERNEL_CLASS='App\Kernel'
APP_SECRET='$ecretf0rt3st'
SYMFONY_DEPRECATIONS_HELPER=999999
PANTHER_APP_ENV=panther
+PANTHER_ERROR_SCREENSHOT_DIR=./var/error-screenshots
DATABASE_URL=mysql://root:@127.0.0.1:3306/part-db_test
\ No newline at end of file
diff --git a/bin/console b/bin/console
index 8fe9d494..c933dc53 100755
--- a/bin/console
+++ b/bin/console
@@ -3,41 +3,15 @@
use App\Kernel;
use Symfony\Bundle\FrameworkBundle\Console\Application;
-use Symfony\Component\Console\Input\ArgvInput;
-use Symfony\Component\Dotenv\Dotenv;
-use Symfony\Component\ErrorHandler\Debug;
-if (!in_array(PHP_SAPI, ['cli', 'phpdbg', 'embed'], true)) {
- echo 'Warning: The console should be invoked via the CLI version of PHP, not the '.PHP_SAPI.' SAPI'.PHP_EOL;
+if (!is_file(dirname(__DIR__).'/vendor/autoload_runtime.php')) {
+ throw new LogicException('Symfony Runtime is missing. Try running "composer require symfony/runtime".');
}
-set_time_limit(0);
+require_once dirname(__DIR__).'/vendor/autoload_runtime.php';
-require dirname(__DIR__).'/vendor/autoload.php';
+return function (array $context) {
+ $kernel = new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);
-if (!class_exists(Application::class) || !class_exists(Dotenv::class)) {
- throw new LogicException('You need to add "symfony/framework-bundle" and "symfony/dotenv" as Composer dependencies.');
-}
-
-$input = new ArgvInput();
-if (null !== $env = $input->getParameterOption(['--env', '-e'], null, true)) {
- putenv('APP_ENV='.$_SERVER['APP_ENV'] = $_ENV['APP_ENV'] = $env);
-}
-
-if ($input->hasParameterOption('--no-debug', true)) {
- putenv('APP_DEBUG='.$_SERVER['APP_DEBUG'] = $_ENV['APP_DEBUG'] = '0');
-}
-
-(new Dotenv())->bootEnv(dirname(__DIR__).'/.env');
-
-if ($_SERVER['APP_DEBUG']) {
- umask(0000);
-
- if (class_exists(Debug::class)) {
- Debug::enable();
- }
-}
-
-$kernel = new Kernel($_SERVER['APP_ENV'], (bool) $_SERVER['APP_DEBUG']);
-$application = new Application($kernel);
-$application->run($input);
+ return new Application($kernel);
+};
diff --git a/composer.json b/composer.json
index 03086810..f926f367 100644
--- a/composer.json
+++ b/composer.json
@@ -51,6 +51,7 @@
"symfony/property-access": "5.3.*",
"symfony/property-info": "5.3.*",
"symfony/proxy-manager-bridge": "5.3.*",
+ "symfony/runtime": "5.3.*",
"symfony/security-bundle": "5.3.*",
"symfony/serializer": "5.3.*",
"symfony/translation": "5.3.*",
@@ -116,7 +117,8 @@
"auto-scripts": {
"cache:clear": "symfony-cmd",
"ckeditor:install --clear=drop": "symfony-cmd",
- "assets:install %PUBLIC_DIR%": "symfony-cmd"
+ "assets:install %PUBLIC_DIR%": "symfony-cmd",
+ "ckeditor:install": "symfony-cmd"
},
"post-install-cmd": [
"@auto-scripts"
diff --git a/composer.lock b/composer.lock
index c247daa5..34cfcaf6 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "3a3e92b062d083353440e68f4db8c14b",
+ "content-hash": "0eb3aba14b3196ef61ed36e2fff7b0fd",
"packages": [
{
"name": "beberlei/assert",
@@ -9024,6 +9024,83 @@
],
"time": "2021-08-04T21:42:42+00:00"
},
+ {
+ "name": "symfony/runtime",
+ "version": "v5.3.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/runtime.git",
+ "reference": "685a4a5491e25c7f2dd251d8fcca583b427ff290"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/runtime/zipball/685a4a5491e25c7f2dd251d8fcca583b427ff290",
+ "reference": "685a4a5491e25c7f2dd251d8fcca583b427ff290",
+ "shasum": ""
+ },
+ "require": {
+ "composer-plugin-api": "^1.0|^2.0",
+ "php": ">=7.2.5",
+ "symfony/polyfill-php80": "^1.15"
+ },
+ "conflict": {
+ "symfony/dotenv": "<5.1"
+ },
+ "require-dev": {
+ "composer/composer": "^1.0.2|^2.0",
+ "symfony/console": "^4.4|^5",
+ "symfony/dotenv": "^5.1",
+ "symfony/http-foundation": "^4.4|^5",
+ "symfony/http-kernel": "^4.4|^5"
+ },
+ "type": "composer-plugin",
+ "extra": {
+ "class": "Symfony\\Component\\Runtime\\Internal\\ComposerPlugin"
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Runtime\\": "",
+ "Symfony\\Runtime\\Symfony\\Component\\": "Internal/"
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Grekas",
+ "email": "p@tchwork.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Enables decoupling PHP applications from global state",
+ "homepage": "https://symfony.com",
+ "support": {
+ "source": "https://github.com/symfony/runtime/tree/v5.3.4"
+ },
+ "funding": [
+ {
+ "url": "https://symfony.com/sponsor",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/fabpot",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2021-06-30T13:49:12+00:00"
+ },
{
"name": "symfony/security-bundle",
"version": "v5.3.8",
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
index 1351ebba..fada8c2e 100644
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -14,6 +14,7 @@
+
diff --git a/symfony.lock b/symfony.lock
index ce8dc043..0e21a69f 100644
--- a/symfony.lock
+++ b/symfony.lock
@@ -172,7 +172,7 @@
"repo": "github.com/symfony/recipes-contrib",
"branch": "master",
"version": "2.0",
- "ref": "8eb1cd0962ded6a6d6e1e5a9b6d3e888f9f94ff6"
+ "ref": "f5ad42002183a6881962683e6d84bbb25cdfce5d"
},
"files": [
"./config/packages/fos_ckeditor.yaml"
@@ -208,7 +208,7 @@
"repo": "github.com/symfony/recipes-contrib",
"branch": "master",
"version": "1.8",
- "ref": "5a5bdc2d0e2533ed6935d5ae562f2b318a8fc1ee"
+ "ref": "ffbb72e74598f04cc7f79f9fc736c77eeb98f569"
},
"files": [
"./config/packages/liip_imagine.yaml",
@@ -254,7 +254,7 @@
"repo": "github.com/symfony/recipes",
"branch": "master",
"version": "1.0",
- "ref": "7c0a9352a57376f04f5444e74565102c3a23d0c7"
+ "ref": "0cd4d2d0e7f646fda75f9944f747a56e6ed13d4c"
},
"files": [
"./config/packages/nyholm_psr7.yaml"
@@ -377,7 +377,7 @@
"repo": "github.com/symfony/recipes",
"branch": "master",
"version": "4.7",
- "ref": "3b372539f3886b07a7d80ff58d70abb6f2e4219a"
+ "ref": "b5b34fa22319ac1f7f6c180b30e160841c154a1e"
},
"files": [
"./.env.test",
@@ -506,7 +506,7 @@
"repo": "github.com/symfony/recipes-contrib",
"branch": "master",
"version": "1.0",
- "ref": "71599f5b0fdeeeec0fb90e9b17c85e6f5e1350c1"
+ "ref": "9d254a22efca7264203eea98b866f16f944b2f09"
},
"files": [
"./public/.htaccess"
@@ -528,12 +528,12 @@
"version": "v4.2.3"
},
"symfony/console": {
- "version": "5.1",
+ "version": "5.3",
"recipe": {
"repo": "github.com/symfony/recipes",
"branch": "master",
- "version": "5.1",
- "ref": "c6d02bdfba9da13c22157520e32a602dbee8a75c"
+ "version": "5.3",
+ "ref": "da0c8be8157600ad34f10ff0c9cc91232522e047"
},
"files": [
"./bin/console"
@@ -756,6 +756,9 @@
"./config/routes.yaml"
]
},
+ "symfony/runtime": {
+ "version": "v5.3.4"
+ },
"symfony/security-bundle": {
"version": "5.1",
"recipe": {
diff --git a/tests/bootstrap.php b/tests/bootstrap.php
index cc712a19..469dccee 100644
--- a/tests/bootstrap.php
+++ b/tests/bootstrap.php
@@ -1,7 +1,5 @@