Add codeception packages to tests_env

[MAILPOET-6244]
This commit is contained in:
Rostislav Wolny
2024-11-20 10:36:54 +01:00
committed by Jan Lysý
parent e74e1ef2a2
commit 8c2fdc173c
4 changed files with 7118 additions and 0 deletions

1
.gitignore vendored
View File

@@ -10,3 +10,4 @@ mailpoet-premium
tsconfig.tsbuildinfo
/wordpress
packages/php/*/vendor
tests_env/vendor

29
tests_env/composer.json Normal file
View File

@@ -0,0 +1,29 @@
{
"minimum-stability": "dev",
"require-dev": {
"codeception/codeception": "4.2.2",
"codeception/module-asserts": "^1.3",
"codeception/module-cli": "^1.0",
"codeception/module-db": "^1.1",
"codeception/module-webdriver": "^1.4",
"codeception/verify": "^2.1",
"hoa/console": "3.17.05.02",
"lucatume/wp-browser": "3.2.1",
"phpunit/phpunit": "9.6.19",
"vlucas/phpdotenv": "v5.6.0"
},
"config": {
"platform": {
"php": "7.4"
},
"sort-packages": true
},
"scripts": {
"post-install-cmd": [
"php ./tasks/fix-php82-codeception.php"
],
"post-update-cmd": [
"php ./tasks/fix-php82-codeception.php"
]
}
}

7029
tests_env/composer.lock generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,59 @@
<?php
// throw exception if anything fails
set_error_handler(function ($severity, $message, $file, $line) {
throw new ErrorException($message, 0, $severity, $file, $line);
});
// Fixes for PHP8.2 Compatibility
$codeceptionStepReplacement = <<<'CODE'
$parentClass = get_parent_class($argument);
$reflection = new \ReflectionClass($argument);
if ($parentClass !== false) {
return $this->formatClassName($parentClass);
}
$interfaces = $reflection->getInterfaceNames();
foreach ($interfaces as $interface) {
if (str_starts_with($interface, 'PHPUnit\\')) {
continue;
}
if (str_starts_with($interface, 'Codeception\\')) {
continue;
}
return $this->formatClassName($interface);
}
CODE;
// Development packages
$replacements = [
[
'file' => __DIR__ . '/../vendor/codeception/stub/src/Stub.php',
'find' => [
' $mock->__mocked = $reflection->getName();',
],
'replace' => [
' //$mock->__mocked = $reflection->getName();',
],
],
[
'file' => __DIR__ . '/../vendor/codeception/codeception/src/Codeception/Step.php',
'find' => [
'} elseif ($argument instanceof MockObject && isset($argument->__mocked)) {',
'return $this->formatClassName($argument->__mocked);',
],
'replace' => [
'} elseif ($argument instanceof MockObject) {',
$codeceptionStepReplacement,
],
],
];
// Apply replacements
foreach ($replacements as $singleFile) {
$data = file_get_contents($singleFile['file']);
$data = str_replace($singleFile['find'], $singleFile['replace'], $data);
file_put_contents($singleFile['file'], $data);
}