Skip to content

Commit 6fb47c0

Browse files
committed
[TASK] composer acceptance tests
1 parent 82d15cf commit 6fb47c0

15 files changed

Lines changed: 267 additions & 1 deletion

File tree

.gitignore

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,8 @@ config
1111
.cache
1212
composer.json.orig
1313
composer.json.testing
14-
bck-runTests.sh
14+
Build/acceptance_tests/composer.json
15+
Build/acceptance_tests/composer.lock
16+
Build/acceptance_tests/vendor
17+
Build/acceptance_tests/b13-container
18+
Build/acceptance_tests/public

Build/acceptance_tests/README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
### composer acceptance tests
2+
3+
cd Build/acceptance_tests
4+
./setup_local.sh
5+
./start_env.sh
6+
php -d memory_limit=2G .Build/bin/codecept run Backend --env=local,localheadless,composer -c Tests/codeception.yml --fail-fast
7+
php -d memory_limit=2G .Build/bin/codecept run Backend --env=local,localheadless,composer -c Tests/codeception.yml Tests/Acceptance/Backend/PageTsConfigModuleCest.php
8+
./stop_env.sh
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{
2+
"repositories": [
3+
{"type": "path", "url": "b13-container"},
4+
{"type": "path", "url": "packages/*"}
5+
],
6+
"require": {
7+
"typo3/cms-backend": "^13.4",
8+
"typo3/cms-frontend": "^13.4",
9+
"typo3/cms-install": "^13.4",
10+
"typo3/cms-fluid-styled-content": "^13.4",
11+
"typo3/cms-info": "^13.4",
12+
"typo3/cms-workspaces": "^13.4",
13+
"b13/container": "@dev",
14+
"ichhabrecht/content-defender": "*",
15+
"typo3tests/dataset-import": "@dev",
16+
"typo3/testing-framework": "^9.1",
17+
"b13/container-example": "dev-master"
18+
},
19+
"config": {
20+
"allow-plugins": {
21+
"typo3/class-alias-loader": true,
22+
"typo3/cms-composer-installers": true
23+
}
24+
},
25+
"minimum-stability": "dev",
26+
"prefer-stable": true
27+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{
2+
"repositories": [
3+
{"type": "path", "url": "b13-container"},
4+
{"type": "path", "url": "packages/*"}
5+
],
6+
"require": {
7+
"typo3/cms-backend": "^14.3",
8+
"typo3/cms-frontend": "^14.3",
9+
"typo3/cms-install": "^14.3",
10+
"typo3/cms-fluid-styled-content": "^14.3",
11+
"typo3/cms-info": "^14.3",
12+
"typo3/cms-workspaces": "^14.3",
13+
"b13/container": "@dev",
14+
"typo3tests/dataset-import": "@dev",
15+
"typo3/testing-framework": "^9.1",
16+
"b13/container-example": "dev-master"
17+
},
18+
"config": {
19+
"allow-plugins": {
20+
"typo3/class-alias-loader": true,
21+
"typo3/cms-composer-installers": true
22+
}
23+
},
24+
"minimum-stability": "dev",
25+
"prefer-stable": true
26+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace TYPO3Tests\DatasetImport\Command;
6+
7+
use Symfony\Component\Console\Attribute\AsCommand;
8+
use Symfony\Component\Console\Command\Command;
9+
use Symfony\Component\Console\Input\InputArgument;
10+
use Symfony\Component\Console\Input\InputInterface;
11+
use Symfony\Component\Console\Output\OutputInterface;
12+
use TYPO3\TestingFramework\Core\Functional\Framework\DataHandling\DataSet;
13+
14+
#[AsCommand('dataset:import', 'Import Dataset')]
15+
class DatasetImportCommand extends Command
16+
{
17+
protected function configure(): void
18+
{
19+
$this->addArgument('path', InputArgument::REQUIRED, 'Path to CSV dataset to import');
20+
}
21+
22+
protected function execute(InputInterface $input, OutputInterface $output): int
23+
{
24+
DataSet::import($input->getArgument('path'));
25+
return Command::SUCCESS;
26+
}
27+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace TYPO3Tests\DatasetImport\Command;
6+
7+
use Symfony\Component\Console\Attribute\AsCommand;
8+
use Symfony\Component\Console\Command\Command;
9+
use Symfony\Component\Console\Input\InputInterface;
10+
use Symfony\Component\Console\Output\OutputInterface;
11+
use TYPO3\CMS\Core\Database\ConnectionPool;
12+
13+
#[AsCommand('dataset:empty-db')]
14+
class EmptyDbCommand extends Command
15+
{
16+
public function __construct(private readonly ConnectionPool $connectionPool, ?string $name = null, ?callable $code = null)
17+
{
18+
parent::__construct($name, $code);
19+
}
20+
21+
protected function execute(InputInterface $input, OutputInterface $output): int
22+
{
23+
$connection = $this->connectionPool->getConnectionForTable('be_users');
24+
$connection->truncate('be_users');
25+
return Command::SUCCESS;
26+
}
27+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
services:
2+
_defaults:
3+
autowire: true
4+
autoconfigure: true
5+
public: false
6+
7+
TYPO3Tests\DatasetImport\:
8+
resource: '../Classes/*'
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"name": "typo3tests/dataset-import",
3+
"type": "typo3-cms-extension",
4+
"description": "Support extension providing dataset:import command",
5+
"license": "GPL-2.0-or-later",
6+
"require": {
7+
"typo3/cms-core": "^13.4 || ^14.3",
8+
"typo3/testing-framework": "^9.1"
9+
},
10+
"extra": {
11+
"typo3/cms": {
12+
"extension-key": "dataset_import"
13+
}
14+
},
15+
"autoload": {
16+
"psr-4": {
17+
"TYPO3Tests\\DatasetImport\\": "Classes/"
18+
}
19+
}
20+
}

Build/acceptance_tests/restart.sh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/bin/sh
2+
3+
./stop_env.sh && ./setup.sh && ./stop_env.sh

Build/acceptance_tests/setup.sh

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
#!/bin/sh
2+
3+
set -e
4+
5+
export TYPO3_DB_DBNAME="bar"
6+
export TYPO3_DB_USERNAME="dev"
7+
export TYPO3_DB_PASSWORD="dev"
8+
export TYPO3_DB_HOST="127.0.0.1"
9+
export TYPO3_DB_DRIVER=mysqli
10+
export TYPO3_DB_PORT=3306
11+
export TYPO3_SERVER_TYPE=apache
12+
export TYPO3_PROJECT_NAME="Container Test"
13+
TYPO3_VERSION="${TYPO3:-14}"
14+
RELATIVE_ROOT="../../"
15+
PROJECT_PATH="."
16+
17+
echo "drop database if exists ${TYPO3_DB_DBNAME};" |mysql
18+
echo "create database ${TYPO3_DB_DBNAME} DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" |mysql
19+
20+
21+
ln -snf "${RELATIVE_ROOT}" "${PROJECT_PATH}/b13-container"
22+
23+
rm -rf composer.lock config/ public/ var/ vendor/
24+
25+
mkdir -p "config/system/"
26+
ln -snf "${RELATIVE_ROOT}sites" "${PROJECT_PATH}/config/sites"
27+
cat > "config/system/additional.php" <<\EOF
28+
<?php
29+
$GLOBALS['TYPO3_CONF_VARS']['BE']['debug'] = true;
30+
// "Temporary Password - 123"
31+
$GLOBALS['TYPO3_CONF_VARS']['BE']['installToolPassword'] = '$argon2i$v=19$m=65536,t=16,p=1$c3hCMGVXOHhRd0M3MzhSVw$WPQHpElapKMxsxfSkkXw5YQxGKN+rGmjM8vQv3g79YY';
32+
$GLOBALS['TYPO3_CONF_VARS']['SYS']['displayErrors'] = true;
33+
$GLOBALS['TYPO3_CONF_VARS']['SYS']['devIPmask'] = '*';
34+
$GLOBALS['TYPO3_CONF_VARS']['SYS']['exceptionalErrors'] = E_ALL;
35+
$GLOBALS['TYPO3_CONF_VARS']['SYS']['errorHandlerErrors'] = E_ALL;
36+
$GLOBALS['TYPO3_CONF_VARS']['SYS']['trustedHostsPattern'] = '.*';
37+
$GLOBALS['TYPO3_CONF_VARS']['GFX']['processor'] = 'GraphicsMagick';
38+
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['transport'] = 'mbox';
39+
$GLOBALS['TYPO3_CONF_VARS']['MAIL']['transport_mbox_file'] = \TYPO3\CMS\Core\Core\Environment::getVarPath() . '/log/mail.mbox';
40+
EOF
41+
42+
cp "composer.${TYPO3_VERSION}.json" composer.json
43+
44+
# `composer require` implicitly performs an initial install since there is no composer.lock.
45+
composer install --no-progress --no-interaction --dev
46+
vendor/bin/typo3 setup --force --no-interaction
47+
48+
echo "empty db"
49+
vendor/bin/typo3 dataset:empty-db
50+
51+
echo "import fixtures"
52+
# Import acceptance test fixtures. vendor/b13/container symlinks back to the
53+
# project root via the b13-container path repository.
54+
FIXTURES="vendor/b13/container/Tests/Acceptance/Fixtures"
55+
vendor/bin/typo3 dataset:import "${FIXTURES}/be_users.csv"
56+
vendor/bin/typo3 dataset:import "${FIXTURES}/be_groups.csv"
57+
vendor/bin/typo3 dataset:import "${FIXTURES}/sys_workspace.csv"
58+
vendor/bin/typo3 dataset:import "${FIXTURES}/pages.csv"
59+
vendor/bin/typo3 dataset:import "${FIXTURES}/contentDefenderMaxitems.csv"
60+
vendor/bin/typo3 dataset:import "${FIXTURES}/contentTCASelectCtype.csv"
61+
vendor/bin/typo3 dataset:import "${FIXTURES}/emptyPage.csv"
62+
vendor/bin/typo3 dataset:import "${FIXTURES}/pageWithContainer.csv"
63+
vendor/bin/typo3 dataset:import "${FIXTURES}/pageWithContainer-2.csv"
64+
vendor/bin/typo3 dataset:import "${FIXTURES}/pageWithContainer-3.csv"
65+
vendor/bin/typo3 dataset:import "${FIXTURES}/pageWithContainer-4.csv"
66+
vendor/bin/typo3 dataset:import "${FIXTURES}/pageWithContainer-5.csv"
67+
vendor/bin/typo3 dataset:import "${FIXTURES}/pageWithContainer-6.csv"
68+
vendor/bin/typo3 dataset:import "${FIXTURES}/pageWithDifferentContainers.csv"
69+
vendor/bin/typo3 dataset:import "${FIXTURES}/pageWithLocalization.csv"
70+
vendor/bin/typo3 dataset:import "${FIXTURES}/pageWithLocalizationFreeModeWithContainer.csv"
71+
vendor/bin/typo3 dataset:import "${FIXTURES}/pageWithTranslatedContainer.csv"
72+
vendor/bin/typo3 dataset:import "${FIXTURES}/pageWithTranslatedContainer-2.csv"
73+
vendor/bin/typo3 dataset:import "${FIXTURES}/pageWithWorkspace.csv"
74+
vendor/bin/typo3 dataset:import "${FIXTURES}/pageWithWorkspace-movedContainer.csv"
75+
vendor/bin/typo3 dataset:import "${FIXTURES}/pageWithWorkspace-changedContainer.csv"
76+
vendor/bin/typo3 dataset:import "${FIXTURES}/pageWithContainerAndContentElementOutside.csv"
77+
echo "finished"

0 commit comments

Comments
 (0)