Skip database reset on partial test run

This commit is contained in:
Yassine Guedidi 2024-01-12 21:57:18 +01:00
parent db5aa62509
commit e2b8ff3dc0
3 changed files with 65 additions and 28 deletions

View file

@ -200,7 +200,10 @@
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"files": [
"tests/functions.php"
]
},
"config": {
"allow-plugins": {

View file

@ -7,35 +7,37 @@ require __DIR__ . '/../vendor/autoload.php';
(new Filesystem())->remove(__DIR__ . '/../var/cache/test');
(new Process([
if (!isPartialRun()) {
(new Process([
'php',
__DIR__ . '/../bin/console',
'doctrine:database:drop',
'--force',
'--env=test',
]))->run(function ($type, $buffer) {
]))->run(function ($type, $buffer) {
echo $buffer;
});
});
(new Process([
(new Process([
'php',
__DIR__ . '/../bin/console',
'doctrine:database:create',
'--env=test',
]))->mustRun(function ($type, $buffer) {
]))->mustRun(function ($type, $buffer) {
echo $buffer;
});
});
(new Process([
(new Process([
'php',
__DIR__ . '/../bin/console',
'doctrine:migrations:migrate',
'--no-interaction',
'--env=test',
'-vv',
]))->mustRun(function ($type, $buffer) {
]))->mustRun(function ($type, $buffer) {
echo $buffer;
});
});
}
(new Process([
'php',

32
tests/functions.php Normal file
View file

@ -0,0 +1,32 @@
<?php
/*
* This files contains functions that are used in the tests, especially the bootstrap.php file.
*/
/**
* Returns true if the current test run is a partial run.
* A partial run is a run that only runs a subset of the tests using the --filter, --testsuite, --group or --exclude-group options.
*/
function isPartialRun(): bool
{
foreach ($_SERVER['argv'] as $arg) {
if (str_starts_with($arg, '--filter')) {
return true;
}
if (str_starts_with($arg, '--testsuite')) {
return true;
}
if (str_starts_with($arg, '--group')) {
return true;
}
if (str_starts_with($arg, '--exclude-group')) {
return true;
}
}
return false;
}