mirror of
https://github.com/FriendsOfTYPO3/tea.git
synced 2024-12-25 18:26:11 +01:00
41b44c28a4
typo3/testing-framework provides some template files as kickstart for project and extension based testing. They are properly marked to be copied and not used directly from the package. The reason for this recommendation is, that project should make adjustments to theire concrete setup, like coverage settings and so on. This change clonses the corresponding template files from the testing-framework to folders in this extension, adjusts needed paths and ensure testing is still working. With that this best practice example follows the recommendation and best-practice for typo3/testing-framework usage. Tasks * provided cloned unit- and function test configuration and bootstrap files in `Build/phpunit/` * updated cloned phpunit configuration files to be phpunit v9 compatible, removing old coverage tag as this is done by cli options in this repository anyway * add proper xml namespacing to cloned phpunit configurations * adjustes config paths in unit and functional testing calls provided as composer scripts * adjusted phpunit configuration files in documentation Resolves #533
84 lines
4 KiB
PHP
84 lines
4 KiB
PHP
<?php
|
|
/*
|
|
* This file is part of the TYPO3 CMS project.
|
|
*
|
|
* It is free software; you can redistribute it and/or modify it under
|
|
* the terms of the GNU General Public License, either version 2
|
|
* of the License, or any later version.
|
|
*
|
|
* For the full copyright and license information, please read the
|
|
* LICENSE.txt file that was distributed with this source code.
|
|
*
|
|
* The TYPO3 project - inspiring people to share!
|
|
*/
|
|
|
|
/**
|
|
* Boilerplate for a unit test phpunit boostrap file.
|
|
*
|
|
* This file is loosely maintained within TYPO3 testing-framework, extensions
|
|
* are encouraged to not use it directly, but to copy it to an own place,
|
|
* usually in parallel to a UnitTests.xml file.
|
|
*
|
|
* This file is defined in UnitTests.xml and called by phpunit
|
|
* before instantiating the test suites.
|
|
*
|
|
* The recommended way to execute the suite is "runTests.sh". See the
|
|
* according script within TYPO3 core's Build/Scripts directory and
|
|
* adapt to extensions needs.
|
|
*/
|
|
(static function () {
|
|
$testbase = new \TYPO3\TestingFramework\Core\Testbase();
|
|
|
|
// These if's are for core testing (package typo3/cms) only. cms-composer-installer does
|
|
// not create the autoload-include.php file that sets these env vars and sets composer
|
|
// mode to true. testing-framework can not be used without composer anyway, so it is safe
|
|
// to do this here. This way it does not matter if 'bin/phpunit' or 'vendor/phpunit/phpunit/phpunit'
|
|
// is called to run the tests since the 'relative to entry script' path calculation within
|
|
// SystemEnvironmentBuilder is not used. However, the binary must be called from the document
|
|
// root since getWebRoot() uses 'getcwd()'.
|
|
if (!getenv('TYPO3_PATH_ROOT')) {
|
|
putenv('TYPO3_PATH_ROOT=' . rtrim($testbase->getWebRoot(), '/'));
|
|
}
|
|
if (!getenv('TYPO3_PATH_WEB')) {
|
|
putenv('TYPO3_PATH_WEB=' . rtrim($testbase->getWebRoot(), '/'));
|
|
}
|
|
|
|
$testbase->defineSitePath();
|
|
|
|
$requestType = \TYPO3\CMS\Core\Core\SystemEnvironmentBuilder::REQUESTTYPE_BE | \TYPO3\CMS\Core\Core\SystemEnvironmentBuilder::REQUESTTYPE_CLI;
|
|
\TYPO3\TestingFramework\Core\SystemEnvironmentBuilder::run(0, $requestType);
|
|
|
|
$testbase->createDirectory(\TYPO3\CMS\Core\Core\Environment::getPublicPath() . '/typo3conf/ext');
|
|
$testbase->createDirectory(\TYPO3\CMS\Core\Core\Environment::getPublicPath() . '/typo3temp/assets');
|
|
$testbase->createDirectory(\TYPO3\CMS\Core\Core\Environment::getPublicPath() . '/typo3temp/var/tests');
|
|
$testbase->createDirectory(\TYPO3\CMS\Core\Core\Environment::getPublicPath() . '/typo3temp/var/transient');
|
|
|
|
// Retrieve an instance of class loader and inject to core bootstrap
|
|
$classLoader = require $testbase->getPackagesPath() . '/autoload.php';
|
|
\TYPO3\CMS\Core\Core\Bootstrap::initializeClassLoader($classLoader);
|
|
|
|
// Initialize default TYPO3_CONF_VARS
|
|
$configurationManager = new \TYPO3\CMS\Core\Configuration\ConfigurationManager();
|
|
$GLOBALS['TYPO3_CONF_VARS'] = $configurationManager->getDefaultConfiguration();
|
|
|
|
$cache = new \TYPO3\CMS\Core\Cache\Frontend\PhpFrontend(
|
|
'core',
|
|
new \TYPO3\CMS\Core\Cache\Backend\NullBackend('production', [])
|
|
);
|
|
|
|
// Set all packages to active
|
|
if (interface_exists(\TYPO3\CMS\Core\Package\Cache\PackageCacheInterface::class)) {
|
|
$packageManager = \TYPO3\CMS\Core\Core\Bootstrap::createPackageManager(\TYPO3\CMS\Core\Package\UnitTestPackageManager::class, \TYPO3\CMS\Core\Core\Bootstrap::createPackageCache($cache));
|
|
} else {
|
|
// v10 compatibility layer
|
|
// @deprecated Will be removed when v10 compat is dropped from testing-framework
|
|
$packageManager = \TYPO3\CMS\Core\Core\Bootstrap::createPackageManager(\TYPO3\CMS\Core\Package\UnitTestPackageManager::class, $cache);
|
|
}
|
|
|
|
\TYPO3\CMS\Core\Utility\GeneralUtility::setSingletonInstance(\TYPO3\CMS\Core\Package\PackageManager::class, $packageManager);
|
|
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::setPackageManager($packageManager);
|
|
|
|
$testbase->dumpClassLoadingInformation();
|
|
|
|
\TYPO3\CMS\Core\Utility\GeneralUtility::purgeInstances();
|
|
})();
|