mirror of
https://github.com/FriendsOfTYPO3/tea.git
synced 2024-11-10 04:16:13 +01:00
Merge branch 'main' into feature/reuseController-893
This commit is contained in:
commit
5349412184
126 changed files with 1108 additions and 96298 deletions
|
@ -1,283 +0,0 @@
|
||||||
name: tea
|
|
||||||
type: php
|
|
||||||
docroot: ""
|
|
||||||
php_version: "8.1"
|
|
||||||
webserver_type: nginx-fpm
|
|
||||||
router_http_port: "8081"
|
|
||||||
router_https_port: "4434"
|
|
||||||
xdebug_enabled: false
|
|
||||||
additional_hostnames: []
|
|
||||||
additional_fqdns: []
|
|
||||||
database:
|
|
||||||
type: mariadb
|
|
||||||
version: "10.5"
|
|
||||||
hooks:
|
|
||||||
post-start:
|
|
||||||
- exec: composer install --no-progress
|
|
||||||
omit_containers: [dba, ddev-ssh-agent]
|
|
||||||
webimage_extra_packages: [parallel]
|
|
||||||
use_dns_when_possible: true
|
|
||||||
composer_version: "2"
|
|
||||||
web_environment:
|
|
||||||
- typo3DatabaseName=typo3
|
|
||||||
- typo3DatabaseHost=db
|
|
||||||
- typo3DatabaseUsername=root
|
|
||||||
- typo3DatabasePassword=root
|
|
||||||
nodejs_version: "16"
|
|
||||||
|
|
||||||
# Key features of DDEV's config.yaml:
|
|
||||||
|
|
||||||
# name: <projectname> # Name of the project, automatically provides
|
|
||||||
# http://projectname.ddev.site and https://projectname.ddev.site
|
|
||||||
|
|
||||||
# type: <projecttype> # drupal6/7/8, backdrop, typo3, wordpress, php
|
|
||||||
|
|
||||||
# docroot: <relative_path> # Relative path to the directory containing index.php.
|
|
||||||
|
|
||||||
# php_version: "8.1" # PHP version to use, "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0", "8.1", "8.2", "8.3"
|
|
||||||
|
|
||||||
# You can explicitly specify the webimage but this
|
|
||||||
# is not recommended, as the images are often closely tied to DDEV's' behavior,
|
|
||||||
# so this can break upgrades.
|
|
||||||
|
|
||||||
# webimage: <docker_image> # nginx/php docker image.
|
|
||||||
|
|
||||||
# database:
|
|
||||||
# type: <dbtype> # mysql, mariadb, postgres
|
|
||||||
# version: <version> # database version, like "10.4" or "8.0"
|
|
||||||
# MariaDB versions can be 5.5-10.8 and 10.11, MySQL versions can be 5.5-8.0
|
|
||||||
# PostgreSQL versions can be 9-16.
|
|
||||||
|
|
||||||
# router_http_port: <port> # Port to be used for http (defaults to global configuration, usually 80)
|
|
||||||
# router_https_port: <port> # Port for https (defaults to global configuration, usually 443)
|
|
||||||
|
|
||||||
# xdebug_enabled: false # Set to true to enable Xdebug and "ddev start" or "ddev restart"
|
|
||||||
# Note that for most people the commands
|
|
||||||
# "ddev xdebug" to enable Xdebug and "ddev xdebug off" to disable it work better,
|
|
||||||
# as leaving Xdebug enabled all the time is a big performance hit.
|
|
||||||
|
|
||||||
# xhprof_enabled: false # Set to true to enable Xhprof and "ddev start" or "ddev restart"
|
|
||||||
# Note that for most people the commands
|
|
||||||
# "ddev xhprof" to enable Xhprof and "ddev xhprof off" to disable it work better,
|
|
||||||
# as leaving Xhprof enabled all the time is a big performance hit.
|
|
||||||
|
|
||||||
# webserver_type: nginx-fpm, apache-fpm, or nginx-gunicorn
|
|
||||||
|
|
||||||
# timezone: Europe/Berlin
|
|
||||||
# This is the timezone used in the containers and by PHP;
|
|
||||||
# it can be set to any valid timezone,
|
|
||||||
# see https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
|
|
||||||
# For example Europe/Dublin or MST7MDT
|
|
||||||
|
|
||||||
# composer_root: <relative_path>
|
|
||||||
# Relative path to the Composer root directory from the project root. This is
|
|
||||||
# the directory which contains the composer.json and where all Composer related
|
|
||||||
# commands are executed.
|
|
||||||
|
|
||||||
# composer_version: "2"
|
|
||||||
# You can set it to "" or "2" (default) for Composer v2 or "1" for Composer v1
|
|
||||||
# to use the latest major version available at the time your container is built.
|
|
||||||
# It is also possible to use each other Composer version channel. This includes:
|
|
||||||
# - 2.2 (latest Composer LTS version)
|
|
||||||
# - stable
|
|
||||||
# - preview
|
|
||||||
# - snapshot
|
|
||||||
# Alternatively, an explicit Composer version may be specified, for example "2.2.18".
|
|
||||||
# To reinstall Composer after the image was built, run "ddev debug refresh".
|
|
||||||
|
|
||||||
# nodejs_version: "18"
|
|
||||||
# change from the default system Node.js version to another supported version, like 16, 18, 20.
|
|
||||||
# Note that you can use 'ddev nvm' or nvm inside the web container to provide nearly any
|
|
||||||
# Node.js version, including v6, etc.
|
|
||||||
# You only need to configure this if you are not using nvm and you want to use a major
|
|
||||||
# version that is not the default.
|
|
||||||
|
|
||||||
# additional_hostnames:
|
|
||||||
# - somename
|
|
||||||
# - someothername
|
|
||||||
# would provide http and https URLs for "somename.ddev.site"
|
|
||||||
# and "someothername.ddev.site".
|
|
||||||
|
|
||||||
# additional_fqdns:
|
|
||||||
# - example.com
|
|
||||||
# - sub1.example.com
|
|
||||||
# would provide http and https URLs for "example.com" and "sub1.example.com"
|
|
||||||
# Please take care with this because it can cause great confusion.
|
|
||||||
|
|
||||||
# upload_dirs: "custom/upload/dir"
|
|
||||||
#
|
|
||||||
# upload_dirs:
|
|
||||||
# - custom/upload/dir
|
|
||||||
# - ../private
|
|
||||||
#
|
|
||||||
# would set the destination paths for ddev import-files to <docroot>/custom/upload/dir
|
|
||||||
# When Mutagen is enabled this path is bind-mounted so that all the files
|
|
||||||
# in the upload_dirs don't have to be synced into Mutagen.
|
|
||||||
|
|
||||||
# disable_upload_dirs_warning: false
|
|
||||||
# If true, turns off the normal warning that says
|
|
||||||
# "You have Mutagen enabled and your 'php' project type doesn't have upload_dirs set"
|
|
||||||
|
|
||||||
# ddev_version_constraint: ""
|
|
||||||
# Example:
|
|
||||||
# ddev_version_constraint: ">= 1.22.4"
|
|
||||||
# This will enforce that the running ddev version is within this constraint.
|
|
||||||
# See https://github.com/Masterminds/semver#checking-version-constraints for
|
|
||||||
# supported constraint formats
|
|
||||||
|
|
||||||
# working_dir:
|
|
||||||
# web: /var/www/html
|
|
||||||
# db: /home
|
|
||||||
# would set the default working directory for the web and db services.
|
|
||||||
# These values specify the destination directory for ddev ssh and the
|
|
||||||
# directory in which commands passed into ddev exec are run.
|
|
||||||
|
|
||||||
# omit_containers: [db, ddev-ssh-agent]
|
|
||||||
# Currently only these containers are supported. Some containers can also be
|
|
||||||
# omitted globally in the ~/.ddev/global_config.yaml. Note that if you omit
|
|
||||||
# the "db" container, several standard features of DDEV that access the
|
|
||||||
# database container will be unusable. In the global configuration it is also
|
|
||||||
# possible to omit ddev-router, but not here.
|
|
||||||
|
|
||||||
# performance_mode: "global"
|
|
||||||
# DDEV offers performance optimization strategies to improve the filesystem
|
|
||||||
# performance depending on your host system. Should be configured globally.
|
|
||||||
#
|
|
||||||
# If set, will override the global config. Possible values are:
|
|
||||||
# - "global": uses the value from the global config.
|
|
||||||
# - "none": disables performance optimization for this project.
|
|
||||||
# - "mutagen": enables Mutagen for this project.
|
|
||||||
# - "nfs": enables NFS for this project.
|
|
||||||
#
|
|
||||||
# See https://ddev.readthedocs.io/en/latest/users/install/performance/#nfs
|
|
||||||
# See https://ddev.readthedocs.io/en/latest/users/install/performance/#mutagen
|
|
||||||
|
|
||||||
# fail_on_hook_fail: False
|
|
||||||
# Decide whether 'ddev start' should be interrupted by a failing hook
|
|
||||||
|
|
||||||
# host_https_port: "59002"
|
|
||||||
# The host port binding for https can be explicitly specified. It is
|
|
||||||
# dynamic unless otherwise specified.
|
|
||||||
# This is not used by most people, most people use the *router* instead
|
|
||||||
# of the localhost port.
|
|
||||||
|
|
||||||
# host_webserver_port: "59001"
|
|
||||||
# The host port binding for the ddev-webserver can be explicitly specified. It is
|
|
||||||
# dynamic unless otherwise specified.
|
|
||||||
# This is not used by most people, most people use the *router* instead
|
|
||||||
# of the localhost port.
|
|
||||||
|
|
||||||
# host_db_port: "59002"
|
|
||||||
# The host port binding for the ddev-dbserver can be explicitly specified. It is dynamic
|
|
||||||
# unless explicitly specified.
|
|
||||||
|
|
||||||
# mailpit_http_port: "8025"
|
|
||||||
# mailpit_https_port: "8026"
|
|
||||||
# The Mailpit ports can be changed from the default 8025 and 8026
|
|
||||||
|
|
||||||
# host_mailpit_port: "8025"
|
|
||||||
# The mailpit port is not normally bound on the host at all, instead being routed
|
|
||||||
# through ddev-router, but it can be bound directly to localhost if specified here.
|
|
||||||
|
|
||||||
# webimage_extra_packages: [php7.4-tidy, php-bcmath]
|
|
||||||
# Extra Debian packages that are needed in the webimage can be added here
|
|
||||||
|
|
||||||
# dbimage_extra_packages: [telnet,netcat]
|
|
||||||
# Extra Debian packages that are needed in the dbimage can be added here
|
|
||||||
|
|
||||||
# use_dns_when_possible: true
|
|
||||||
# If the host has internet access and the domain configured can
|
|
||||||
# successfully be looked up, DNS will be used for hostname resolution
|
|
||||||
# instead of editing /etc/hosts
|
|
||||||
# Defaults to true
|
|
||||||
|
|
||||||
# project_tld: ddev.site
|
|
||||||
# The top-level domain used for project URLs
|
|
||||||
# The default "ddev.site" allows DNS lookup via a wildcard
|
|
||||||
# If you prefer you can change this to "ddev.local" to preserve
|
|
||||||
# pre-v1.9 behavior.
|
|
||||||
|
|
||||||
# ngrok_args: --basic-auth username:pass1234
|
|
||||||
# Provide extra flags to the "ngrok http" command, see
|
|
||||||
# https://ngrok.com/docs/ngrok-agent/config or run "ngrok http -h"
|
|
||||||
|
|
||||||
# disable_settings_management: false
|
|
||||||
# If true, DDEV will not create CMS-specific settings files like
|
|
||||||
# Drupal's settings.php/settings.ddev.php or TYPO3's AdditionalConfiguration.php
|
|
||||||
# In this case the user must provide all such settings.
|
|
||||||
|
|
||||||
# You can inject environment variables into the web container with:
|
|
||||||
# web_environment:
|
|
||||||
# - SOMEENV=somevalue
|
|
||||||
# - SOMEOTHERENV=someothervalue
|
|
||||||
|
|
||||||
# no_project_mount: false
|
|
||||||
# (Experimental) If true, DDEV will not mount the project into the web container;
|
|
||||||
# the user is responsible for mounting it manually or via a script.
|
|
||||||
# This is to enable experimentation with alternate file mounting strategies.
|
|
||||||
# For advanced users only!
|
|
||||||
|
|
||||||
# bind_all_interfaces: false
|
|
||||||
# If true, host ports will be bound on all network interfaces,
|
|
||||||
# not the localhost interface only. This means that ports
|
|
||||||
# will be available on the local network if the host firewall
|
|
||||||
# allows it.
|
|
||||||
|
|
||||||
# default_container_timeout: 120
|
|
||||||
# The default time that DDEV waits for all containers to become ready can be increased from
|
|
||||||
# the default 120. This helps in importing huge databases, for example.
|
|
||||||
|
|
||||||
#web_extra_exposed_ports:
|
|
||||||
#- name: nodejs
|
|
||||||
# container_port: 3000
|
|
||||||
# http_port: 2999
|
|
||||||
# https_port: 3000
|
|
||||||
#- name: something
|
|
||||||
# container_port: 4000
|
|
||||||
# https_port: 4000
|
|
||||||
# http_port: 3999
|
|
||||||
# Allows a set of extra ports to be exposed via ddev-router
|
|
||||||
# Fill in all three fields even if you don’t intend to use the https_port!
|
|
||||||
# If you don’t add https_port, then it defaults to 0 and ddev-router will fail to start.
|
|
||||||
#
|
|
||||||
# The port behavior on the ddev-webserver must be arranged separately, for example
|
|
||||||
# using web_extra_daemons.
|
|
||||||
# For example, with a web app on port 3000 inside the container, this config would
|
|
||||||
# expose that web app on https://<project>.ddev.site:9999 and http://<project>.ddev.site:9998
|
|
||||||
# web_extra_exposed_ports:
|
|
||||||
# - name: myapp
|
|
||||||
# container_port: 3000
|
|
||||||
# http_port: 9998
|
|
||||||
# https_port: 9999
|
|
||||||
|
|
||||||
#web_extra_daemons:
|
|
||||||
#- name: "http-1"
|
|
||||||
# command: "/var/www/html/node_modules/.bin/http-server -p 3000"
|
|
||||||
# directory: /var/www/html
|
|
||||||
#- name: "http-2"
|
|
||||||
# command: "/var/www/html/node_modules/.bin/http-server /var/www/html/sub -p 3000"
|
|
||||||
# directory: /var/www/html
|
|
||||||
|
|
||||||
# override_config: false
|
|
||||||
# By default, config.*.yaml files are *merged* into the configuration
|
|
||||||
# But this means that some things can't be overridden
|
|
||||||
# For example, if you have 'use_dns_when_possible: true'' you can't override it with a merge
|
|
||||||
# and you can't erase existing hooks or all environment variables.
|
|
||||||
# However, with "override_config: true" in a particular config.*.yaml file,
|
|
||||||
# 'use_dns_when_possible: false' can override the existing values, and
|
|
||||||
# hooks:
|
|
||||||
# post-start: []
|
|
||||||
# or
|
|
||||||
# web_environment: []
|
|
||||||
# or
|
|
||||||
# additional_hostnames: []
|
|
||||||
# can have their intended affect. 'override_config' affects only behavior of the
|
|
||||||
# config.*.yaml file it exists in.
|
|
||||||
|
|
||||||
# Many DDEV commands can be extended to run tasks before or after the
|
|
||||||
# DDEV command is executed, for example "post-start", "post-import-db",
|
|
||||||
# "pre-composer", "post-composer"
|
|
||||||
# See https://ddev.readthedocs.io/en/stable/users/extend/custom-commands/ for more
|
|
||||||
# information on the commands that can be extended and the tasks you can define
|
|
||||||
# for them. Example:
|
|
||||||
#hooks:
|
|
|
@ -1,2 +0,0 @@
|
||||||
[PHP]
|
|
||||||
xdebug.mode=coverage,debug
|
|
|
@ -1 +0,0 @@
|
||||||
node_modules
|
|
|
@ -1,20 +0,0 @@
|
||||||
{
|
|
||||||
"root": true,
|
|
||||||
"extends": [
|
|
||||||
"eslint:recommended",
|
|
||||||
"plugin:prettier/recommended"
|
|
||||||
],
|
|
||||||
"env": {
|
|
||||||
"browser": true,
|
|
||||||
"node": true,
|
|
||||||
"es6": true,
|
|
||||||
"amd": true,
|
|
||||||
"jquery": true
|
|
||||||
},
|
|
||||||
"globals": {
|
|
||||||
"TYPO3": "readonly"
|
|
||||||
},
|
|
||||||
"parserOptions": {
|
|
||||||
"ecmaVersion": 8
|
|
||||||
}
|
|
||||||
}
|
|
5
.gitattributes
vendored
5
.gitattributes
vendored
|
@ -1,8 +1,7 @@
|
||||||
/.Build/ export-ignore
|
/.Build/ export-ignore
|
||||||
/.ddev/ export-ignore
|
|
||||||
/.editorconfig export-ignore
|
/.editorconfig export-ignore
|
||||||
/.eslintignore export-ignore
|
/.eslintignore export-ignore
|
||||||
/.eslintrc.json export-ignore
|
/eslint.config.json export-ignore
|
||||||
/.gitattributes export-ignore
|
/.gitattributes export-ignore
|
||||||
/.github/ export-ignore
|
/.github/ export-ignore
|
||||||
/.gitignore export-ignore
|
/.gitignore export-ignore
|
||||||
|
@ -11,6 +10,8 @@
|
||||||
/.phpstorm.meta.php export-ignore
|
/.phpstorm.meta.php export-ignore
|
||||||
/.prettierrc.js export-ignore
|
/.prettierrc.js export-ignore
|
||||||
/Build/ export-ignore
|
/Build/ export-ignore
|
||||||
|
/Configuration/FunctionalTests.xml export-ignore
|
||||||
|
/Configuration/UnitTests.xml export-ignore
|
||||||
/Tests/ export-ignore
|
/Tests/ export-ignore
|
||||||
/package.json export-ignore
|
/package.json export-ignore
|
||||||
/phive.xml export-ignore
|
/phive.xml export-ignore
|
||||||
|
|
17
.github/dependabot.yml
vendored
17
.github/dependabot.yml
vendored
|
@ -6,7 +6,10 @@ updates:
|
||||||
directory: "/"
|
directory: "/"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
milestone: 6
|
# adjust this number according to your own milestones if used.
|
||||||
|
milestone: 12
|
||||||
|
commit-message:
|
||||||
|
prefix: "[TASK] "
|
||||||
|
|
||||||
- package-ecosystem: "composer"
|
- package-ecosystem: "composer"
|
||||||
directory: "/"
|
directory: "/"
|
||||||
|
@ -18,14 +21,22 @@ updates:
|
||||||
- dependency-name: "doctrine/dbal"
|
- dependency-name: "doctrine/dbal"
|
||||||
- dependency-name: "phpunit/phpunit"
|
- dependency-name: "phpunit/phpunit"
|
||||||
versions: [ "^10.0" ]
|
versions: [ "^10.0" ]
|
||||||
|
- dependency-name: "symfony/console"
|
||||||
|
- dependency-name: "symfony/translation"
|
||||||
- dependency-name: "symfony/yaml"
|
- dependency-name: "symfony/yaml"
|
||||||
- dependency-name: "typo3/cms-*"
|
- dependency-name: "typo3/cms-*"
|
||||||
versioning-strategy: "increase"
|
versioning-strategy: "increase"
|
||||||
milestone: 6
|
# adjust this number according to your own milestones if used.
|
||||||
|
milestone: 12
|
||||||
|
commit-message:
|
||||||
|
prefix: "[TASK] "
|
||||||
|
|
||||||
- package-ecosystem: "npm"
|
- package-ecosystem: "npm"
|
||||||
directory: "/"
|
directory: "/"
|
||||||
schedule:
|
schedule:
|
||||||
interval: "daily"
|
interval: "daily"
|
||||||
versioning-strategy: "increase"
|
versioning-strategy: "increase"
|
||||||
milestone: 6
|
# adjust this number according to your own milestones if used.
|
||||||
|
milestone: 12
|
||||||
|
commit-message:
|
||||||
|
prefix: "[TASK] "
|
||||||
|
|
2
.github/workflows/auto-approve.yml
vendored
2
.github/workflows/auto-approve.yml
vendored
|
@ -18,7 +18,7 @@ jobs:
|
||||||
steps:
|
steps:
|
||||||
- name: Dependabot metadata
|
- name: Dependabot metadata
|
||||||
id: metadata
|
id: metadata
|
||||||
uses: dependabot/fetch-metadata@v1
|
uses: dependabot/fetch-metadata@v2
|
||||||
with:
|
with:
|
||||||
github-token: "${{ secrets.GITHUB_TOKEN }}"
|
github-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||||
|
|
||||||
|
|
33
.github/workflows/ci.yml
vendored
33
.github/workflows/ci.yml
vendored
|
@ -22,6 +22,7 @@ jobs:
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: "${{ matrix.php-version }}"
|
php-version: "${{ matrix.php-version }}"
|
||||||
|
ini-file: development
|
||||||
coverage: none
|
coverage: none
|
||||||
tools: composer:v2
|
tools: composer:v2
|
||||||
- name: "Show the Composer configuration"
|
- name: "Show the Composer configuration"
|
||||||
|
@ -47,6 +48,7 @@ jobs:
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: "${{ matrix.php-version }}"
|
php-version: "${{ matrix.php-version }}"
|
||||||
|
ini-file: development
|
||||||
coverage: none
|
coverage: none
|
||||||
tools: composer:v2
|
tools: composer:v2
|
||||||
- name: "Show Composer version"
|
- name: "Show Composer version"
|
||||||
|
@ -54,13 +56,13 @@ jobs:
|
||||||
- name: "Show the Composer configuration"
|
- name: "Show the Composer configuration"
|
||||||
run: "composer config --global --list"
|
run: "composer config --global --list"
|
||||||
- name: "Cache dependencies installed with composer"
|
- name: "Cache dependencies installed with composer"
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
key: "php${{ matrix.php-version }}-composer-${{ hashFiles('**/composer.json') }}"
|
key: "php${{ matrix.php-version }}-composer-${{ hashFiles('**/composer.json') }}"
|
||||||
path: ~/.cache/composer
|
path: ~/.cache/composer
|
||||||
restore-keys: "php${{ matrix.php-version }}-composer-\n"
|
restore-keys: "php${{ matrix.php-version }}-composer-\n"
|
||||||
- name: "Install Composer dependencies"
|
- name: "Install Composer dependencies"
|
||||||
run: "composer install --no-progress"
|
run: "composer update --no-progress"
|
||||||
- name: "Run command"
|
- name: "Run command"
|
||||||
run: "composer ci:${{ matrix.command }}"
|
run: "composer ci:${{ matrix.command }}"
|
||||||
strategy:
|
strategy:
|
||||||
|
@ -75,8 +77,9 @@ jobs:
|
||||||
- "php:stan"
|
- "php:stan"
|
||||||
- "ts:lint"
|
- "ts:lint"
|
||||||
- "yaml:lint"
|
- "yaml:lint"
|
||||||
|
- "xliff:lint"
|
||||||
php-version:
|
php-version:
|
||||||
- "8.1"
|
- "8.3"
|
||||||
code-quality-frontend:
|
code-quality-frontend:
|
||||||
name: "Code quality frontend checks"
|
name: "Code quality frontend checks"
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
|
@ -93,14 +96,6 @@ jobs:
|
||||||
run: yarn
|
run: yarn
|
||||||
- name: "Run command"
|
- name: "Run command"
|
||||||
run: "yarn lint:${{ matrix.command }}"
|
run: "yarn lint:${{ matrix.command }}"
|
||||||
xliff-lint:
|
|
||||||
name: "Xliff linter"
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
steps:
|
|
||||||
- name: "Checkout"
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: "Run the xliff lint"
|
|
||||||
uses: TYPO3-Continuous-Integration/TYPO3-CI-Xliff-Lint@v1
|
|
||||||
unit-tests:
|
unit-tests:
|
||||||
name: "Unit tests"
|
name: "Unit tests"
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-22.04
|
||||||
|
@ -112,6 +107,7 @@ jobs:
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: "${{ matrix.php-version }}"
|
php-version: "${{ matrix.php-version }}"
|
||||||
|
ini-file: development
|
||||||
coverage: none
|
coverage: none
|
||||||
tools: composer:v2
|
tools: composer:v2
|
||||||
- name: "Show Composer version"
|
- name: "Show Composer version"
|
||||||
|
@ -119,7 +115,7 @@ jobs:
|
||||||
- name: "Show the Composer configuration"
|
- name: "Show the Composer configuration"
|
||||||
run: "composer config --global --list"
|
run: "composer config --global --list"
|
||||||
- name: "Cache dependencies installed with composer"
|
- name: "Cache dependencies installed with composer"
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
key: "php${{ matrix.php-version }}-typo3${{ matrix.typo3-version }}-${{ matrix.composer-dependencies }}-composer-${{ hashFiles('**/composer.json') }}"
|
key: "php${{ matrix.php-version }}-typo3${{ matrix.typo3-version }}-${{ matrix.composer-dependencies }}-composer-${{ hashFiles('**/composer.json') }}"
|
||||||
path: ~/.cache/composer
|
path: ~/.cache/composer
|
||||||
|
@ -210,6 +206,7 @@ jobs:
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: "${{ matrix.php-version }}"
|
php-version: "${{ matrix.php-version }}"
|
||||||
|
ini-file: development
|
||||||
tools: composer:v2
|
tools: composer:v2
|
||||||
extensions: mysqli
|
extensions: mysqli
|
||||||
coverage: none
|
coverage: none
|
||||||
|
@ -218,7 +215,7 @@ jobs:
|
||||||
- name: "Show the Composer configuration"
|
- name: "Show the Composer configuration"
|
||||||
run: "composer config --global --list"
|
run: "composer config --global --list"
|
||||||
- name: "Cache dependencies installed with composer"
|
- name: "Cache dependencies installed with composer"
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
key: "php${{ matrix.php-version }}-typo3${{ matrix.typo3-version }}-${{ matrix.composer-dependencies }}-composer-${{ hashFiles('**/composer.json') }}"
|
key: "php${{ matrix.php-version }}-typo3${{ matrix.typo3-version }}-${{ matrix.composer-dependencies }}-composer-${{ hashFiles('**/composer.json') }}"
|
||||||
path: ~/.cache/composer
|
path: ~/.cache/composer
|
||||||
|
@ -300,3 +297,13 @@ jobs:
|
||||||
- typo3-version: "^12.4"
|
- typo3-version: "^12.4"
|
||||||
php-version: "8.3"
|
php-version: "8.3"
|
||||||
composer-dependencies: highest
|
composer-dependencies: highest
|
||||||
|
documentation:
|
||||||
|
name: Documentation
|
||||||
|
runs-on: ubuntu-22.04
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
- name: Test if the documentation will render without warnings
|
||||||
|
run: |
|
||||||
|
docker run --rm --pull always -v $(pwd):/project \
|
||||||
|
ghcr.io/typo3-documentation/render-guides:latest --config=Documentation --no-progress --fail-on-log
|
||||||
|
|
17
.github/workflows/codecoverage.yml
vendored
17
.github/workflows/codecoverage.yml
vendored
|
@ -26,14 +26,19 @@ jobs:
|
||||||
uses: shivammathur/setup-php@v2
|
uses: shivammathur/setup-php@v2
|
||||||
with:
|
with:
|
||||||
php-version: "${{ matrix.php-version }}"
|
php-version: "${{ matrix.php-version }}"
|
||||||
|
ini-file: development
|
||||||
tools: composer:v2, phive
|
tools: composer:v2, phive
|
||||||
extensions: mysqli
|
extensions: mysqli
|
||||||
coverage: pcov
|
coverage: pcov
|
||||||
ini-values: pcov.directory=Classes
|
ini-values: pcov.directory=Classes
|
||||||
|
- name: "Install development tools"
|
||||||
|
run: phive --no-progress install --trust-gpg-keys D8406D0D82947747293778314AA394086372C20A
|
||||||
- name: "Show Composer version"
|
- name: "Show Composer version"
|
||||||
run: composer --version
|
run: composer --version
|
||||||
|
- name: "Show the Composer configuration"
|
||||||
|
run: composer config --global --list
|
||||||
- name: "Cache dependencies installed with composer"
|
- name: "Cache dependencies installed with composer"
|
||||||
uses: actions/cache@v3
|
uses: actions/cache@v4
|
||||||
with:
|
with:
|
||||||
key: "php${{ matrix.php-version }}-typo3${{ matrix.typo3-version }}-${{ matrix.composer-dependencies }}-composer-${{ hashFiles('**/composer.json') }}"
|
key: "php${{ matrix.php-version }}-typo3${{ matrix.typo3-version }}-${{ matrix.composer-dependencies }}-composer-${{ hashFiles('**/composer.json') }}"
|
||||||
path: ~/.cache/composer
|
path: ~/.cache/composer
|
||||||
|
@ -58,6 +63,8 @@ jobs:
|
||||||
run: "sudo /etc/init.d/mysql start"
|
run: "sudo /etc/init.d/mysql start"
|
||||||
- name: "Run unit tests with coverage"
|
- name: "Run unit tests with coverage"
|
||||||
run: composer ci:coverage:unit
|
run: composer ci:coverage:unit
|
||||||
|
- name: "Show generated coverage files"
|
||||||
|
run: "ls -lahR .Build/coverage/"
|
||||||
- name: "Run functional tests with coverage"
|
- name: "Run functional tests with coverage"
|
||||||
run: |
|
run: |
|
||||||
export typo3DatabaseName="$DB_DATABASE";
|
export typo3DatabaseName="$DB_DATABASE";
|
||||||
|
@ -65,8 +72,12 @@ jobs:
|
||||||
export typo3DatabaseUsername="$DB_USER";
|
export typo3DatabaseUsername="$DB_USER";
|
||||||
export typo3DatabasePassword="$DB_PASSWORD";
|
export typo3DatabasePassword="$DB_PASSWORD";
|
||||||
composer ci:coverage:functional
|
composer ci:coverage:functional
|
||||||
|
- name: "Show generated coverage files"
|
||||||
|
run: "ls -lahR .Build/coverage/"
|
||||||
- name: "Merge coverage results"
|
- name: "Merge coverage results"
|
||||||
run: composer ci:coverage:merge
|
run: composer ci:coverage:merge
|
||||||
|
- name: "Show merged coverage files"
|
||||||
|
run: "ls -lahR ./.Build/logs/"
|
||||||
- name: "Upload coverage results to Coveralls"
|
- name: "Upload coverage results to Coveralls"
|
||||||
env:
|
env:
|
||||||
COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
@ -75,6 +86,6 @@ jobs:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- typo3-version: "^11.5"
|
- typo3-version: "^12.4"
|
||||||
php-version: "7.4"
|
php-version: "8.3"
|
||||||
composer-dependencies: highest
|
composer-dependencies: highest
|
||||||
|
|
315
.github/workflows/predefined.yml
vendored
315
.github/workflows/predefined.yml
vendored
|
@ -1,315 +0,0 @@
|
||||||
# This workflow does not use the Composer actions for calling the tools.
|
|
||||||
# Use this workflow if you do not intend to call the code quality checks locally,
|
|
||||||
# but only in the CI builds.
|
|
||||||
#
|
|
||||||
# Note that, to keep things fast, pull requests and pushes do not trigger this workflow.
|
|
||||||
# If you are going to use this workflow, please copy the corresponding trigger settings from the `ci.yml` workflow.
|
|
||||||
---
|
|
||||||
name: CI with predefined GitHub actions
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
jobs:
|
|
||||||
php-lint:
|
|
||||||
name: "PHP linter"
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
steps:
|
|
||||||
- name: "Checkout"
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: "Install PHP"
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
|
||||||
php-version: "${{ matrix.php-version }}"
|
|
||||||
coverage: none
|
|
||||||
tools: composer:v2
|
|
||||||
- name: "Run PHP lint"
|
|
||||||
run: "composer ci:php:lint"
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
php-version:
|
|
||||||
- "7.4"
|
|
||||||
- "8.0"
|
|
||||||
- "8.1"
|
|
||||||
- "8.2"
|
|
||||||
typoscript-lint:
|
|
||||||
name: "TypoScript linter"
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
steps:
|
|
||||||
- name: "Checkout"
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: "Run TypoScript lint"
|
|
||||||
uses: TYPO3-Continuous-Integration/TYPO3-CI-Typoscript-Lint@v1
|
|
||||||
php-codesniffer:
|
|
||||||
name: "PHP Codesniffer"
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
needs: php-lint
|
|
||||||
steps:
|
|
||||||
- name: "Checkout"
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: "Run PHP Codesniffer"
|
|
||||||
uses: TYPO3-Continuous-Integration/TYPO3-CI-PHP-Codesniffer@v1
|
|
||||||
yaml-lint:
|
|
||||||
name: "YAML linter"
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
steps:
|
|
||||||
- name: "Checkout"
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: "Run YAML lint"
|
|
||||||
uses: TYPO3-Continuous-Integration/TYPO3-CI-YAML-Lint@v1
|
|
||||||
json-lint:
|
|
||||||
name: "JSON linter"
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
steps:
|
|
||||||
- name: "Checkout"
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: "Run JSON lint"
|
|
||||||
uses: TYPO3-Continuous-Integration/TYPO3-CI-JSON-Lint@v1
|
|
||||||
php-cs-fixer:
|
|
||||||
name: "PHP CS Fixer"
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
needs: php-lint
|
|
||||||
steps:
|
|
||||||
- name: "Checkout"
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: "Run PHP CS Fixer"
|
|
||||||
uses: TYPO3-Continuous-Integration/TYPO3-CI-PHP-CS-Fixer@v1
|
|
||||||
phpstan-check:
|
|
||||||
name: "PHPStan check"
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
needs: php-lint
|
|
||||||
steps:
|
|
||||||
- name: "Checkout"
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: "Run PHPStan"
|
|
||||||
uses: TYPO3-Continuous-Integration/TYPO3-CI-PHPStan@v1
|
|
||||||
with:
|
|
||||||
config_file: './phpstan.neon'
|
|
||||||
code-quality:
|
|
||||||
name: "Code quality checks"
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
steps:
|
|
||||||
- name: "Checkout"
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: "Install PHP"
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
|
||||||
php-version: "${{ matrix.php-version }}"
|
|
||||||
coverage: none
|
|
||||||
tools: composer:v2
|
|
||||||
- name: "Show Composer version"
|
|
||||||
run: composer --version
|
|
||||||
- name: "Cache dependencies installed with composer"
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
key: "php${{ matrix.php-version }}-composer-${{ hashFiles('**/composer.json') }}"
|
|
||||||
path: ~/.cache/composer
|
|
||||||
restore-keys: "php${{ matrix.php-version }}-composer-\n"
|
|
||||||
- name: "Install Composer dependencies"
|
|
||||||
run: "composer install --no-progress"
|
|
||||||
- name: "Run command"
|
|
||||||
run: "composer ci:${{ matrix.command }}"
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
command:
|
|
||||||
- "composer:normalize"
|
|
||||||
- "php:sniff"
|
|
||||||
php-version:
|
|
||||||
- "8.1"
|
|
||||||
code-quality-frontend:
|
|
||||||
name: "Code quality frontend checks"
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
command:
|
|
||||||
- "style"
|
|
||||||
- "js"
|
|
||||||
steps:
|
|
||||||
- name: "Checkout"
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: "Install modules"
|
|
||||||
run: yarn
|
|
||||||
- name: "Run command"
|
|
||||||
run: "yarn lint:${{ matrix.command }}"
|
|
||||||
xliff-lint:
|
|
||||||
name: "Xliff linter"
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
steps:
|
|
||||||
- name: "Checkout"
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: "Run the xliff lint"
|
|
||||||
uses: TYPO3-Continuous-Integration/TYPO3-CI-Xliff-Lint@v1
|
|
||||||
unit-tests:
|
|
||||||
name: "Unit tests"
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
needs: php-lint
|
|
||||||
steps:
|
|
||||||
- name: "Checkout"
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: "Install PHP"
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
|
||||||
php-version: "${{ matrix.php-version }}"
|
|
||||||
coverage: none
|
|
||||||
tools: composer:v2
|
|
||||||
- name: "Show Composer version"
|
|
||||||
run: composer --version
|
|
||||||
- name: "Cache dependencies installed with composer"
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
key: "php${{ matrix.php-version }}-typo3${{ matrix.typo3-version }}-${{ matrix.composer-dependencies }}-composer-${{ hashFiles('**/composer.json') }}"
|
|
||||||
path: ~/.cache/composer
|
|
||||||
restore-keys: "php${{ matrix.php-version }}-typo3${{ matrix.typo3-version }}-${{ matrix.composer-dependencies }}-composer-\n"
|
|
||||||
- name: "Install TYPO3 Core"
|
|
||||||
env:
|
|
||||||
TYPO3: "${{ matrix.typo3-version }}"
|
|
||||||
run: |
|
|
||||||
composer require --no-progress typo3/cms-core:"$TYPO3"
|
|
||||||
composer show
|
|
||||||
- name: "Install lowest dependencies with composer"
|
|
||||||
if: "matrix.composer-dependencies == 'lowest'"
|
|
||||||
run: |
|
|
||||||
composer update --no-ansi --no-interaction --no-progress --with-dependencies --prefer-lowest
|
|
||||||
composer show
|
|
||||||
- name: "Install highest dependencies with composer"
|
|
||||||
if: "matrix.composer-dependencies == 'highest'"
|
|
||||||
run: |
|
|
||||||
composer update --no-ansi --no-interaction --no-progress --with-dependencies
|
|
||||||
composer show
|
|
||||||
- name: "Run unit tests"
|
|
||||||
run: "composer ci:tests:unit"
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- typo3-version: "^11.5"
|
|
||||||
php-version: "7.4"
|
|
||||||
composer-dependencies: lowest
|
|
||||||
- typo3-version: "^11.5"
|
|
||||||
php-version: "7.4"
|
|
||||||
composer-dependencies: highest
|
|
||||||
- typo3-version: "^11.5"
|
|
||||||
php-version: "8.0"
|
|
||||||
composer-dependencies: lowest
|
|
||||||
- typo3-version: "^11.5"
|
|
||||||
php-version: "8.0"
|
|
||||||
composer-dependencies: highest
|
|
||||||
- typo3-version: "^11.5"
|
|
||||||
php-version: "8.1"
|
|
||||||
composer-dependencies: lowest
|
|
||||||
- typo3-version: "^11.5"
|
|
||||||
php-version: "8.1"
|
|
||||||
composer-dependencies: highest
|
|
||||||
- typo3-version: "^11.5"
|
|
||||||
php-version: "8.2"
|
|
||||||
composer-dependencies: lowest
|
|
||||||
- typo3-version: "^11.5"
|
|
||||||
php-version: "8.2"
|
|
||||||
composer-dependencies: highest
|
|
||||||
- typo3-version: "^12.4"
|
|
||||||
php-version: "8.1"
|
|
||||||
composer-dependencies: lowest
|
|
||||||
- typo3-version: "^12.4"
|
|
||||||
php-version: "8.1"
|
|
||||||
composer-dependencies: highest
|
|
||||||
- typo3-version: "^12.4"
|
|
||||||
php-version: "8.2"
|
|
||||||
composer-dependencies: lowest
|
|
||||||
- typo3-version: "^12.4"
|
|
||||||
php-version: "8.2"
|
|
||||||
composer-dependencies: highest
|
|
||||||
functional-tests:
|
|
||||||
name: "Functional tests"
|
|
||||||
runs-on: ubuntu-22.04
|
|
||||||
needs: php-lint
|
|
||||||
env:
|
|
||||||
DB_DATABASE: typo3
|
|
||||||
DB_USER: root
|
|
||||||
DB_PASSWORD: root
|
|
||||||
DB_HOST: localhost
|
|
||||||
steps:
|
|
||||||
- name: "Checkout"
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
- name: "Install PHP"
|
|
||||||
uses: shivammathur/setup-php@v2
|
|
||||||
with:
|
|
||||||
php-version: "${{ matrix.php-version }}"
|
|
||||||
tools: composer:v2
|
|
||||||
extensions: mysqli
|
|
||||||
coverage: none
|
|
||||||
- name: "Show Composer version"
|
|
||||||
run: composer --version
|
|
||||||
- name: "Cache dependencies installed with composer"
|
|
||||||
uses: actions/cache@v3
|
|
||||||
with:
|
|
||||||
key: "php${{ matrix.php-version }}-typo3${{ matrix.typo3-version }}-${{ matrix.composer-dependencies }}-composer-${{ hashFiles('**/composer.json') }}"
|
|
||||||
path: ~/.cache/composer
|
|
||||||
restore-keys: "php${{ matrix.php-version }}-typo3${{ matrix.typo3-version }}-${{ matrix.composer-dependencies }}-composer-\n"
|
|
||||||
- name: "Install TYPO3 Core"
|
|
||||||
env:
|
|
||||||
TYPO3: "${{ matrix.typo3-version }}"
|
|
||||||
run: |
|
|
||||||
composer require --no-progress typo3/cms-core:"$TYPO3"
|
|
||||||
composer show
|
|
||||||
- name: "Install lowest dependencies with composer"
|
|
||||||
if: "matrix.composer-dependencies == 'lowest'"
|
|
||||||
run: |
|
|
||||||
composer update --no-ansi --no-interaction --no-progress --with-dependencies --prefer-lowest
|
|
||||||
composer show
|
|
||||||
- name: "Install highest dependencies with composer"
|
|
||||||
if: "matrix.composer-dependencies == 'highest'"
|
|
||||||
run: |
|
|
||||||
composer update --no-ansi --no-interaction --no-progress --with-dependencies
|
|
||||||
composer show
|
|
||||||
- name: "Start MySQL"
|
|
||||||
run: "sudo /etc/init.d/mysql start"
|
|
||||||
- name: "Run functional tests"
|
|
||||||
run: |
|
|
||||||
export typo3DatabaseName="$DB_DATABASE";
|
|
||||||
export typo3DatabaseHost="$DB_HOST";
|
|
||||||
export typo3DatabaseUsername="$DB_USER";
|
|
||||||
export typo3DatabasePassword="$DB_PASSWORD";
|
|
||||||
composer ci:tests:functional
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- typo3-version: "^11.5"
|
|
||||||
php-version: "7.4"
|
|
||||||
composer-dependencies: lowest
|
|
||||||
- typo3-version: "^11.5"
|
|
||||||
php-version: "7.4"
|
|
||||||
composer-dependencies: highest
|
|
||||||
- typo3-version: "^11.5"
|
|
||||||
php-version: "8.0"
|
|
||||||
composer-dependencies: lowest
|
|
||||||
- typo3-version: "^11.5"
|
|
||||||
php-version: "8.0"
|
|
||||||
composer-dependencies: highest
|
|
||||||
- typo3-version: "^11.5"
|
|
||||||
php-version: "8.1"
|
|
||||||
composer-dependencies: lowest
|
|
||||||
- typo3-version: "^11.5"
|
|
||||||
php-version: "8.1"
|
|
||||||
composer-dependencies: highest
|
|
||||||
- typo3-version: "^11.5"
|
|
||||||
php-version: "8.2"
|
|
||||||
composer-dependencies: lowest
|
|
||||||
- typo3-version: "^11.5"
|
|
||||||
php-version: "8.2"
|
|
||||||
composer-dependencies: highest
|
|
||||||
- typo3-version: "^12.4"
|
|
||||||
php-version: "8.1"
|
|
||||||
composer-dependencies: lowest
|
|
||||||
- typo3-version: "^12.4"
|
|
||||||
php-version: "8.1"
|
|
||||||
composer-dependencies: highest
|
|
||||||
- typo3-version: "^12.4"
|
|
||||||
php-version: "8.2"
|
|
||||||
composer-dependencies: lowest
|
|
||||||
- typo3-version: "^12.4"
|
|
||||||
php-version: "8.2"
|
|
||||||
composer-dependencies: highest
|
|
|
@ -4,10 +4,4 @@
|
||||||
|
|
||||||
set -xe
|
set -xe
|
||||||
|
|
||||||
apt-get update -yqq
|
apk add parallel
|
||||||
apt-get install git libzip-dev unzip parallel libxml2-utils wget wait-for-it libicu-dev -yqq
|
|
||||||
|
|
||||||
php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/local/bin/ --filename=composer
|
|
||||||
chmod +x /usr/local/bin/composer
|
|
||||||
|
|
||||||
docker-php-ext-install pdo_mysql zip mysqli intl
|
|
||||||
|
|
|
@ -31,7 +31,9 @@ include:
|
||||||
- '/.gitlab/pipeline/jobs/php-lint-php8.0.yml'
|
- '/.gitlab/pipeline/jobs/php-lint-php8.0.yml'
|
||||||
- '/.gitlab/pipeline/jobs/php-lint-php8.1.yml'
|
- '/.gitlab/pipeline/jobs/php-lint-php8.1.yml'
|
||||||
- '/.gitlab/pipeline/jobs/php-lint-php8.2.yml'
|
- '/.gitlab/pipeline/jobs/php-lint-php8.2.yml'
|
||||||
|
- '/.gitlab/pipeline/jobs/php-lint-php8.3.yml'
|
||||||
- '/.gitlab/pipeline/jobs/phpcs.yml'
|
- '/.gitlab/pipeline/jobs/phpcs.yml'
|
||||||
|
- '/.gitlab/pipeline/jobs/php-cs-fixer.yml'
|
||||||
- '/.gitlab/pipeline/jobs/ts-lint.yml'
|
- '/.gitlab/pipeline/jobs/ts-lint.yml'
|
||||||
- '/.gitlab/pipeline/jobs/unit-php7.4-v11-highest.yml'
|
- '/.gitlab/pipeline/jobs/unit-php7.4-v11-highest.yml'
|
||||||
- '/.gitlab/pipeline/jobs/unit-php7.4-v11-lowest.yml'
|
- '/.gitlab/pipeline/jobs/unit-php7.4-v11-lowest.yml'
|
||||||
|
@ -41,10 +43,14 @@ include:
|
||||||
- '/.gitlab/pipeline/jobs/unit-php8.1-v11-lowest.yml'
|
- '/.gitlab/pipeline/jobs/unit-php8.1-v11-lowest.yml'
|
||||||
- '/.gitlab/pipeline/jobs/unit-php8.2-v11-highest.yml'
|
- '/.gitlab/pipeline/jobs/unit-php8.2-v11-highest.yml'
|
||||||
- '/.gitlab/pipeline/jobs/unit-php8.2-v11-lowest.yml'
|
- '/.gitlab/pipeline/jobs/unit-php8.2-v11-lowest.yml'
|
||||||
|
- '/.gitlab/pipeline/jobs/unit-php8.3-v11-highest.yml'
|
||||||
|
- '/.gitlab/pipeline/jobs/unit-php8.3-v11-lowest.yml'
|
||||||
- '/.gitlab/pipeline/jobs/unit-php8.1-v12-highest.yml'
|
- '/.gitlab/pipeline/jobs/unit-php8.1-v12-highest.yml'
|
||||||
- '/.gitlab/pipeline/jobs/unit-php8.1-v12-lowest.yml'
|
- '/.gitlab/pipeline/jobs/unit-php8.1-v12-lowest.yml'
|
||||||
- '/.gitlab/pipeline/jobs/unit-php8.2-v12-highest.yml'
|
- '/.gitlab/pipeline/jobs/unit-php8.2-v12-highest.yml'
|
||||||
- '/.gitlab/pipeline/jobs/unit-php8.2-v12-lowest.yml'
|
- '/.gitlab/pipeline/jobs/unit-php8.2-v12-lowest.yml'
|
||||||
|
- '/.gitlab/pipeline/jobs/unit-php8.3-v12-highest.yml'
|
||||||
|
- '/.gitlab/pipeline/jobs/unit-php8.3-v12-lowest.yml'
|
||||||
- '/.gitlab/pipeline/jobs/xliff-lint.yml'
|
- '/.gitlab/pipeline/jobs/xliff-lint.yml'
|
||||||
- '/.gitlab/pipeline/jobs/yaml-lint.yml'
|
- '/.gitlab/pipeline/jobs/yaml-lint.yml'
|
||||||
- template: Security/Secret-Detection.gitlab-ci.yml
|
- template: Security/Secret-Detection.gitlab-ci.yml
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
.default:
|
.default:
|
||||||
image: php:7.4
|
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
|
||||||
before_script:
|
before_script:
|
||||||
- bash .gitlab/build/docker_install.sh > /dev/null
|
- bash .gitlab/build/docker_install.sh > /dev/null
|
||||||
|
|
|
@ -7,7 +7,7 @@ build-composer-dependencies:
|
||||||
script:
|
script:
|
||||||
- composer --version
|
- composer --version
|
||||||
- COMPOSER_CACHE_DIR=.composer
|
- COMPOSER_CACHE_DIR=.composer
|
||||||
composer install --prefer-dist --no-progress --optimize-autoloader
|
composer update --prefer-dist --no-progress --optimize-autoloader
|
||||||
artifacts:
|
artifacts:
|
||||||
when: on_success
|
when: on_success
|
||||||
expire_in: 2 weeks
|
expire_in: 2 weeks
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
func-php7.4-v11-highest:
|
func-php7.4-v11-highest:
|
||||||
extends: .default
|
extends: .default
|
||||||
image: php:7.4
|
image: ghcr.io/sbuerk/demo-core-testing-php74:latest
|
||||||
services:
|
services:
|
||||||
- mariadb:10
|
- mariadb:10
|
||||||
stage: test
|
stage: test
|
||||||
|
@ -11,4 +11,4 @@ func-php7.4-v11-highest:
|
||||||
- echo "Job ${CI_JOB_NAME}"
|
- echo "Job ${CI_JOB_NAME}"
|
||||||
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^11.5"
|
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^11.5"
|
||||||
- composer update --no-ansi --no-interaction --no-progress --with-dependencies
|
- composer update --no-ansi --no-interaction --no-progress --with-dependencies
|
||||||
- wait-for-it mariadb:3306 -t 60 --strict -- composer ci:tests:functional
|
- composer ci:tests:functional
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
func-php7.4-v11-lowest:
|
func-php7.4-v11-lowest:
|
||||||
extends: .default
|
extends: .default
|
||||||
image: php:7.4
|
image: ghcr.io/sbuerk/demo-core-testing-php74:latest
|
||||||
services:
|
services:
|
||||||
- mariadb:10
|
- mariadb:10
|
||||||
stage: test
|
stage: test
|
||||||
|
@ -11,4 +11,4 @@ func-php7.4-v11-lowest:
|
||||||
- echo "Job ${CI_JOB_NAME}"
|
- echo "Job ${CI_JOB_NAME}"
|
||||||
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^11.5"
|
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^11.5"
|
||||||
- composer update --no-ansi --no-interaction --no-progress --with-dependencies --prefer-lowest
|
- composer update --no-ansi --no-interaction --no-progress --with-dependencies --prefer-lowest
|
||||||
- wait-for-it mariadb:3306 -t 60 --strict -- composer ci:tests:functional
|
- composer ci:tests:functional
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
func-php8.0-v11-highest:
|
func-php8.0-v11-highest:
|
||||||
extends: .default
|
extends: .default
|
||||||
image: php:8.0
|
image: ghcr.io/sbuerk/demo-core-testing-php80:latest
|
||||||
services:
|
services:
|
||||||
- mariadb:10
|
- mariadb:10
|
||||||
stage: test
|
stage: test
|
||||||
|
@ -11,4 +11,4 @@ func-php8.0-v11-highest:
|
||||||
- echo "Job ${CI_JOB_NAME}"
|
- echo "Job ${CI_JOB_NAME}"
|
||||||
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^11.5"
|
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^11.5"
|
||||||
- composer update --no-ansi --no-interaction --no-progress --with-dependencies
|
- composer update --no-ansi --no-interaction --no-progress --with-dependencies
|
||||||
- wait-for-it mariadb:3306 -t 60 --strict -- composer ci:tests:functional
|
- composer ci:tests:functional
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
func-php8.0-v11-lowest:
|
func-php8.0-v11-lowest:
|
||||||
extends: .default
|
extends: .default
|
||||||
image: php:8.0
|
image: ghcr.io/sbuerk/demo-core-testing-php80:latest
|
||||||
services:
|
services:
|
||||||
- mariadb:10
|
- mariadb:10
|
||||||
stage: test
|
stage: test
|
||||||
|
@ -11,4 +11,4 @@ func-php8.0-v11-lowest:
|
||||||
- echo "Job ${CI_JOB_NAME}"
|
- echo "Job ${CI_JOB_NAME}"
|
||||||
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^11.5"
|
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^11.5"
|
||||||
- composer update --no-ansi --no-interaction --no-progress --with-dependencies --prefer-lowest
|
- composer update --no-ansi --no-interaction --no-progress --with-dependencies --prefer-lowest
|
||||||
- wait-for-it mariadb:3306 -t 60 --strict -- composer ci:tests:functional
|
- composer ci:tests:functional
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
func-php8.1-v11-highest:
|
func-php8.1-v11-highest:
|
||||||
extends: .default
|
extends: .default
|
||||||
image: php:8.1
|
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
|
||||||
services:
|
services:
|
||||||
- mariadb:10
|
- mariadb:10
|
||||||
stage: test
|
stage: test
|
||||||
|
@ -11,4 +11,4 @@ func-php8.1-v11-highest:
|
||||||
- echo "Job ${CI_JOB_NAME}"
|
- echo "Job ${CI_JOB_NAME}"
|
||||||
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^11.5"
|
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^11.5"
|
||||||
- composer update --no-ansi --no-interaction --no-progress --with-dependencies
|
- composer update --no-ansi --no-interaction --no-progress --with-dependencies
|
||||||
- wait-for-it mariadb:3306 -t 60 --strict -- composer ci:tests:functional
|
- composer ci:tests:functional
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
func-php8.1-v11-lowest:
|
func-php8.1-v11-lowest:
|
||||||
extends: .default
|
extends: .default
|
||||||
image: php:8.1
|
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
|
||||||
services:
|
services:
|
||||||
- mariadb:10
|
- mariadb:10
|
||||||
stage: test
|
stage: test
|
||||||
|
@ -11,4 +11,4 @@ func-php8.1-v11-lowest:
|
||||||
- echo "Job ${CI_JOB_NAME}"
|
- echo "Job ${CI_JOB_NAME}"
|
||||||
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^11.5"
|
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^11.5"
|
||||||
- composer update --no-ansi --no-interaction --no-progress --with-dependencies --prefer-lowest
|
- composer update --no-ansi --no-interaction --no-progress --with-dependencies --prefer-lowest
|
||||||
- wait-for-it mariadb:3306 -t 60 --strict -- composer ci:tests:functional
|
- composer ci:tests:functional
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
func-php8.1-v11-highest:
|
func-php8.1-v11-highest:
|
||||||
extends: .default
|
extends: .default
|
||||||
image: php:8.1
|
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
|
||||||
services:
|
services:
|
||||||
- mariadb:10
|
- mariadb:10
|
||||||
stage: test
|
stage: test
|
||||||
|
@ -11,4 +11,4 @@ func-php8.1-v11-highest:
|
||||||
- echo "Job ${CI_JOB_NAME}"
|
- echo "Job ${CI_JOB_NAME}"
|
||||||
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^12.4"
|
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^12.4"
|
||||||
- composer update --no-ansi --no-interaction --no-progress --with-dependencies
|
- composer update --no-ansi --no-interaction --no-progress --with-dependencies
|
||||||
- wait-for-it mariadb:3306 -t 60 --strict -- composer ci:tests:functional
|
- composer ci:tests:functional
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
func-php8.1-v11-lowest:
|
func-php8.1-v11-lowest:
|
||||||
extends: .default
|
extends: .default
|
||||||
image: php:8.1
|
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
|
||||||
services:
|
services:
|
||||||
- mariadb:10
|
- mariadb:10
|
||||||
stage: test
|
stage: test
|
||||||
|
@ -11,4 +11,4 @@ func-php8.1-v11-lowest:
|
||||||
- echo "Job ${CI_JOB_NAME}"
|
- echo "Job ${CI_JOB_NAME}"
|
||||||
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^12.4"
|
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^12.4"
|
||||||
- composer update --no-ansi --no-interaction --no-progress --with-dependencies --prefer-lowest
|
- composer update --no-ansi --no-interaction --no-progress --with-dependencies --prefer-lowest
|
||||||
- wait-for-it mariadb:3306 -t 60 --strict -- composer ci:tests:functional
|
- composer ci:tests:functional
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
func-php8.2-v11-highest:
|
func-php8.2-v11-highest:
|
||||||
extends: .default
|
extends: .default
|
||||||
image: php:8.2
|
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
|
||||||
services:
|
services:
|
||||||
- mariadb:10
|
- mariadb:10
|
||||||
stage: test
|
stage: test
|
||||||
|
@ -11,4 +11,4 @@ func-php8.2-v11-highest:
|
||||||
- echo "Job ${CI_JOB_NAME}"
|
- echo "Job ${CI_JOB_NAME}"
|
||||||
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^11.5"
|
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^11.5"
|
||||||
- composer update --no-ansi --no-interaction --no-progress --with-dependencies
|
- composer update --no-ansi --no-interaction --no-progress --with-dependencies
|
||||||
- wait-for-it mariadb:3306 -t 60 --strict -- composer ci:tests:functional
|
- composer ci:tests:functional
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
func-php8.2-v11-lowest:
|
func-php8.2-v11-lowest:
|
||||||
extends: .default
|
extends: .default
|
||||||
image: php:8.2
|
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
|
||||||
services:
|
services:
|
||||||
- mariadb:10
|
- mariadb:10
|
||||||
stage: test
|
stage: test
|
||||||
|
@ -11,4 +11,4 @@ func-php8.2-v11-lowest:
|
||||||
- echo "Job ${CI_JOB_NAME}"
|
- echo "Job ${CI_JOB_NAME}"
|
||||||
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^11.5"
|
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^11.5"
|
||||||
- composer update --no-ansi --no-interaction --no-progress --with-dependencies --prefer-lowest
|
- composer update --no-ansi --no-interaction --no-progress --with-dependencies --prefer-lowest
|
||||||
- wait-for-it mariadb:3306 -t 60 --strict -- composer ci:tests:functional
|
- composer ci:tests:functional
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
func-php8.2-v11-highest:
|
func-php8.2-v11-highest:
|
||||||
extends: .default
|
extends: .default
|
||||||
image: php:8.2
|
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
|
||||||
services:
|
services:
|
||||||
- mariadb:10
|
- mariadb:10
|
||||||
stage: test
|
stage: test
|
||||||
|
@ -11,4 +11,4 @@ func-php8.2-v11-highest:
|
||||||
- echo "Job ${CI_JOB_NAME}"
|
- echo "Job ${CI_JOB_NAME}"
|
||||||
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^12.4"
|
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^12.4"
|
||||||
- composer update --no-ansi --no-interaction --no-progress --with-dependencies
|
- composer update --no-ansi --no-interaction --no-progress --with-dependencies
|
||||||
- wait-for-it mariadb:3306 -t 60 --strict -- composer ci:tests:functional
|
- composer ci:tests:functional
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
func-php8.2-v12-lowest:
|
func-php8.2-v12-lowest:
|
||||||
extends: .default
|
extends: .default
|
||||||
image: php:8.2
|
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
|
||||||
services:
|
services:
|
||||||
- mariadb:10
|
- mariadb:10
|
||||||
stage: test
|
stage: test
|
||||||
|
@ -11,4 +11,4 @@ func-php8.2-v12-lowest:
|
||||||
- echo "Job ${CI_JOB_NAME}"
|
- echo "Job ${CI_JOB_NAME}"
|
||||||
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^12.4"
|
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^12.4"
|
||||||
- composer update --no-ansi --no-interaction --no-progress --with-dependencies --prefer-lowest
|
- composer update --no-ansi --no-interaction --no-progress --with-dependencies --prefer-lowest
|
||||||
- wait-for-it mariadb:3306 -t 60 --strict -- composer ci:tests:functional
|
- composer ci:tests:functional
|
||||||
|
|
14
.gitlab/pipeline/jobs/func-php8.3-v11-highest.yml
Normal file
14
.gitlab/pipeline/jobs/func-php8.3-v11-highest.yml
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
func-php8.3-v11-highest:
|
||||||
|
extends: .default
|
||||||
|
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
|
||||||
|
services:
|
||||||
|
- mariadb:10
|
||||||
|
stage: test
|
||||||
|
needs:
|
||||||
|
- build-composer-dependencies
|
||||||
|
- php-lint-php8.3
|
||||||
|
script:
|
||||||
|
- echo "Job ${CI_JOB_NAME}"
|
||||||
|
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^11.5"
|
||||||
|
- composer update --no-ansi --no-interaction --no-progress --with-dependencies
|
||||||
|
- composer ci:tests:functional
|
14
.gitlab/pipeline/jobs/func-php8.3-v11-lowest.yml
Normal file
14
.gitlab/pipeline/jobs/func-php8.3-v11-lowest.yml
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
func-php8.3-v11-lowest:
|
||||||
|
extends: .default
|
||||||
|
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
|
||||||
|
services:
|
||||||
|
- mariadb:10
|
||||||
|
stage: test
|
||||||
|
needs:
|
||||||
|
- build-composer-dependencies
|
||||||
|
- php-lint-php8.3
|
||||||
|
script:
|
||||||
|
- echo "Job ${CI_JOB_NAME}"
|
||||||
|
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^11.5"
|
||||||
|
- composer update --no-ansi --no-interaction --no-progress --with-dependencies --prefer-lowest
|
||||||
|
- composer ci:tests:functional
|
14
.gitlab/pipeline/jobs/func-php8.3-v12-highest.yml
Normal file
14
.gitlab/pipeline/jobs/func-php8.3-v12-highest.yml
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
func-php8.3-v11-highest:
|
||||||
|
extends: .default
|
||||||
|
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
|
||||||
|
services:
|
||||||
|
- mariadb:10
|
||||||
|
stage: test
|
||||||
|
needs:
|
||||||
|
- build-composer-dependencies
|
||||||
|
- php-lint-php8.3
|
||||||
|
script:
|
||||||
|
- echo "Job ${CI_JOB_NAME}"
|
||||||
|
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^12.4"
|
||||||
|
- composer update --no-ansi --no-interaction --no-progress --with-dependencies
|
||||||
|
- composer ci:tests:functional
|
14
.gitlab/pipeline/jobs/func-php8.3-v12-lowest.yml
Normal file
14
.gitlab/pipeline/jobs/func-php8.3-v12-lowest.yml
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
func-php8.3-v12-lowest:
|
||||||
|
extends: .default
|
||||||
|
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
|
||||||
|
services:
|
||||||
|
- mariadb:10
|
||||||
|
stage: test
|
||||||
|
needs:
|
||||||
|
- build-composer-dependencies
|
||||||
|
- php-lint-php8.3
|
||||||
|
script:
|
||||||
|
- echo "Job ${CI_JOB_NAME}"
|
||||||
|
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^12.4"
|
||||||
|
- composer update --no-ansi --no-interaction --no-progress --with-dependencies --prefer-lowest
|
||||||
|
- composer ci:tests:functional
|
11
.gitlab/pipeline/jobs/php-cs-fixer.yml
Normal file
11
.gitlab/pipeline/jobs/php-cs-fixer.yml
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
php-cs-fixer:
|
||||||
|
extends: .default
|
||||||
|
stage: codestyle
|
||||||
|
needs:
|
||||||
|
- build-composer-dependencies
|
||||||
|
- php-lint-php7.4
|
||||||
|
- php-lint-php8.0
|
||||||
|
- php-lint-php8.1
|
||||||
|
- php-lint-php8.2
|
||||||
|
script:
|
||||||
|
- composer ci:php:cs-fixer
|
|
@ -1,6 +1,5 @@
|
||||||
php-lint-php7.4:
|
php-lint-php7.4:
|
||||||
extends: .default
|
image: ghcr.io/sbuerk/demo-core-testing-php74:latest
|
||||||
image: php:7.4
|
|
||||||
stage: lint
|
stage: lint
|
||||||
needs: [ ]
|
needs: [ ]
|
||||||
script:
|
script:
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
php-lint-php8.0:
|
php-lint-php8.0:
|
||||||
extends: .default
|
image: ghcr.io/sbuerk/demo-core-testing-php80:latest
|
||||||
image: php:8.0
|
|
||||||
stage: lint
|
stage: lint
|
||||||
needs: [ ]
|
needs: [ ]
|
||||||
script:
|
script:
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
php-lint-php8.1:
|
php-lint-php8.1:
|
||||||
extends: .default
|
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
|
||||||
image: php:8.1
|
|
||||||
stage: lint
|
stage: lint
|
||||||
needs: [ ]
|
needs: [ ]
|
||||||
script:
|
script:
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
php-lint-php8.2:
|
php-lint-php8.2:
|
||||||
extends: .default
|
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
|
||||||
image: php:8.2
|
|
||||||
stage: lint
|
stage: lint
|
||||||
needs: [ ]
|
needs: [ ]
|
||||||
script:
|
script:
|
||||||
|
|
6
.gitlab/pipeline/jobs/php-lint-php8.3.yml
Normal file
6
.gitlab/pipeline/jobs/php-lint-php8.3.yml
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
php-lint-php8.3:
|
||||||
|
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
|
||||||
|
stage: lint
|
||||||
|
needs: [ ]
|
||||||
|
script:
|
||||||
|
- composer ci:php:lint
|
|
@ -1,6 +1,6 @@
|
||||||
unit-php7.4-v11-highest:
|
unit-php7.4-v11-highest:
|
||||||
extends: .default
|
extends: .default
|
||||||
image: php:7.4
|
image: ghcr.io/sbuerk/demo-core-testing-php74:latest
|
||||||
stage: test
|
stage: test
|
||||||
needs:
|
needs:
|
||||||
- build-composer-dependencies
|
- build-composer-dependencies
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
unit-php7.4-v11-lowest:
|
unit-php7.4-v11-lowest:
|
||||||
extends: .default
|
extends: .default
|
||||||
image: php:7.4
|
image: ghcr.io/sbuerk/demo-core-testing-php74:latest
|
||||||
stage: test
|
stage: test
|
||||||
needs:
|
needs:
|
||||||
- build-composer-dependencies
|
- build-composer-dependencies
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
unit-php8.0-v11-highest:
|
unit-php8.0-v11-highest:
|
||||||
extends: .default
|
extends: .default
|
||||||
image: php:8.0
|
image: ghcr.io/sbuerk/demo-core-testing-php80:latest
|
||||||
stage: test
|
stage: test
|
||||||
needs:
|
needs:
|
||||||
- build-composer-dependencies
|
- build-composer-dependencies
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
unit-php8.0-v11-lowest:
|
unit-php8.0-v11-lowest:
|
||||||
extends: .default
|
extends: .default
|
||||||
image: php:8.0
|
image: ghcr.io/sbuerk/demo-core-testing-php80:latest
|
||||||
stage: test
|
stage: test
|
||||||
needs:
|
needs:
|
||||||
- build-composer-dependencies
|
- build-composer-dependencies
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
unit-php8.1-v11-highest:
|
unit-php8.1-v11-highest:
|
||||||
extends: .default
|
extends: .default
|
||||||
image: php:8.1
|
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
|
||||||
stage: test
|
stage: test
|
||||||
needs:
|
needs:
|
||||||
- build-composer-dependencies
|
- build-composer-dependencies
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
unit-php8.1-v11-lowest:
|
unit-php8.1-v11-lowest:
|
||||||
extends: .default
|
extends: .default
|
||||||
image: php:8.1
|
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
|
||||||
stage: test
|
stage: test
|
||||||
needs:
|
needs:
|
||||||
- build-composer-dependencies
|
- build-composer-dependencies
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
unit-php8.1-v12-highest:
|
unit-php8.1-v12-highest:
|
||||||
extends: .default
|
extends: .default
|
||||||
image: php:8.1
|
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
|
||||||
stage: test
|
stage: test
|
||||||
needs:
|
needs:
|
||||||
- build-composer-dependencies
|
- build-composer-dependencies
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
unit-php8.1-v12-lowest:
|
unit-php8.1-v12-lowest:
|
||||||
extends: .default
|
extends: .default
|
||||||
image: php:8.1
|
image: ghcr.io/sbuerk/demo-core-testing-php81:latest
|
||||||
stage: test
|
stage: test
|
||||||
needs:
|
needs:
|
||||||
- build-composer-dependencies
|
- build-composer-dependencies
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
unit-php8.2-v11-highest:
|
unit-php8.2-v11-highest:
|
||||||
extends: .default
|
extends: .default
|
||||||
image: php:8.2
|
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
|
||||||
stage: test
|
stage: test
|
||||||
needs:
|
needs:
|
||||||
- build-composer-dependencies
|
- build-composer-dependencies
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
unit-php8.2-v11-lowest:
|
unit-php8.2-v11-lowest:
|
||||||
extends: .default
|
extends: .default
|
||||||
image: php:8.2
|
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
|
||||||
stage: test
|
stage: test
|
||||||
needs:
|
needs:
|
||||||
- build-composer-dependencies
|
- build-composer-dependencies
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
unit-php8.2-v12-highest:
|
unit-php8.2-v12-highest:
|
||||||
extends: .default
|
extends: .default
|
||||||
image: php:8.2
|
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
|
||||||
stage: test
|
stage: test
|
||||||
needs:
|
needs:
|
||||||
- build-composer-dependencies
|
- build-composer-dependencies
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
unit-php8.2-v12-lowest:
|
unit-php8.2-v12-lowest:
|
||||||
extends: .default
|
extends: .default
|
||||||
image: php:8.2
|
image: ghcr.io/sbuerk/demo-core-testing-php82:latest
|
||||||
stage: test
|
stage: test
|
||||||
needs:
|
needs:
|
||||||
- build-composer-dependencies
|
- build-composer-dependencies
|
||||||
|
|
12
.gitlab/pipeline/jobs/unit-php8.3-v11-highest.yml
Normal file
12
.gitlab/pipeline/jobs/unit-php8.3-v11-highest.yml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
unit-php8.3-v11-highest:
|
||||||
|
extends: .default
|
||||||
|
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
|
||||||
|
stage: test
|
||||||
|
needs:
|
||||||
|
- build-composer-dependencies
|
||||||
|
- php-lint-php8.3
|
||||||
|
script:
|
||||||
|
- echo "Job ${CI_JOB_NAME}"
|
||||||
|
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^11.5"
|
||||||
|
- composer update --no-ansi --no-interaction --no-progress --with-dependencies
|
||||||
|
- composer ci:tests:unit
|
12
.gitlab/pipeline/jobs/unit-php8.3-v11-lowest.yml
Normal file
12
.gitlab/pipeline/jobs/unit-php8.3-v11-lowest.yml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
unit-php8.3-v11-lowest:
|
||||||
|
extends: .default
|
||||||
|
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
|
||||||
|
stage: test
|
||||||
|
needs:
|
||||||
|
- build-composer-dependencies
|
||||||
|
- php-lint-php8.3
|
||||||
|
script:
|
||||||
|
- echo "Job ${CI_JOB_NAME}"
|
||||||
|
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^11.5"
|
||||||
|
- composer update --no-ansi --no-interaction --no-progress --with-dependencies --prefer-lowest
|
||||||
|
- composer ci:tests:unit
|
11
.gitlab/pipeline/jobs/unit-php8.3-v12-highest.yml
Normal file
11
.gitlab/pipeline/jobs/unit-php8.3-v12-highest.yml
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
unit-php8.3-v12-highest:
|
||||||
|
extends: .default
|
||||||
|
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
|
||||||
|
stage: test
|
||||||
|
needs:
|
||||||
|
- build-composer-dependencies
|
||||||
|
- php-lint-php8.3
|
||||||
|
script:
|
||||||
|
- echo "Job ${CI_JOB_NAME}"
|
||||||
|
- composer require --no-progress typo3/cms-core:"^12.4"
|
||||||
|
- composer ci:tests:unit
|
12
.gitlab/pipeline/jobs/unit-php8.3-v12-lowest.yml
Normal file
12
.gitlab/pipeline/jobs/unit-php8.3-v12-lowest.yml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
unit-php8.3-v12-lowest:
|
||||||
|
extends: .default
|
||||||
|
image: ghcr.io/sbuerk/demo-core-testing-php83:latest
|
||||||
|
stage: test
|
||||||
|
needs:
|
||||||
|
- build-composer-dependencies
|
||||||
|
- php-lint-php8.3
|
||||||
|
script:
|
||||||
|
- echo "Job ${CI_JOB_NAME}"
|
||||||
|
- composer require --no-ansi --no-interaction --no-progress --no-install typo3/cms-core:"^12.4"
|
||||||
|
- composer update --no-ansi --no-interaction --no-progress --with-dependencies --prefer-lowest
|
||||||
|
- composer ci:tests:unit
|
|
@ -4,6 +4,4 @@ xliff-lint:
|
||||||
needs:
|
needs:
|
||||||
- build-composer-dependencies
|
- build-composer-dependencies
|
||||||
script:
|
script:
|
||||||
- wget https://docs.oasis-open.org/xliff/v1.2/os/xliff-core-1.2-strict.xsd
|
- composer ci:xliff:lint
|
||||||
- xmllint --schema ./xliff-core-1.2-strict.xsd
|
|
||||||
--noout $(find Resources -name '*.xlf')
|
|
||||||
|
|
|
@ -4,13 +4,15 @@
|
||||||
# TYPO3 core test runner based on docker.
|
# TYPO3 core test runner based on docker.
|
||||||
#
|
#
|
||||||
|
|
||||||
|
trap 'cleanUp;exit 2' SIGINT
|
||||||
|
|
||||||
waitFor() {
|
waitFor() {
|
||||||
local HOST=${1}
|
local HOST=${1}
|
||||||
local PORT=${2}
|
local PORT=${2}
|
||||||
local TESTCOMMAND="
|
local TESTCOMMAND="
|
||||||
COUNT=0;
|
COUNT=0;
|
||||||
while ! nc -z ${HOST} ${PORT}; do
|
while ! nc -z ${HOST} ${PORT}; do
|
||||||
if [ \"\${COUNT}\" -gt 10 ]; then
|
if [ \"\${COUNT}\" -gt 20 ]; then
|
||||||
echo \"Can not connect to ${HOST} port ${PORT}. Aborting.\";
|
echo \"Can not connect to ${HOST} port ${PORT}. Aborting.\";
|
||||||
exit 1;
|
exit 1;
|
||||||
fi;
|
fi;
|
||||||
|
@ -19,58 +21,87 @@ waitFor() {
|
||||||
done;
|
done;
|
||||||
"
|
"
|
||||||
${CONTAINER_BIN} run ${CONTAINER_COMMON_PARAMS} --name wait-for-${SUFFIX} ${XDEBUG_MODE} -e XDEBUG_CONFIG="${XDEBUG_CONFIG}" ${IMAGE_ALPINE} /bin/sh -c "${TESTCOMMAND}"
|
${CONTAINER_BIN} run ${CONTAINER_COMMON_PARAMS} --name wait-for-${SUFFIX} ${XDEBUG_MODE} -e XDEBUG_CONFIG="${XDEBUG_CONFIG}" ${IMAGE_ALPINE} /bin/sh -c "${TESTCOMMAND}"
|
||||||
|
if [[ $? -gt 0 ]]; then
|
||||||
|
kill -SIGINT -$$
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanUp() {
|
cleanUp() {
|
||||||
ATTACHED_CONTAINERS=$(${CONTAINER_BIN} ps --filter network=${NETWORK} --format='{{.Names}}')
|
ATTACHED_CONTAINERS=$(${CONTAINER_BIN} ps --filter network=${NETWORK} --format='{{.Names}}')
|
||||||
for ATTACHED_CONTAINER in ${ATTACHED_CONTAINERS}; do
|
for ATTACHED_CONTAINER in ${ATTACHED_CONTAINERS}; do
|
||||||
${CONTAINER_BIN} rm -f ${ATTACHED_CONTAINER} >/dev/null
|
${CONTAINER_BIN} kill ${ATTACHED_CONTAINER} >/dev/null
|
||||||
done
|
done
|
||||||
${CONTAINER_BIN} network rm ${NETWORK} >/dev/null
|
${CONTAINER_BIN} network rm ${NETWORK} >/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
# Options -a and -d depend on each other. The function
|
handleDbmsOptions() {
|
||||||
# validates input combinations and sets defaults.
|
# -a, -d, -i depend on each other. Validate input combinations and set defaults.
|
||||||
handleDbmsAndDriverOptions() {
|
|
||||||
case ${DBMS} in
|
case ${DBMS} in
|
||||||
mariadb)
|
mariadb)
|
||||||
[ -z "${DATABASE_DRIVER}" ] && DATABASE_DRIVER="mysqli"
|
[ -z "${DATABASE_DRIVER}" ] && DATABASE_DRIVER="mysqli"
|
||||||
if [ "${DATABASE_DRIVER}" != "mysqli" ] && [ "${DATABASE_DRIVER}" != "pdo_mysql" ]; then
|
if [ "${DATABASE_DRIVER}" != "mysqli" ] && [ "${DATABASE_DRIVER}" != "pdo_mysql" ]; then
|
||||||
echo "Invalid option -a ${DATABASE_DRIVER} with -d ${DBMS}" >&2
|
echo "Invalid combination -d ${DBMS} -a ${DATABASE_DRIVER}" >&2
|
||||||
echo >&2
|
echo >&2
|
||||||
echo "call \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
|
echo "Use \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
[ -z "${DBMS_VERSION}" ] && DBMS_VERSION="10.3"
|
||||||
|
if ! [[ ${DBMS_VERSION} =~ ^(10.3|10.4|10.5|10.6|10.7|10.8|10.9|10.10|10.11|11.0|11.1)$ ]]; then
|
||||||
|
echo "Invalid combination -d ${DBMS} -i ${DBMS_VERSION}" >&2
|
||||||
|
echo >&2
|
||||||
|
echo "Use \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
mysql)
|
mysql)
|
||||||
[ -z "${DATABASE_DRIVER}" ] && DATABASE_DRIVER="mysqli"
|
[ -z "${DATABASE_DRIVER}" ] && DATABASE_DRIVER="mysqli"
|
||||||
if [ "${DATABASE_DRIVER}" != "mysqli" ] && [ "${DATABASE_DRIVER}" != "pdo_mysql" ]; then
|
if [ "${DATABASE_DRIVER}" != "mysqli" ] && [ "${DATABASE_DRIVER}" != "pdo_mysql" ]; then
|
||||||
echo "Invalid option -a ${DATABASE_DRIVER} with -d ${DBMS}" >&2
|
echo "Invalid combination -d ${DBMS} -a ${DATABASE_DRIVER}" >&2
|
||||||
echo >&2
|
echo >&2
|
||||||
echo "call \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
|
echo "Use \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
[ -z "${DBMS_VERSION}" ] && DBMS_VERSION="8.0"
|
||||||
|
if ! [[ ${DBMS_VERSION} =~ ^(5.5|5.6|5.7|8.0)$ ]]; then
|
||||||
|
echo "Invalid combination -d ${DBMS} -i ${DBMS_VERSION}" >&2
|
||||||
|
echo >&2
|
||||||
|
echo "Use \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
postgres)
|
postgres)
|
||||||
if [ -n "${DATABASE_DRIVER}" ]; then
|
if [ -n "${DATABASE_DRIVER}" ]; then
|
||||||
echo "Invalid option -a ${DATABASE_DRIVER} with -d ${DBMS}" >&2
|
echo "Invalid combination -d ${DBMS} -a ${DATABASE_DRIVER}" >&2
|
||||||
echo >&2
|
echo >&2
|
||||||
echo "call \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
|
echo "Use \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
[ -z "${DBMS_VERSION}" ] && DBMS_VERSION="10"
|
||||||
|
if ! [[ ${DBMS_VERSION} =~ ^(10|11|12|13|14|15|16)$ ]]; then
|
||||||
|
echo "Invalid combination -d ${DBMS} -i ${DBMS_VERSION}" >&2
|
||||||
|
echo >&2
|
||||||
|
echo "Use \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
sqlite)
|
sqlite)
|
||||||
if [ -n "${DATABASE_DRIVER}" ]; then
|
if [ -n "${DATABASE_DRIVER}" ]; then
|
||||||
echo "Invalid option -a ${DATABASE_DRIVER} with -d ${DBMS}" >&2
|
echo "Invalid combination -d ${DBMS} -a ${DATABASE_DRIVER}" >&2
|
||||||
echo >&2
|
echo >&2
|
||||||
echo "call \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
|
echo "Use \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
if [ -n "${DBMS_VERSION}" ]; then
|
||||||
|
echo "Invalid combination -d ${DBMS} -i ${DATABASE_DRIVER}" >&2
|
||||||
|
echo >&2
|
||||||
|
echo "Use \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Invalid option -d ${DBMS}" >&2
|
echo "Invalid option -d ${DBMS}" >&2
|
||||||
echo >&2
|
echo >&2
|
||||||
echo "call \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
|
echo "Use \".Build/Scripts/runTests.sh -h\" to display help and valid options" >&2
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
@ -88,7 +119,7 @@ cleanTestFiles() {
|
||||||
# test related
|
# test related
|
||||||
echo -n "Clean test related files ... "
|
echo -n "Clean test related files ... "
|
||||||
rm -rf \
|
rm -rf \
|
||||||
.Build/Web/typo3temp/var/tests/
|
.Build/public/typo3temp/var/tests/
|
||||||
echo "done"
|
echo "done"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -102,9 +133,9 @@ cleanRenderedDocumentationFiles() {
|
||||||
loadHelp() {
|
loadHelp() {
|
||||||
# Load help text into $HELP
|
# Load help text into $HELP
|
||||||
read -r -d '' HELP <<EOF
|
read -r -d '' HELP <<EOF
|
||||||
TYPO3 core test runner. Execute acceptance, unit, functional and other test suites in
|
TYPO3 core test runner. Execute unit, functional and other test suites in
|
||||||
a container based test environment. Handles execution of single test files, sending
|
a container based test environment. Handles execution of single test files,
|
||||||
xdebug information to a local IDE and more.
|
sending xdebug information to a local IDE and more.
|
||||||
|
|
||||||
Usage: $0 [options] [file]
|
Usage: $0 [options] [file]
|
||||||
|
|
||||||
|
@ -141,17 +172,22 @@ Options:
|
||||||
- mysqli (default)
|
- mysqli (default)
|
||||||
- pdo_mysql
|
- pdo_mysql
|
||||||
|
|
||||||
|
-b <docker|podman>
|
||||||
|
Container environment:
|
||||||
|
- docker (default)
|
||||||
|
- podman
|
||||||
|
|
||||||
-d <sqlite|mariadb|mysql|postgres>
|
-d <sqlite|mariadb|mysql|postgres>
|
||||||
Only with -s functional|functionalDeprecated|acceptance|acceptanceInstall
|
Only with -s functional|functionalDeprecated
|
||||||
Specifies on which DBMS tests are performed
|
Specifies on which DBMS tests are performed
|
||||||
- sqlite: (default): use sqlite
|
- sqlite: (default): use sqlite
|
||||||
- mariadb: use mariadb
|
- mariadb: use mariadb
|
||||||
- mysql: use MySQL
|
- mysql: use MySQL
|
||||||
- postgres: use postgres
|
- postgres: use postgres
|
||||||
|
|
||||||
-i <10.3|10.4|10.5|10.6|10.7|10.8|10.9|10.10|10.11|11.0|11.1>
|
-i version
|
||||||
Only with -d mariadb
|
Specify a specific database version
|
||||||
Specifies on which version of mariadb tests are performed
|
With "-d mariadb":
|
||||||
- 10.3 short-term, maintained until 2023-05-25 (default)
|
- 10.3 short-term, maintained until 2023-05-25 (default)
|
||||||
- 10.4 short-term, maintained until 2024-06-18
|
- 10.4 short-term, maintained until 2024-06-18
|
||||||
- 10.5 short-term, maintained until 2025-06-24
|
- 10.5 short-term, maintained until 2025-06-24
|
||||||
|
@ -163,48 +199,43 @@ Options:
|
||||||
- 10.11 long-term, maintained until 2028-02
|
- 10.11 long-term, maintained until 2028-02
|
||||||
- 11.0 development series
|
- 11.0 development series
|
||||||
- 11.1 short-term development series
|
- 11.1 short-term development series
|
||||||
|
With "-d mysql":
|
||||||
-j <5.5|5.6|5.7|8.0>
|
|
||||||
Only with -d mysql
|
|
||||||
Specifies on which version of mysql tests are performed
|
|
||||||
- 5.5 unmaintained since 2018-12
|
- 5.5 unmaintained since 2018-12
|
||||||
- 5.6 unmaintained since 2021-02
|
- 5.6 unmaintained since 2021-02
|
||||||
- 5.7 maintained until 2023-10
|
- 5.7 maintained until 2023-10
|
||||||
- 8.0 maintained until 2026-04 (default)
|
- 8.0 maintained until 2026-04 (default)
|
||||||
|
With "-d postgres":
|
||||||
-k <10|11|12|13|14|15>
|
|
||||||
Only with -d postgres
|
|
||||||
Specifies on which version of postgres tests are performed
|
|
||||||
- 10 unmaintained since 2022-11-10 (default)
|
- 10 unmaintained since 2022-11-10 (default)
|
||||||
- 11 maintained until 2023-11-09
|
- 11 unmaintained since 2023-11-09
|
||||||
- 12 maintained until 2024-11-14
|
- 12 maintained until 2024-11-14
|
||||||
- 13 maintained until 2025-11-13
|
- 13 maintained until 2025-11-13
|
||||||
- 14 maintained until 2026-11-12
|
- 14 maintained until 2026-11-12
|
||||||
- 15 maintained until 2027-11-11
|
- 15 maintained until 2027-11-11
|
||||||
|
- 16 maintained until 2028-11-09
|
||||||
|
|
||||||
-t <11.5|12.4>
|
-t <11.5|12.4>
|
||||||
Only with -s composerInstall|composerInstallMin|composerInstallMax
|
Only with -s composerInstall|composerInstallMin|composerInstallMax
|
||||||
Specifies the TYPO3 CORE Version to be used
|
Specifies the TYPO3 CORE Version to be used
|
||||||
- 11: (default) use TYPO3 v11 with typo3/cms-composer-installers ^3
|
- 11.5: use TYPO3 v11 with typo3/cms-composer-installers ^3
|
||||||
- 12: use TYPO3 v12 with typo3/cms-composer-installers ^5
|
- 12.4: (default) use TYPO3 v12 with typo3/cms-composer-installers ^5
|
||||||
|
|
||||||
-p <7.4|8.0|8.1|8.2|8.3>
|
-p <7.4|8.0|8.1|8.2|8.3>
|
||||||
Specifies the PHP minor version to be used
|
Specifies the PHP minor version to be used
|
||||||
- 7.4: use PHP 7.4
|
- 7.4: use PHP 7.4
|
||||||
- 8.0: use PHP 8.0
|
- 8.0: use PHP 8.0
|
||||||
- 8.1: (default) use PHP 8.1
|
- 8.1: use PHP 8.1
|
||||||
- 8.2: use PHP 8.2
|
- 8.2: use PHP 8.2
|
||||||
- 8.3: use PHP 8.3
|
- 8.3: (default) use PHP 8.3
|
||||||
|
|
||||||
-e "<phpunit options>"
|
-e "<phpunit options>"
|
||||||
Only with -s functional|functionalDeprecated|unit|unitDeprecated|unitRandom|acceptance
|
Only with -s functional|functionalDeprecated|unit|unitDeprecated|unitRandom
|
||||||
Additional options to send to phpunit (unit & functional tests) or codeception (acceptance
|
Additional options to send to phpunit (unit & functional tests). For phpunit,
|
||||||
tests). For phpunit, options starting with "--" must be added after options starting with "-".
|
options starting with "--" must be added after options starting with "-".
|
||||||
Example -e "-v --filter canRetrieveValueWithGP" to enable verbose output AND filter tests
|
Example -e "-v --filter canRetrieveValueWithGP" to enable verbose output AND filter tests
|
||||||
named "canRetrieveValueWithGP"
|
named "canRetrieveValueWithGP"
|
||||||
|
|
||||||
-x
|
-x
|
||||||
Only with -s functional|functionalDeprecated|unit|unitDeprecated|unitRandom|acceptance|acceptanceInstall
|
Only with -s functional|functionalDeprecated|unit|unitDeprecated|unitRandom
|
||||||
Send information to host instance for test or system under test break points. This is especially
|
Send information to host instance for test or system under test break points. This is especially
|
||||||
useful if a local PhpStorm instance is listening on default xdebug port 9003. A different port
|
useful if a local PhpStorm instance is listening on default xdebug port 9003. A different port
|
||||||
can be selected with -y
|
can be selected with -y
|
||||||
|
@ -232,7 +263,7 @@ Options:
|
||||||
Show this help.
|
Show this help.
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
# Run all core unit tests using PHP 8.1
|
# Run all core unit tests using PHP 8.3
|
||||||
./Build/Scripts/runTests.sh
|
./Build/Scripts/runTests.sh
|
||||||
./Build/Scripts/runTests.sh -s unit
|
./Build/Scripts/runTests.sh -s unit
|
||||||
|
|
||||||
|
@ -250,37 +281,47 @@ Examples:
|
||||||
./Build/Scripts/runTests.sh -x -p 8.1 -s functional -d postgres typo3/sysext/core/Tests/Functional/Authentication
|
./Build/Scripts/runTests.sh -x -p 8.1 -s functional -d postgres typo3/sysext/core/Tests/Functional/Authentication
|
||||||
|
|
||||||
# Run functional tests on postgres 11
|
# Run functional tests on postgres 11
|
||||||
./Build/Scripts/runTests.sh -s functional -d postgres -k 11
|
./Build/Scripts/runTests.sh -s functional -d postgres -i 11
|
||||||
|
|
||||||
# Run restricted set of application acceptance tests
|
|
||||||
./Build/Scripts/runTests.sh -s acceptance typo3/sysext/core/Tests/Acceptance/Application/Login/BackendLoginCest.php:loginButtonMouseOver
|
|
||||||
|
|
||||||
# Run installer tests of a new instance on sqlite
|
|
||||||
./Build/Scripts/runTests.sh -s acceptanceInstall -d sqlite
|
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
# Test if docker exists, else exit out with error
|
# Test if at least one of the supported container binaries exists, else exit out with error
|
||||||
if ! type "docker" >/dev/null; then
|
if ! type "docker" >/dev/null 2>&1 && ! type "podman" >/dev/null 2>&1; then
|
||||||
echo "This script relies on docker. Please install" >&2
|
echo "This script relies on docker or podman. Please install at least one of them" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Go to the directory this script is located, so everything else is relative
|
||||||
|
# to this dir, no matter from where this script is called, then go up two dirs.
|
||||||
|
THIS_SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)"
|
||||||
|
cd "$THIS_SCRIPT_DIR" || exit 1
|
||||||
|
cd ../../ || exit 1
|
||||||
|
ROOT_DIR="${PWD}"
|
||||||
|
|
||||||
# Option defaults
|
# Option defaults
|
||||||
TEST_SUITE="unit"
|
TEST_SUITE="unit"
|
||||||
CORE_VERSION="11.5"
|
CORE_VERSION="12.4"
|
||||||
DBMS="sqlite"
|
DBMS="sqlite"
|
||||||
PHP_VERSION="8.1"
|
DBMS_VERSION=""
|
||||||
|
PHP_VERSION="8.3"
|
||||||
PHP_XDEBUG_ON=0
|
PHP_XDEBUG_ON=0
|
||||||
PHP_XDEBUG_PORT=9003
|
PHP_XDEBUG_PORT=9003
|
||||||
EXTRA_TEST_OPTIONS=""
|
EXTRA_TEST_OPTIONS=""
|
||||||
PHPUNIT_RANDOM=""
|
PHPUNIT_RANDOM=""
|
||||||
CGLCHECK_DRY_RUN=0
|
CGLCHECK_DRY_RUN=0
|
||||||
DATABASE_DRIVER=""
|
DATABASE_DRIVER=""
|
||||||
MARIADB_VERSION="10.3"
|
CONTAINER_BIN=""
|
||||||
MYSQL_VERSION="8.0"
|
COMPOSER_ROOT_VERSION="3.0.x-dev"
|
||||||
POSTGRES_VERSION="10"
|
CONTAINER_INTERACTIVE="-it --init"
|
||||||
CONTAINER_BIN="docker"
|
HOST_UID=$(id -u)
|
||||||
|
HOST_PID=$(id -g)
|
||||||
|
USERSET=""
|
||||||
|
SUFFIX=$(echo $RANDOM)
|
||||||
|
NETWORK="friendsoftypo3-tea-${SUFFIX}"
|
||||||
|
CI_PARAMS="${CI_PARAMS:-}"
|
||||||
|
CONTAINER_HOST="host.docker.internal"
|
||||||
|
PHPSTAN_CONFIG_FILE="phpstan.neon"
|
||||||
|
IS_CORE_CI=0
|
||||||
|
|
||||||
# Option parsing updates above default vars
|
# Option parsing updates above default vars
|
||||||
# Reset in case getopts has been used previously in the shell
|
# Reset in case getopts has been used previously in the shell
|
||||||
|
@ -288,7 +329,7 @@ OPTIND=1
|
||||||
# Array for invalid options
|
# Array for invalid options
|
||||||
INVALID_OPTIONS=()
|
INVALID_OPTIONS=()
|
||||||
# Simple option parsing based on getopts (! not getopt)
|
# Simple option parsing based on getopts (! not getopt)
|
||||||
while getopts "a:s:d:i:j:k:p:e:t:xy:o:nhu" OPT; do
|
while getopts "a:b:s:d:i:p:e:t:xy:o:nhu" OPT; do
|
||||||
case ${OPT} in
|
case ${OPT} in
|
||||||
s)
|
s)
|
||||||
TEST_SUITE=${OPTARG}
|
TEST_SUITE=${OPTARG}
|
||||||
|
@ -296,31 +337,22 @@ while getopts "a:s:d:i:j:k:p:e:t:xy:o:nhu" OPT; do
|
||||||
a)
|
a)
|
||||||
DATABASE_DRIVER=${OPTARG}
|
DATABASE_DRIVER=${OPTARG}
|
||||||
;;
|
;;
|
||||||
|
b)
|
||||||
|
if ! [[ ${OPTARG} =~ ^(docker|podman)$ ]]; then
|
||||||
|
INVALID_OPTIONS+=("-b ${OPTARG}")
|
||||||
|
fi
|
||||||
|
CONTAINER_BIN=${OPTARG}
|
||||||
|
;;
|
||||||
d)
|
d)
|
||||||
DBMS=${OPTARG}
|
DBMS=${OPTARG}
|
||||||
;;
|
;;
|
||||||
i)
|
i)
|
||||||
MARIADB_VERSION=${OPTARG}
|
DBMS_VERSION=${OPTARG}
|
||||||
if ! [[ ${MARIADB_VERSION} =~ ^(10.3|10.4|10.5|10.6|10.7|10.8|10.9|10.10|10.11|11.0|11.1)$ ]]; then
|
|
||||||
INVALID_OPTIONS+=("i ${OPTARG}")
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
j)
|
|
||||||
MYSQL_VERSION=${OPTARG}
|
|
||||||
if ! [[ ${MYSQL_VERSION} =~ ^(5.5|5.6|5.7|8.0)$ ]]; then
|
|
||||||
INVALID_OPTIONS+=("j ${OPTARG}")
|
|
||||||
fi
|
|
||||||
;;
|
|
||||||
k)
|
|
||||||
POSTGRES_VERSION=${OPTARG}
|
|
||||||
if ! [[ ${POSTGRES_VERSION} =~ ^(10|11|12|13|14|15)$ ]]; then
|
|
||||||
INVALID_OPTIONS+=("${OPTARG}")
|
|
||||||
fi
|
|
||||||
;;
|
;;
|
||||||
p)
|
p)
|
||||||
PHP_VERSION=${OPTARG}
|
PHP_VERSION=${OPTARG}
|
||||||
if ! [[ ${PHP_VERSION} =~ ^(7.4|8.0|8.1|8.2|8.3)$ ]]; then
|
if ! [[ ${PHP_VERSION} =~ ^(7.4|8.0|8.1|8.2|8.3)$ ]]; then
|
||||||
INVALID_OPTIONS+=("p ${OPTARG}")
|
INVALID_OPTIONS+=("-p ${OPTARG}")
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
e)
|
e)
|
||||||
|
@ -329,7 +361,7 @@ while getopts "a:s:d:i:j:k:p:e:t:xy:o:nhu" OPT; do
|
||||||
t)
|
t)
|
||||||
CORE_VERSION=${OPTARG}
|
CORE_VERSION=${OPTARG}
|
||||||
if ! [[ ${CORE_VERSION} =~ ^(11.5|12.4)$ ]]; then
|
if ! [[ ${CORE_VERSION} =~ ^(11.5|12.4)$ ]]; then
|
||||||
INVALID_OPTIONS+=("t ${OPTARG}")
|
INVALID_OPTIONS+=("-t ${OPTARG}")
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
x)
|
x)
|
||||||
|
@ -353,10 +385,10 @@ while getopts "a:s:d:i:j:k:p:e:t:xy:o:nhu" OPT; do
|
||||||
TEST_SUITE=update
|
TEST_SUITE=update
|
||||||
;;
|
;;
|
||||||
\?)
|
\?)
|
||||||
INVALID_OPTIONS+=("${OPTARG}")
|
INVALID_OPTIONS+=("-${OPTARG}")
|
||||||
;;
|
;;
|
||||||
:)
|
:)
|
||||||
INVALID_OPTIONS+=("${OPTARG}")
|
INVALID_OPTIONS+=("-${OPTARG}")
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
@ -365,74 +397,64 @@ done
|
||||||
if [ ${#INVALID_OPTIONS[@]} -ne 0 ]; then
|
if [ ${#INVALID_OPTIONS[@]} -ne 0 ]; then
|
||||||
echo "Invalid option(s):" >&2
|
echo "Invalid option(s):" >&2
|
||||||
for I in "${INVALID_OPTIONS[@]}"; do
|
for I in "${INVALID_OPTIONS[@]}"; do
|
||||||
echo "-"${I} >&2
|
echo ${I} >&2
|
||||||
done
|
done
|
||||||
echo >&2
|
echo >&2
|
||||||
echo "call \".Build/Scripts/runTests.sh -h\" to display help and valid options"
|
echo "call \".Build/Scripts/runTests.sh -h\" to display help and valid options"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
COMPOSER_ROOT_VERSION="3.0.x-dev"
|
handleDbmsOptions
|
||||||
HOST_UID=$(id -u)
|
|
||||||
USERSET=""
|
|
||||||
if [ $(uname) != "Darwin" ]; then
|
|
||||||
USERSET="--user $HOST_UID"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Go to the directory this script is located, so everything else is relative
|
# ENV var "CI" is set by gitlab-ci. Use it to force some CI details.
|
||||||
# to this dir, no matter from where this script is called, then go up two dirs.
|
|
||||||
THIS_SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null && pwd)"
|
|
||||||
cd "$THIS_SCRIPT_DIR" || exit 1
|
|
||||||
cd ../../ || exit 1
|
|
||||||
ROOT_DIR="${PWD}"
|
|
||||||
|
|
||||||
# Create .cache dir: composer need this.
|
|
||||||
mkdir -p .cache
|
|
||||||
mkdir -p .Build/Web/typo3temp/var/tests
|
|
||||||
|
|
||||||
PHPSTAN_CONFIG_FILE="phpstan.neon"
|
|
||||||
IMAGE_PREFIX="docker.io/"
|
|
||||||
# Non-CI fetches TYPO3 images (php and nodejs) from ghcr.io
|
|
||||||
TYPO3_IMAGE_PREFIX="ghcr.io/"
|
|
||||||
CONTAINER_INTERACTIVE="-it --init"
|
|
||||||
|
|
||||||
IS_CORE_CI=0
|
|
||||||
# ENV var "CI" is set by gitlab-ci. We use it here to distinct 'local' and 'CI' environment.
|
|
||||||
if [ "${CI}" == "true" ]; then
|
if [ "${CI}" == "true" ]; then
|
||||||
IS_CORE_CI=1
|
IS_CORE_CI=1
|
||||||
# In CI, we need to pull images from docker.io for the registry proxy to kick in.
|
|
||||||
TYPO3_IMAGE_PREFIX="docker.io/"
|
|
||||||
IMAGE_PREFIX=""
|
|
||||||
CONTAINER_INTERACTIVE=""
|
CONTAINER_INTERACTIVE=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
IMAGE_PHP="${TYPO3_IMAGE_PREFIX}typo3/core-testing-$(echo "php${PHP_VERSION}" | sed -e 's/\.//'):latest"
|
# determine default container binary to use: 1. podman 2. docker
|
||||||
IMAGE_ALPINE="${IMAGE_PREFIX}alpine:3.8"
|
if [[ -z "${CONTAINER_BIN}" ]]; then
|
||||||
IMAGE_DOCS="ghcr.io/t3docs/render-documentation:latest"
|
if type "podman" >/dev/null 2>&1; then
|
||||||
IMAGE_SELENIUM="${IMAGE_PREFIX}selenium/standalone-chrome:4.0.0-20211102"
|
CONTAINER_BIN="podman"
|
||||||
IMAGE_MARIADB="${IMAGE_PREFIX}mariadb:${MARIADB_VERSION}"
|
elif type "docker" >/dev/null 2>&1; then
|
||||||
IMAGE_MYSQL="${IMAGE_PREFIX}mysql:${MYSQL_VERSION}"
|
CONTAINER_BIN="docker"
|
||||||
IMAGE_POSTGRES="${IMAGE_PREFIX}postgres:${POSTGRES_VERSION}-alpine"
|
fi
|
||||||
|
|
||||||
# Detect arm64 and use a seleniarm image.
|
|
||||||
# In a perfect world selenium would have a arm64 integrated, but that is not on the horizon.
|
|
||||||
# So for the time being we have to use seleniarm image.
|
|
||||||
ARCH=$(uname -m)
|
|
||||||
if [ ${ARCH} = "arm64" ]; then
|
|
||||||
IMAGE_SELENIUM="${IMAGE_PREFIX}seleniarm/standalone-chromium:4.1.2-20220227"
|
|
||||||
echo "Architecture" ${ARCH} "requires" ${IMAGE_SELENIUM} "to run acceptance tests."
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if [ $(uname) != "Darwin" ] && [ "${CONTAINER_BIN}" == "docker" ]; then
|
||||||
|
# Run docker jobs as current user to prevent permission issues. Not needed with podman.
|
||||||
|
USERSET="--user $HOST_UID"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! type ${CONTAINER_BIN} >/dev/null 2>&1; then
|
||||||
|
echo "Selected container environment \"${CONTAINER_BIN}\" not found. Please install \"${CONTAINER_BIN}\" or use -b option to select one." >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create .cache dir: composer need this.
|
||||||
|
mkdir -p .cache
|
||||||
|
mkdir -p .Build/public/typo3temp/var/tests
|
||||||
|
|
||||||
|
IMAGE_PHP="ghcr.io/sbuerk/demo-core-testing-$(echo "php${PHP_VERSION}" | sed -e 's/\.//'):latest"
|
||||||
|
IMAGE_ALPINE="docker.io/alpine:3.8"
|
||||||
|
IMAGE_DOCS="ghcr.io/typo3-documentation/render-guides:latest"
|
||||||
|
IMAGE_MARIADB="docker.io/mariadb:${DBMS_VERSION}"
|
||||||
|
IMAGE_MYSQL="docker.io/mysql:${DBMS_VERSION}"
|
||||||
|
IMAGE_POSTGRES="docker.io/postgres:${DBMS_VERSION}-alpine"
|
||||||
|
|
||||||
# Set $1 to first mass argument, this is the optional test file or test directory to execute
|
# Set $1 to first mass argument, this is the optional test file or test directory to execute
|
||||||
shift $((OPTIND - 1))
|
shift $((OPTIND - 1))
|
||||||
TEST_FILE=${1}
|
TEST_FILE=${1}
|
||||||
|
|
||||||
SUFFIX=$(echo $RANDOM)
|
|
||||||
NETWORK="friendsoftypo3-tea-${SUFFIX}"
|
|
||||||
${CONTAINER_BIN} network create ${NETWORK} >/dev/null
|
${CONTAINER_BIN} network create ${NETWORK} >/dev/null
|
||||||
|
|
||||||
CONTAINER_COMMON_PARAMS="${CONTAINER_INTERACTIVE} --rm --network $NETWORK --add-host "host.docker.internal:host-gateway" $USERSET -v ${ROOT_DIR}:${ROOT_DIR} -w ${ROOT_DIR}"
|
if [ "${CONTAINER_BIN}" == "docker" ]; then
|
||||||
CONTAINER_DOCS_PARAMS="${CONTAINER_INTERACTIVE} --rm $USERSET -v ${ROOT_DIR}:/PROJECT -v ${ROOT_DIR}/Documentation-GENERATED-temp:/RESULT -w ${ROOT_DIR}"
|
CONTAINER_COMMON_PARAMS="${CONTAINER_INTERACTIVE} --rm --network ${NETWORK} --add-host "${CONTAINER_HOST}:host-gateway" ${USERSET} -v ${ROOT_DIR}:${ROOT_DIR} -w ${ROOT_DIR}"
|
||||||
|
else
|
||||||
|
# podman
|
||||||
|
CONTAINER_HOST="host.containers.internal"
|
||||||
|
CONTAINER_COMMON_PARAMS="${CONTAINER_INTERACTIVE} ${CI_PARAMS} --rm --network ${NETWORK} -v ${ROOT_DIR}:${ROOT_DIR} -w ${ROOT_DIR}"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ ${PHP_XDEBUG_ON} -eq 0 ]; then
|
if [ ${PHP_XDEBUG_ON} -eq 0 ]; then
|
||||||
XDEBUG_MODE="-e XDEBUG_MODE=off"
|
XDEBUG_MODE="-e XDEBUG_MODE=off"
|
||||||
|
@ -468,7 +490,7 @@ case ${TEST_SUITE} in
|
||||||
cleanTestFiles
|
cleanTestFiles
|
||||||
;;
|
;;
|
||||||
composer)
|
composer)
|
||||||
COMMAND="composer \"$@\""
|
COMMAND="composer $@"
|
||||||
${CONTAINER_BIN} run ${CONTAINER_COMMON_PARAMS} --name composer-command-${SUFFIX} -e COMPOSER_CACHE_DIR=.cache/composer -e COMPOSER_ROOT_VERSION=${COMPOSER_ROOT_VERSION} ${IMAGE_PHP} /bin/sh -c "${COMMAND}"
|
${CONTAINER_BIN} run ${CONTAINER_COMMON_PARAMS} --name composer-command-${SUFFIX} -e COMPOSER_CACHE_DIR=.cache/composer -e COMPOSER_ROOT_VERSION=${COMPOSER_ROOT_VERSION} ${IMAGE_PHP} /bin/sh -c "${COMMAND}"
|
||||||
SUITE_EXIT_CODE=$?
|
SUITE_EXIT_CODE=$?
|
||||||
;;
|
;;
|
||||||
|
@ -498,21 +520,16 @@ case ${TEST_SUITE} in
|
||||||
SUITE_EXIT_CODE=$?
|
SUITE_EXIT_CODE=$?
|
||||||
;;
|
;;
|
||||||
docsGenerate)
|
docsGenerate)
|
||||||
# @todo contact the documentation team for a future rootles podman version
|
${CONTAINER_BIN} run --rm --pull always -v "$(pwd)":/project -it ${IMAGE_DOCS} --config=Documentation --fail-on-log
|
||||||
${CONTAINER_BIN} run --rm ${IMAGE_DOCS} show-shell-commands > generate-documentation.sh
|
|
||||||
echo 'dockrun_t3rd makehtml' >> generate-documentation.sh
|
|
||||||
bash generate-documentation.sh
|
|
||||||
rm -Rf generate-documentation.sh
|
|
||||||
SUITE_EXIT_CODE=$?
|
SUITE_EXIT_CODE=$?
|
||||||
;;
|
;;
|
||||||
functional)
|
functional)
|
||||||
[ -z "${TEST_FILE}" ] && TEST_FILE="Tests/Functional"
|
[ -z "${TEST_FILE}" ] && TEST_FILE="Tests/Functional"
|
||||||
handleDbmsAndDriverOptions
|
COMMAND=".Build/bin/phpunit -c Configuration/FunctionalTests.xml --exclude-group not-${DBMS} ${EXTRA_TEST_OPTIONS} ${TEST_FILE}"
|
||||||
COMMAND=".Build/bin/phpunit -c .Build/vendor/typo3/testing-framework/Resources/Core/Build/FunctionalTests.xml --exclude-group not-${DBMS} ${EXTRA_TEST_OPTIONS} ${TEST_FILE}"
|
|
||||||
case ${DBMS} in
|
case ${DBMS} in
|
||||||
mariadb)
|
mariadb)
|
||||||
echo "Using driver: ${DATABASE_DRIVER}"
|
echo "Using driver: ${DATABASE_DRIVER}"
|
||||||
${CONTAINER_BIN} run --name mariadb-func-${SUFFIX} --network ${NETWORK} -d -e MYSQL_ROOT_PASSWORD=funcp --tmpfs /var/lib/mysql/:rw,noexec,nosuid ${IMAGE_MARIADB} >/dev/null
|
${CONTAINER_BIN} run --rm ${CI_PARAMS} --name mariadb-func-${SUFFIX} --network ${NETWORK} -d -e MYSQL_ROOT_PASSWORD=funcp --tmpfs /var/lib/mysql/:rw,noexec,nosuid ${IMAGE_MARIADB} >/dev/null
|
||||||
waitFor mariadb-func-${SUFFIX} 3306
|
waitFor mariadb-func-${SUFFIX} 3306
|
||||||
CONTAINERPARAMS="-e typo3DatabaseDriver=${DATABASE_DRIVER} -e typo3DatabaseName=func_test -e typo3DatabaseUsername=root -e typo3DatabaseHost=mariadb-func-${SUFFIX} -e typo3DatabasePassword=funcp"
|
CONTAINERPARAMS="-e typo3DatabaseDriver=${DATABASE_DRIVER} -e typo3DatabaseName=func_test -e typo3DatabaseUsername=root -e typo3DatabaseHost=mariadb-func-${SUFFIX} -e typo3DatabasePassword=funcp"
|
||||||
${CONTAINER_BIN} run ${CONTAINER_COMMON_PARAMS} --name functional-${SUFFIX} ${XDEBUG_MODE} -e XDEBUG_CONFIG="${XDEBUG_CONFIG}" ${CONTAINERPARAMS} ${IMAGE_PHP} ${COMMAND}
|
${CONTAINER_BIN} run ${CONTAINER_COMMON_PARAMS} --name functional-${SUFFIX} ${XDEBUG_MODE} -e XDEBUG_CONFIG="${XDEBUG_CONFIG}" ${CONTAINERPARAMS} ${IMAGE_PHP} ${COMMAND}
|
||||||
|
@ -520,14 +537,14 @@ case ${TEST_SUITE} in
|
||||||
;;
|
;;
|
||||||
mysql)
|
mysql)
|
||||||
echo "Using driver: ${DATABASE_DRIVER}"
|
echo "Using driver: ${DATABASE_DRIVER}"
|
||||||
${CONTAINER_BIN} run --name mysql-func-${SUFFIX} --network ${NETWORK} -d -e MYSQL_ROOT_PASSWORD=funcp --tmpfs /var/lib/mysql/:rw,noexec,nosuid ${IMAGE_MYSQL} >/dev/null
|
${CONTAINER_BIN} run --rm ${CI_PARAMS} --name mysql-func-${SUFFIX} --network ${NETWORK} -d -e MYSQL_ROOT_PASSWORD=funcp --tmpfs /var/lib/mysql/:rw,noexec,nosuid ${IMAGE_MYSQL} >/dev/null
|
||||||
waitFor mysql-func-${SUFFIX} 3306
|
waitFor mysql-func-${SUFFIX} 3306
|
||||||
CONTAINERPARAMS="-e typo3DatabaseDriver=${DATABASE_DRIVER} -e typo3DatabaseName=func_test -e typo3DatabaseUsername=root -e typo3DatabaseHost=mysql-func-${SUFFIX} -e typo3DatabasePassword=funcp"
|
CONTAINERPARAMS="-e typo3DatabaseDriver=${DATABASE_DRIVER} -e typo3DatabaseName=func_test -e typo3DatabaseUsername=root -e typo3DatabaseHost=mysql-func-${SUFFIX} -e typo3DatabasePassword=funcp"
|
||||||
${CONTAINER_BIN} run ${CONTAINER_COMMON_PARAMS} --name functional-${SUFFIX} ${XDEBUG_MODE} -e XDEBUG_CONFIG="${XDEBUG_CONFIG}" ${CONTAINERPARAMS} ${IMAGE_PHP} ${COMMAND}
|
${CONTAINER_BIN} run ${CONTAINER_COMMON_PARAMS} --name functional-${SUFFIX} ${XDEBUG_MODE} -e XDEBUG_CONFIG="${XDEBUG_CONFIG}" ${CONTAINERPARAMS} ${IMAGE_PHP} ${COMMAND}
|
||||||
SUITE_EXIT_CODE=$?
|
SUITE_EXIT_CODE=$?
|
||||||
;;
|
;;
|
||||||
postgres)
|
postgres)
|
||||||
${CONTAINER_BIN} run --name postgres-func-${SUFFIX} --network ${NETWORK} -d -e POSTGRES_PASSWORD=funcp -e POSTGRES_USER=funcu --tmpfs /var/lib/postgresql/data:rw,noexec,nosuid ${IMAGE_POSTGRES} >/dev/null
|
${CONTAINER_BIN} run --rm ${CI_PARAMS} --name postgres-func-${SUFFIX} --network ${NETWORK} -d -e POSTGRES_PASSWORD=funcp -e POSTGRES_USER=funcu --tmpfs /var/lib/postgresql/data:rw,noexec,nosuid ${IMAGE_POSTGRES} >/dev/null
|
||||||
waitFor postgres-func-${SUFFIX} 5432
|
waitFor postgres-func-${SUFFIX} 5432
|
||||||
CONTAINERPARAMS="-e typo3DatabaseDriver=pdo_pgsql -e typo3DatabaseName=bamboo -e typo3DatabaseUsername=funcu -e typo3DatabaseHost=postgres-func-${SUFFIX} -e typo3DatabasePassword=funcp"
|
CONTAINERPARAMS="-e typo3DatabaseDriver=pdo_pgsql -e typo3DatabaseName=bamboo -e typo3DatabaseUsername=funcu -e typo3DatabaseHost=postgres-func-${SUFFIX} -e typo3DatabasePassword=funcp"
|
||||||
${CONTAINER_BIN} run ${CONTAINER_COMMON_PARAMS} --name functional-${SUFFIX} ${XDEBUG_MODE} -e XDEBUG_CONFIG="${XDEBUG_CONFIG}" ${CONTAINERPARAMS} ${IMAGE_PHP} ${COMMAND}
|
${CONTAINER_BIN} run ${CONTAINER_COMMON_PARAMS} --name functional-${SUFFIX} ${XDEBUG_MODE} -e XDEBUG_CONFIG="${XDEBUG_CONFIG}" ${CONTAINERPARAMS} ${IMAGE_PHP} ${COMMAND}
|
||||||
|
@ -536,7 +553,7 @@ case ${TEST_SUITE} in
|
||||||
sqlite)
|
sqlite)
|
||||||
# create sqlite tmpfs mount typo3temp/var/tests/functional-sqlite-dbs/ to avoid permission issues
|
# create sqlite tmpfs mount typo3temp/var/tests/functional-sqlite-dbs/ to avoid permission issues
|
||||||
mkdir -p "${ROOT_DIR}/typo3temp/var/tests/functional-sqlite-dbs/"
|
mkdir -p "${ROOT_DIR}/typo3temp/var/tests/functional-sqlite-dbs/"
|
||||||
CONTAINERPARAMS="-e typo3DatabaseDriver=pdo_sqlite --tmpfs ${ROOT_DIR}/typo3temp/var/tests/functional-sqlite-dbs/:rw,noexec,nosuid,uid=${HOST_UID}"
|
CONTAINERPARAMS="-e typo3DatabaseDriver=pdo_sqlite --tmpfs ${ROOT_DIR}/typo3temp/var/tests/functional-sqlite-dbs/:rw,noexec,nosuid"
|
||||||
${CONTAINER_BIN} run ${CONTAINER_COMMON_PARAMS} --name functional-${SUFFIX} ${XDEBUG_MODE} -e XDEBUG_CONFIG="${XDEBUG_CONFIG}" ${CONTAINERPARAMS} ${IMAGE_PHP} ${COMMAND}
|
${CONTAINER_BIN} run ${CONTAINER_COMMON_PARAMS} --name functional-${SUFFIX} ${XDEBUG_MODE} -e XDEBUG_CONFIG="${XDEBUG_CONFIG}" ${CONTAINERPARAMS} ${IMAGE_PHP} ${COMMAND}
|
||||||
SUITE_EXIT_CODE=$?
|
SUITE_EXIT_CODE=$?
|
||||||
;;
|
;;
|
||||||
|
@ -574,26 +591,22 @@ case ${TEST_SUITE} in
|
||||||
;;
|
;;
|
||||||
unit)
|
unit)
|
||||||
[ -z "${TEST_FILE}" ] && TEST_FILE="Tests/Unit"
|
[ -z "${TEST_FILE}" ] && TEST_FILE="Tests/Unit"
|
||||||
${CONTAINER_BIN} run ${CONTAINER_COMMON_PARAMS} --name unit-${SUFFIX} ${XDEBUG_MODE} -e XDEBUG_CONFIG="${XDEBUG_CONFIG}" ${IMAGE_PHP} .Build/bin/phpunit -c .Build/vendor/typo3/testing-framework/Resources/Core/Build/UnitTests.xml ${EXTRA_TEST_OPTIONS} ${TEST_FILE}
|
${CONTAINER_BIN} run ${CONTAINER_COMMON_PARAMS} --name unit-${SUFFIX} ${XDEBUG_MODE} -e XDEBUG_CONFIG="${XDEBUG_CONFIG}" ${IMAGE_PHP} .Build/bin/phpunit -c Configuration/UnitTests.xml ${EXTRA_TEST_OPTIONS} ${TEST_FILE}
|
||||||
SUITE_EXIT_CODE=$?
|
SUITE_EXIT_CODE=$?
|
||||||
;;
|
;;
|
||||||
unitRandom)
|
unitRandom)
|
||||||
[ -z "${TEST_FILE}" ] && TEST_FILE="Tests/Unit"
|
[ -z "${TEST_FILE}" ] && TEST_FILE="Tests/Unit"
|
||||||
${CONTAINER_BIN} run ${CONTAINER_COMMON_PARAMS} --name unit-random-${SUFFIX} ${XDEBUG_MODE} -e XDEBUG_CONFIG="${XDEBUG_CONFIG}" ${IMAGE_PHP} .Build/bin/phpunit -c .Build/vendor/typo3/testing-framework/Resources/Core/Build/UnitTests.xml --order-by=random ${EXTRA_TEST_OPTIONS} ${PHPUNIT_RANDOM} ${TEST_FILE}
|
${CONTAINER_BIN} run ${CONTAINER_COMMON_PARAMS} --name unit-random-${SUFFIX} ${XDEBUG_MODE} -e XDEBUG_CONFIG="${XDEBUG_CONFIG}" ${IMAGE_PHP} .Build/bin/phpunit -c Configuration/UnitTests.xml --order-by=random ${EXTRA_TEST_OPTIONS} ${PHPUNIT_RANDOM} ${TEST_FILE}
|
||||||
SUITE_EXIT_CODE=$?
|
SUITE_EXIT_CODE=$?
|
||||||
;;
|
;;
|
||||||
update)
|
update)
|
||||||
# prune unused, dangling local volumes
|
|
||||||
echo "> prune unused, dangling local volumes"
|
|
||||||
${CONTAINER_BIN} volume ls -q -f driver=local -f dangling=true | awk '$0 ~ /^[0-9a-f]{64}$/ { print }' | xargs -I {} ${CONTAINER_BIN} volume rm {}
|
|
||||||
echo ""
|
|
||||||
# pull typo3/core-testing-*:latest versions of those ones that exist locally
|
# pull typo3/core-testing-*:latest versions of those ones that exist locally
|
||||||
echo "> pull ${TYPO3_IMAGE_PREFIX}core-testing-*:latest versions of those ones that exist locally"
|
echo "> pull ghcr.io/sbuerk/demo-core-testing-*:latest versions of those ones that exist locally"
|
||||||
${CONTAINER_BIN} images ${TYPO3_IMAGE_PREFIX}core-testing-*:latest --format "{{.Repository}}:latest" | xargs -I {} ${CONTAINER_BIN} pull {}
|
${CONTAINER_BIN} images ghcr.io/sbuerk/demo-core-testing-*:latest --format "{{.Repository}}:latest" | xargs -I {} ${CONTAINER_BIN} pull {}
|
||||||
echo ""
|
echo ""
|
||||||
# remove "dangling" typo3/core-testing-* images (those tagged as <none>)
|
# remove "dangling" typo3/core-testing-* images (those tagged as <none>)
|
||||||
echo "> remove \"dangling\" ${TYPO3_IMAGE_PREFIX}core-testing-* images (those tagged as <none>)"
|
echo "> remove \"dangling\" ghcr.io/sbuerk/demo-core-testing-* images (those tagged as <none>)"
|
||||||
${CONTAINER_BIN} images ${TYPO3_IMAGE_PREFIX}core-testing-* --filter "dangling=true" --format "{{.ID}}" | xargs -I {} ${CONTAINER_BIN} rmi {}
|
${CONTAINER_BIN} images --filter "reference=ghcr.io/sbuerk/demo-core-testing-*" --filter "dangling=true" --format "{{.ID}}" | xargs -I {} ${CONTAINER_BIN} rmi {}
|
||||||
echo ""
|
echo ""
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
@ -618,19 +631,17 @@ else
|
||||||
fi
|
fi
|
||||||
echo "PHP: ${PHP_VERSION}" >&2
|
echo "PHP: ${PHP_VERSION}" >&2
|
||||||
echo "TYPO3: ${CORE_VERSION}" >&2
|
echo "TYPO3: ${CORE_VERSION}" >&2
|
||||||
|
echo "CONTAINER_BIN: ${CONTAINER_BIN}"
|
||||||
if [[ ${TEST_SUITE} =~ ^functional$ ]]; then
|
if [[ ${TEST_SUITE} =~ ^functional$ ]]; then
|
||||||
case "${DBMS}" in
|
case "${DBMS}" in
|
||||||
mariadb)
|
mariadb|mysql)
|
||||||
echo "DBMS: ${DBMS} version ${MARIADB_VERSION} driver ${DATABASE_DRIVER}" >&2
|
echo "DBMS: ${DBMS} version ${DBMS_VERSION} driver ${DATABASE_DRIVER}" >&2
|
||||||
;;
|
|
||||||
mysql)
|
|
||||||
echo "DBMS: ${DBMS} version ${MYSQL_VERSION} driver ${DATABASE_DRIVER}" >&2
|
|
||||||
;;
|
;;
|
||||||
postgres)
|
postgres)
|
||||||
echo "DBMS: ${DBMS} version ${POSTGRES_VERSION}" >&2
|
echo "DBMS: ${DBMS} version ${DBMS_VERSION} driver pdo_pgsql" >&2
|
||||||
;;
|
;;
|
||||||
sqlite)
|
sqlite)
|
||||||
echo "DBMS: ${DBMS}" >&2
|
echo "DBMS: ${DBMS} driver pdo_sqlite" >&2
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
14
Build/bin/console
Normal file
14
Build/bin/console
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
#!/usr/bin/env php
|
||||||
|
<?php
|
||||||
|
|
||||||
|
include_once __DIR__ . '/../../.Build/vendor/autoload.php';
|
||||||
|
|
||||||
|
use Symfony\Component\Console\Application;
|
||||||
|
use Symfony\Component\Translation\Command\XliffLintCommand;
|
||||||
|
use Symfony\Component\Yaml\Command\LintCommand;
|
||||||
|
|
||||||
|
$application = new Application();
|
||||||
|
$application->add(new XliffLintCommand(null, null, null, false));
|
||||||
|
$application->add(new LintCommand());
|
||||||
|
|
||||||
|
exit($application->run());
|
24
CHANGELOG.md
24
CHANGELOG.md
|
@ -6,6 +6,28 @@ This project adheres to [Semantic Versioning](https://semver.org/).
|
||||||
## x.y.z
|
## x.y.z
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
- Add support for PostgreSQL 16 (#1271)
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Stop storing development tool PHARs in the repository (#1277)
|
||||||
|
- !!! Require a storage PID for the tea list (#1223)
|
||||||
|
- Drop additional namespace segment for the Tea model (#1025)
|
||||||
|
|
||||||
|
### Deprecated
|
||||||
|
|
||||||
|
### Removed
|
||||||
|
- Drop DDEV configuration in favor of `runTests.sh` (#1063)
|
||||||
|
- Stop using the predefined GitHub Actions (#1211)
|
||||||
|
|
||||||
|
### Fixed
|
||||||
|
- Add `resname` to all language labels (#1221)
|
||||||
|
- Raise the minimal TYPO3 V12 version (#1212)
|
||||||
|
|
||||||
|
## 3.1.0
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Add Composer script for XLIFF linting (#1071)
|
||||||
|
- Add polish translation for tea (#1020)
|
||||||
- Make records timeable and hideable (#989)
|
- Make records timeable and hideable (#989)
|
||||||
- Add support for PHP 8.3 (#965)
|
- Add support for PHP 8.3 (#965)
|
||||||
- Add an FE editor (#864, #872, #874, #876)
|
- Add an FE editor (#864, #872, #874, #876)
|
||||||
|
@ -16,8 +38,6 @@ This project adheres to [Semantic Versioning](https://semver.org/).
|
||||||
- Rename TsConfig directory to `TSconfig` (#923)
|
- Rename TsConfig directory to `TSconfig` (#923)
|
||||||
- Set the minimal 12LTS version to 12.1 (#702)
|
- Set the minimal 12LTS version to 12.1 (#702)
|
||||||
|
|
||||||
### Deprecated
|
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
- Stop using Prophecy (#676)
|
- Stop using Prophecy (#676)
|
||||||
|
|
||||||
|
|
35
CONTRIBUTING.md
Normal file
35
CONTRIBUTING.md
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
# How to contribute
|
||||||
|
|
||||||
|
## Code of Conduct
|
||||||
|
|
||||||
|
This project uses the
|
||||||
|
[TYPO3 Code of Conduct](https://typo3.org/community/values/code-of-conduct).
|
||||||
|
|
||||||
|
When you contribute to this project or interact with community members,
|
||||||
|
you agree to adhere to this code of conduct.
|
||||||
|
|
||||||
|
## Open an issue
|
||||||
|
|
||||||
|
Feel free to open an issue - no matter whether you found a bug, would like to request a feature or have questions.
|
||||||
|
|
||||||
|
1. Please check existing open and closed issues first and feel free to comment and re-open them.
|
||||||
|
Existing issues are available at https://github.com/FriendsOfTYPO3/tea/issues .
|
||||||
|
2. Create a new issue at https://github.com/FriendsOfTYPO3/tea/issues/new .
|
||||||
|
3. Use a meaningful title.
|
||||||
|
4. Provide enough context, a concrete use case and steps to reproduce bugs.
|
||||||
|
|
||||||
|
## Contributing code and documentation
|
||||||
|
|
||||||
|
1. Create a fork of the repository.
|
||||||
|
You need a [GitHub account](https://github.com/join).
|
||||||
|
2. Create a new branch holding your changes.
|
||||||
|
3. Apply your changes.
|
||||||
|
4. Commit your changes following the [TYPO3 git commit conventions](https://docs.typo3.org/m/typo3/guide-contributionworkflow/main/en-us/Appendix/CommitMessage.html#commitmessage).
|
||||||
|
The only relevant difference is that we do not use the `Releases` or `Change-Id` metadata.
|
||||||
|
5. Push your changes.
|
||||||
|
6. Open a pull request.
|
||||||
|
|
||||||
|
Some pull requests can not be merged quickly.
|
||||||
|
In cases where the changes cannot be merged quickly, we consider the original author responsible for keeping their PR branches up to by rebasing.
|
||||||
|
|
||||||
|
Please also have a look at the documented [contribution workflow for GitHub](https://docs.github.com/en/get-started/quickstart/contributing-to-projects).
|
|
@ -5,8 +5,8 @@ declare(strict_types=1);
|
||||||
namespace TTN\Tea\Controller;
|
namespace TTN\Tea\Controller;
|
||||||
|
|
||||||
use Psr\Http\Message\ResponseInterface;
|
use Psr\Http\Message\ResponseInterface;
|
||||||
use TTN\Tea\Domain\Model\Product\Tea;
|
use TTN\Tea\Domain\Model\Tea;
|
||||||
use TTN\Tea\Domain\Repository\Product\TeaRepository;
|
use TTN\Tea\Domain\Repository\TeaRepository;
|
||||||
use TYPO3\CMS\Core\Context\Context;
|
use TYPO3\CMS\Core\Context\Context;
|
||||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
||||||
use TYPO3\CMS\Extbase\Annotation as Extbase;
|
use TYPO3\CMS\Extbase\Annotation as Extbase;
|
||||||
|
@ -42,7 +42,10 @@ class FrontEndEditorController extends ActionController
|
||||||
*/
|
*/
|
||||||
private function getUidOfLoggedInUser(): int
|
private function getUidOfLoggedInUser(): int
|
||||||
{
|
{
|
||||||
return $this->context->getPropertyFromAspect('frontend.user', 'id');
|
$userUid = $this->context->getPropertyFromAspect('frontend.user', 'id');
|
||||||
|
\assert(\is_int($userUid) && $userUid >= 0);
|
||||||
|
|
||||||
|
return $userUid;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -5,8 +5,8 @@ declare(strict_types=1);
|
||||||
namespace TTN\Tea\Controller;
|
namespace TTN\Tea\Controller;
|
||||||
|
|
||||||
use Psr\Http\Message\ResponseInterface;
|
use Psr\Http\Message\ResponseInterface;
|
||||||
use TTN\Tea\Domain\Model\Product\Tea;
|
use TTN\Tea\Domain\Model\Tea;
|
||||||
use TTN\Tea\Domain\Repository\Product\TeaRepository;
|
use TTN\Tea\Domain\Repository\TeaRepository;
|
||||||
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
|
use TYPO3\CMS\Extbase\Mvc\Controller\ActionController;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace TTN\Tea\Domain\Model\Product;
|
namespace TTN\Tea\Domain\Model;
|
||||||
|
|
||||||
use TYPO3\CMS\Extbase\Annotation as Extbase;
|
use TYPO3\CMS\Extbase\Annotation as Extbase;
|
||||||
use TYPO3\CMS\Extbase\Domain\Model\FileReference;
|
use TYPO3\CMS\Extbase\Domain\Model\FileReference;
|
|
@ -2,10 +2,9 @@
|
||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace TTN\Tea\Domain\Repository\Product;
|
namespace TTN\Tea\Domain\Repository;
|
||||||
|
|
||||||
use TTN\Tea\Domain\Model\Product\Tea;
|
use TTN\Tea\Domain\Model\Tea;
|
||||||
use TTN\Tea\Domain\Repository\Traits\StoragePageAgnosticTrait;
|
|
||||||
use TYPO3\CMS\Extbase\Persistence\QueryInterface;
|
use TYPO3\CMS\Extbase\Persistence\QueryInterface;
|
||||||
use TYPO3\CMS\Extbase\Persistence\QueryResultInterface;
|
use TYPO3\CMS\Extbase\Persistence\QueryResultInterface;
|
||||||
use TYPO3\CMS\Extbase\Persistence\Repository;
|
use TYPO3\CMS\Extbase\Persistence\Repository;
|
||||||
|
@ -15,16 +14,17 @@ use TYPO3\CMS\Extbase\Persistence\Repository;
|
||||||
*/
|
*/
|
||||||
class TeaRepository extends Repository
|
class TeaRepository extends Repository
|
||||||
{
|
{
|
||||||
use StoragePageAgnosticTrait;
|
|
||||||
|
|
||||||
protected $defaultOrderings = ['title' => QueryInterface::ORDER_ASCENDING];
|
protected $defaultOrderings = ['title' => QueryInterface::ORDER_ASCENDING];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param positive-int $ownerUid
|
* @param positive-int $ownerUid
|
||||||
|
*
|
||||||
|
* @return QueryResultInterface<Tea>
|
||||||
*/
|
*/
|
||||||
public function findByOwnerUid(int $ownerUid): QueryResultInterface
|
public function findByOwnerUid(int $ownerUid): QueryResultInterface
|
||||||
{
|
{
|
||||||
$query = $this->createQuery();
|
$query = $this->createQuery();
|
||||||
|
$query->setQuerySettings($query->getQuerySettings()->setRespectStoragePage(false));
|
||||||
$query->matching($query->equals('ownerUid', $ownerUid));
|
$query->matching($query->equals('ownerUid', $ownerUid));
|
||||||
|
|
||||||
return $query->execute();
|
return $query->execute();
|
|
@ -1,21 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace TTN\Tea\Domain\Repository\Traits;
|
|
||||||
|
|
||||||
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
|
||||||
use TYPO3\CMS\Extbase\Persistence\Generic\Typo3QuerySettings;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This trait for repositories makes the repository ignore the storage page setting when fetching models.
|
|
||||||
*/
|
|
||||||
trait StoragePageAgnosticTrait
|
|
||||||
{
|
|
||||||
public function initializeObject(): void
|
|
||||||
{
|
|
||||||
$querySettings = GeneralUtility::makeInstance(Typo3QuerySettings::class);
|
|
||||||
$querySettings->setRespectStoragePage(false);
|
|
||||||
$this->setDefaultQuerySettings($querySettings);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -3,7 +3,7 @@
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
return [
|
return [
|
||||||
\TTN\Tea\Domain\Model\Product\Tea::class => [
|
\TTN\Tea\Domain\Model\Tea::class => [
|
||||||
'properties' => [
|
'properties' => [
|
||||||
'ownerUid' => ['fieldName' => 'owner'],
|
'ownerUid' => ['fieldName' => 'owner'],
|
||||||
],
|
],
|
||||||
|
|
|
@ -3,23 +3,24 @@
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.6/phpunit.xsd"
|
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.6/phpunit.xsd"
|
||||||
backupGlobals="true"
|
backupGlobals="true"
|
||||||
bootstrap="../../.Build/vendor/typo3/testing-framework/Resources/Core/Build/FunctionalTestsBootstrap.php"
|
beStrictAboutTestsThatDoNotTestAnything="false"
|
||||||
|
bootstrap="../.Build/vendor/typo3/testing-framework/Resources/Core/Build/FunctionalTestsBootstrap.php"
|
||||||
cacheResult="false"
|
cacheResult="false"
|
||||||
colors="true"
|
colors="true"
|
||||||
convertErrorsToExceptions="true"
|
|
||||||
convertWarningsToExceptions="true"
|
|
||||||
convertDeprecationsToExceptions="true"
|
convertDeprecationsToExceptions="true"
|
||||||
|
convertErrorsToExceptions="true"
|
||||||
convertNoticesToExceptions="true"
|
convertNoticesToExceptions="true"
|
||||||
|
convertWarningsToExceptions="true"
|
||||||
|
failOnRisky="true"
|
||||||
|
failOnWarning="true"
|
||||||
forceCoversAnnotation="false"
|
forceCoversAnnotation="false"
|
||||||
stopOnError="false"
|
stopOnError="false"
|
||||||
stopOnFailure="false"
|
stopOnFailure="false"
|
||||||
stopOnIncomplete="false"
|
stopOnIncomplete="false"
|
||||||
stopOnSkipped="false"
|
stopOnSkipped="false"
|
||||||
verbose="false"
|
verbose="false"
|
||||||
beStrictAboutTestsThatDoNotTestAnything="false"
|
|
||||||
failOnWarning="true"
|
|
||||||
failOnRisky="true"
|
|
||||||
>
|
>
|
||||||
|
<coverage/>
|
||||||
<testsuites>
|
<testsuites>
|
||||||
<testsuite name="Functional tests">
|
<testsuite name="Functional tests">
|
||||||
<!--
|
<!--
|
||||||
|
@ -31,15 +32,15 @@
|
||||||
</testsuites>
|
</testsuites>
|
||||||
<php>
|
<php>
|
||||||
<!-- @deprecated: will be removed with next major version, constant TYPO3_MODE is deprecated -->
|
<!-- @deprecated: will be removed with next major version, constant TYPO3_MODE is deprecated -->
|
||||||
<const name="TYPO3_MODE" value="BE" />
|
<const name="TYPO3_MODE" value="BE"/>
|
||||||
<!--
|
<!--
|
||||||
@deprecated: Set this to not suppress warnings, notices and deprecations in functional tests
|
@deprecated: Set this to not suppress warnings, notices and deprecations in functional tests
|
||||||
with TYPO3 core v11 and up.
|
with TYPO3 core v11 and up.
|
||||||
Will always be done with next major version.
|
Will always be done with next major version.
|
||||||
To still suppress warnings, notices and deprecations, do NOT define the constant at all.
|
To still suppress warnings, notices and deprecations, do NOT define the constant at all.
|
||||||
-->
|
-->
|
||||||
<const name="TYPO3_TESTING_FUNCTIONAL_REMOVE_ERROR_HANDLER" value="true" />
|
<const name="TYPO3_TESTING_FUNCTIONAL_REMOVE_ERROR_HANDLER" value="true"/>
|
||||||
<ini name="display_errors" value="1" />
|
<ini name="display_errors" value="1"/>
|
||||||
<env name="TYPO3_CONTEXT" value="Testing" />
|
<env name="TYPO3_CONTEXT" value="Testing"/>
|
||||||
</php>
|
</php>
|
||||||
</phpunit>
|
</phpunit>
|
15
Configuration/Services.php
Normal file
15
Configuration/Services.php
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
|
||||||
|
|
||||||
|
return static function (ContainerConfigurator $containerConfigurator) {
|
||||||
|
$services = $containerConfigurator->services()
|
||||||
|
->defaults()
|
||||||
|
->autowire()
|
||||||
|
->autoconfigure();
|
||||||
|
|
||||||
|
$services->load('TTN\\Tea\\', '../Classes/*')
|
||||||
|
->exclude('../Classes/Domain/Model/*');
|
||||||
|
};
|
|
@ -1,9 +0,0 @@
|
||||||
services:
|
|
||||||
_defaults:
|
|
||||||
autowire: true
|
|
||||||
autoconfigure: true
|
|
||||||
public: false
|
|
||||||
|
|
||||||
TTN\Tea\:
|
|
||||||
resource: '../Classes/*'
|
|
||||||
exclude: '../Classes/Domain/Model/*'
|
|
|
@ -31,7 +31,7 @@ call_user_func(
|
||||||
);
|
);
|
||||||
|
|
||||||
// This removes the default controls from the plugin.
|
// This removes the default controls from the plugin.
|
||||||
$controlsToRemove = 'recursive,select_key,pages';
|
$controlsToRemove = 'recursive,pages';
|
||||||
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_excludelist']['tea_teaindex'] = $controlsToRemove;
|
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_excludelist']['tea_teaindex'] = $controlsToRemove;
|
||||||
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_excludelist']['tea_teashow'] = $controlsToRemove;
|
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_excludelist']['tea_teashow'] = $controlsToRemove;
|
||||||
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_excludelist']['tea_teafrontendeditor'] = $controlsToRemove;
|
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_excludelist']['tea_teafrontendeditor'] = $controlsToRemove;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
$tca = [
|
$tca = [
|
||||||
'ctrl' => [
|
'ctrl' => [
|
||||||
'title' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_product_tea',
|
'title' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_tea',
|
||||||
'label' => 'title',
|
'label' => 'title',
|
||||||
'tstamp' => 'tstamp',
|
'tstamp' => 'tstamp',
|
||||||
'crdate' => 'crdate',
|
'crdate' => 'crdate',
|
||||||
|
@ -20,6 +20,7 @@ $tca = [
|
||||||
'transOrigDiffSourceField' => 'l18n_diffsource',
|
'transOrigDiffSourceField' => 'l18n_diffsource',
|
||||||
'languageField' => 'sys_language_uid',
|
'languageField' => 'sys_language_uid',
|
||||||
'translationSource' => 'l10n_source',
|
'translationSource' => 'l10n_source',
|
||||||
|
'versioningWS' => true,
|
||||||
],
|
],
|
||||||
'types' => [
|
'types' => [
|
||||||
'1' => [
|
'1' => [
|
||||||
|
@ -34,11 +35,11 @@ $tca = [
|
||||||
'palettes' => [
|
'palettes' => [
|
||||||
'hidden' => [
|
'hidden' => [
|
||||||
'showitem' => '
|
'showitem' => '
|
||||||
hidden;LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_product_tea.hidden
|
hidden;LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_tea.hidden
|
||||||
',
|
',
|
||||||
],
|
],
|
||||||
'access' => [
|
'access' => [
|
||||||
'label' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_product_tea.palettes.access',
|
'label' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_tea.palettes.access',
|
||||||
'showitem' => '
|
'showitem' => '
|
||||||
starttime;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:starttime_formlabel,
|
starttime;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:starttime_formlabel,
|
||||||
endtime;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:endtime_formlabel,
|
endtime;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:endtime_formlabel,
|
||||||
|
@ -50,7 +51,7 @@ $tca = [
|
||||||
'columns' => [
|
'columns' => [
|
||||||
'hidden' => [
|
'hidden' => [
|
||||||
'exclude' => true,
|
'exclude' => true,
|
||||||
'label' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_product_tea.hidden',
|
'label' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_tea.hidden',
|
||||||
'config' => [
|
'config' => [
|
||||||
'type' => 'check',
|
'type' => 'check',
|
||||||
'renderType' => 'checkboxToggle',
|
'renderType' => 'checkboxToggle',
|
||||||
|
@ -107,10 +108,10 @@ $tca = [
|
||||||
'value' => 0,
|
'value' => 0,
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
'foreign_table' => 'tx_tea_domain_model_product_tea',
|
'foreign_table' => 'tx_tea_domain_model_tea',
|
||||||
'foreign_table_where' =>
|
'foreign_table_where' =>
|
||||||
'AND {#tx_tea_domain_model_product_tea}.{#pid}=###CURRENT_PID###
|
'AND {#tx_tea_domain_model_tea}.{#pid}=###CURRENT_PID###
|
||||||
AND {#tx_tea_domain_model_product_tea}.{#sys_language_uid} IN (-1,0)',
|
AND {#tx_tea_domain_model_tea}.{#sys_language_uid} IN (-1,0)',
|
||||||
'default' => 0,
|
'default' => 0,
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
@ -126,7 +127,7 @@ $tca = [
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
'title' => [
|
'title' => [
|
||||||
'label' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_product_tea.title',
|
'label' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_tea.title',
|
||||||
'config' => [
|
'config' => [
|
||||||
'type' => 'input',
|
'type' => 'input',
|
||||||
'size' => 40,
|
'size' => 40,
|
||||||
|
@ -136,7 +137,7 @@ $tca = [
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
'description' => [
|
'description' => [
|
||||||
'label' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_product_tea.description',
|
'label' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_tea.description',
|
||||||
'config' => [
|
'config' => [
|
||||||
'type' => 'text',
|
'type' => 'text',
|
||||||
'enableRichtext' => true,
|
'enableRichtext' => true,
|
||||||
|
@ -147,7 +148,7 @@ $tca = [
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
'image' => [
|
'image' => [
|
||||||
'label' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_product_tea.image',
|
'label' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_tea.image',
|
||||||
'config' => [
|
'config' => [
|
||||||
'type' => 'file',
|
'type' => 'file',
|
||||||
'maxitems' => 1,
|
'maxitems' => 1,
|
||||||
|
@ -164,7 +165,7 @@ $tca = [
|
||||||
'fe_group' => [
|
'fe_group' => [
|
||||||
'exclude' => true,
|
'exclude' => true,
|
||||||
'l10n_mode' => 'exclude',
|
'l10n_mode' => 'exclude',
|
||||||
'label' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_product_tea.fe_group',
|
'label' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_tea.fe_group',
|
||||||
'config' => [
|
'config' => [
|
||||||
'type' => 'select',
|
'type' => 'select',
|
||||||
'renderType' => 'selectMultipleSideBySide',
|
'renderType' => 'selectMultipleSideBySide',
|
||||||
|
@ -191,7 +192,7 @@ $tca = [
|
||||||
'owner' => [
|
'owner' => [
|
||||||
'exclude' => true,
|
'exclude' => true,
|
||||||
'l10n_mode' => 'exclude',
|
'l10n_mode' => 'exclude',
|
||||||
'label' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_product_tea.owner',
|
'label' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_tea.owner',
|
||||||
'config' => [
|
'config' => [
|
||||||
'type' => 'group',
|
'type' => 'group',
|
||||||
'allowed' => 'fe_users',
|
'allowed' => 'fe_users',
|
||||||
|
@ -241,7 +242,7 @@ if ($typo3Version->getMajorVersion() < 12) {
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
$tca['columns']['image'] = [
|
$tca['columns']['image'] = [
|
||||||
'label' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_product_tea.image',
|
'label' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_tea.image',
|
||||||
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
|
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
|
||||||
'image',
|
'image',
|
||||||
[
|
[
|
||||||
|
@ -258,7 +259,7 @@ if ($typo3Version->getMajorVersion() < 12) {
|
||||||
];
|
];
|
||||||
$tca['columns']['hidden']['config'] = [
|
$tca['columns']['hidden']['config'] = [
|
||||||
'type' => 'check',
|
'type' => 'check',
|
||||||
'label' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_product_tea.hidden',
|
'label' => 'LLL:EXT:tea/Resources/Private/Language/locallang_db.xlf:tx_tea_domain_model_tea.hidden',
|
||||||
'items' => [
|
'items' => [
|
||||||
[
|
[
|
||||||
0 => '',
|
0 => '',
|
|
@ -3,13 +3,16 @@
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.6/phpunit.xsd"
|
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.6/phpunit.xsd"
|
||||||
backupGlobals="true"
|
backupGlobals="true"
|
||||||
bootstrap="../../.Build/vendor/typo3/testing-framework/Resources/Core/Build/UnitTestsBootstrap.php"
|
beStrictAboutTestsThatDoNotTestAnything="false"
|
||||||
|
bootstrap="../.Build/vendor/typo3/testing-framework/Resources/Core/Build/UnitTestsBootstrap.php"
|
||||||
cacheResult="false"
|
cacheResult="false"
|
||||||
colors="true"
|
colors="true"
|
||||||
convertDeprecationsToExceptions="true"
|
convertDeprecationsToExceptions="true"
|
||||||
convertErrorsToExceptions="true"
|
convertErrorsToExceptions="true"
|
||||||
convertWarningsToExceptions="true"
|
|
||||||
convertNoticesToExceptions="true"
|
convertNoticesToExceptions="true"
|
||||||
|
convertWarningsToExceptions="true"
|
||||||
|
failOnRisky="true"
|
||||||
|
failOnWarning="true"
|
||||||
forceCoversAnnotation="false"
|
forceCoversAnnotation="false"
|
||||||
processIsolation="false"
|
processIsolation="false"
|
||||||
stopOnError="false"
|
stopOnError="false"
|
||||||
|
@ -17,10 +20,8 @@
|
||||||
stopOnIncomplete="false"
|
stopOnIncomplete="false"
|
||||||
stopOnSkipped="false"
|
stopOnSkipped="false"
|
||||||
verbose="false"
|
verbose="false"
|
||||||
beStrictAboutTestsThatDoNotTestAnything="false"
|
|
||||||
failOnWarning="true"
|
|
||||||
failOnRisky="true"
|
|
||||||
>
|
>
|
||||||
|
<coverage/>
|
||||||
<testsuites>
|
<testsuites>
|
||||||
<testsuite name="Unit tests">
|
<testsuite name="Unit tests">
|
||||||
<!--
|
<!--
|
||||||
|
@ -30,18 +31,10 @@
|
||||||
<directory suffix="Test.php">./</directory>
|
<directory suffix="Test.php">./</directory>
|
||||||
</testsuite>
|
</testsuite>
|
||||||
</testsuites>
|
</testsuites>
|
||||||
<coverage>
|
|
||||||
<include>
|
|
||||||
<!--
|
|
||||||
This path needs an adaption in extensions, when coverage statistics are wanted.
|
|
||||||
-->
|
|
||||||
<directory>../../../../../../typo3/sysext/*/Classes/</directory>
|
|
||||||
</include>
|
|
||||||
</coverage>
|
|
||||||
<php>
|
<php>
|
||||||
<!-- @deprecated: will be removed with next major version, constant TYPO3_MODE is deprecated -->
|
<!-- @deprecated: will be removed with next major version, constant TYPO3_MODE is deprecated -->
|
||||||
<const name="TYPO3_MODE" value="BE" />
|
<const name="TYPO3_MODE" value="BE"/>
|
||||||
<ini name="display_errors" value="1" />
|
<ini name="display_errors" value="1"/>
|
||||||
<env name="TYPO3_CONTEXT" value="Testing" />
|
<env name="TYPO3_CONTEXT" value="Testing"/>
|
||||||
</php>
|
</php>
|
||||||
</phpunit>
|
</phpunit>
|
|
@ -22,19 +22,12 @@ platform you want to use.
|
||||||
GitHub Actions
|
GitHub Actions
|
||||||
==============
|
==============
|
||||||
|
|
||||||
This extension has two code-checking workflows for
|
This extension has a code-checking workflow for
|
||||||
`GitHub Actions <https://github.com/FriendsOfTYPO3/tea/actions>`__:
|
`GitHub Actions <https://github.com/FriendsOfTYPO3/tea/actions>`__ using
|
||||||
|
`local tools <https://github.com/FriendsOfTYPO3/tea/blob/main/.github/workflows/ci.yml>`__:
|
||||||
- `one that uses the local tools <https://github.com/FriendsOfTYPO3/tea/blob/main/.github/workflows/ci.yml>`__:
|
This workflow uses the development tools installed via Composer and PHIVE and
|
||||||
This is the workflow you most probably would want to use:
|
calls them using the provided Composer scripts. This allows running the code
|
||||||
This workflow uses the development tools installed via Composer and PHIVE and
|
quality checks locally as well as in GitHub Actions.
|
||||||
calls them using the provided Composer scripts. Use this workflow if you want
|
|
||||||
to run the code quality checks locally as well as in GitHub Actions.
|
|
||||||
|
|
||||||
- `one that completely relies on predefined actions <https://github.com/FriendsOfTYPO3/tea/blob/main/.github/workflows/predefined.yml>`__:
|
|
||||||
This workflow does not need the development tools to be installed locally.
|
|
||||||
Use this workflow if you only want to run the code quality checks in GitHub
|
|
||||||
Actions, but not locally.
|
|
||||||
|
|
||||||
.. _gitlab-ci:
|
.. _gitlab-ci:
|
||||||
|
|
||||||
|
|
14
Documentation/DivergencesToTypo3Core.rst
Normal file
14
Documentation/DivergencesToTypo3Core.rst
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
.. include:: /Includes.rst.txt
|
||||||
|
|
||||||
|
.. _divergencesToTypo3Core:
|
||||||
|
|
||||||
|
=========================
|
||||||
|
Divergences to TYPO3 Core
|
||||||
|
=========================
|
||||||
|
|
||||||
|
A list of all divergences to the TYPO3 core and why we decided to diverge.
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:glob:
|
||||||
|
|
||||||
|
DivergencesToTypo3Core/*
|
11
Documentation/DivergencesToTypo3Core/Attributes.rst
Normal file
11
Documentation/DivergencesToTypo3Core/Attributes.rst
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
.. include:: /Includes.rst.txt
|
||||||
|
|
||||||
|
.. _attributes:
|
||||||
|
|
||||||
|
Attributes
|
||||||
|
==========
|
||||||
|
|
||||||
|
TYPO3 also extends the availability of registering services via attributes.
|
||||||
|
We will prefer the attributes over Services files.
|
||||||
|
But we won't use both at once and still need Services files as long as PHP 7.4 is supported.
|
||||||
|
Attributes will be used in favor of Services files once we drop unsupported PHP versions.
|
28
Documentation/DivergencesToTypo3Core/ServicesFiles.rst
Normal file
28
Documentation/DivergencesToTypo3Core/ServicesFiles.rst
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
.. include:: /Includes.rst.txt
|
||||||
|
|
||||||
|
.. _servicesFiles:
|
||||||
|
|
||||||
|
Services Files
|
||||||
|
==============
|
||||||
|
|
||||||
|
We choose to use :file:`Services.php` instead of :file:`Services.yaml`.
|
||||||
|
It still is completely fine to use YAML files over PHP files or even mix both.
|
||||||
|
Some things are way shorter to write with the YAML syntax.
|
||||||
|
|
||||||
|
We prefer the PHP file over YAML for the following reasons:
|
||||||
|
|
||||||
|
- Static Code Analysis
|
||||||
|
|
||||||
|
Static code analysis tools, like PHPStan, can analyse the PHP source code base.
|
||||||
|
They typically don't support other files like YAML.
|
||||||
|
Those tools report issues for not found classes, e.g. due to typos.
|
||||||
|
|
||||||
|
- Auto completion
|
||||||
|
|
||||||
|
Modern tooling like IDEs and Language Servers provide auto completion for PHP source files out of the box.
|
||||||
|
That way programmers can discover APIs and write more robust code faster.
|
||||||
|
|
||||||
|
- Automatic code migration
|
||||||
|
|
||||||
|
PHP Code can be auto migrated via tools like rector.
|
||||||
|
E.g. renaming a class can be applied to PHP code, but no current tool for yaml exists.
|
|
@ -19,4 +19,4 @@ automatically.
|
||||||
|
|
||||||
.. seealso::
|
.. seealso::
|
||||||
|
|
||||||
For further details read the :doc:`TYPO3 Documentation Rendering Guide <h2document:RenderingDocs/Quickstart>`.
|
For further details read the :ref:`TYPO3 Documentation Rendering Guide <h2document:docs-contribute-git-docker>`.
|
||||||
|
|
|
@ -6,6 +6,5 @@
|
||||||
Development environment
|
Development environment
|
||||||
=======================
|
=======================
|
||||||
|
|
||||||
You can either run the code quality checks and automated tests locally (using a
|
You can run the code quality checks and automated tests locally (using a
|
||||||
local PHP, Composer, and database), or you can use
|
local PHP, Composer, and database) or using runTests.sh.
|
||||||
`ddev <https://github.com/drud/ddev>`__ for a Docker-based setup.
|
|
||||||
|
|
|
@ -1,34 +1 @@
|
||||||
.. More information about this file:
|
.. You can put central messages to display on all pages here
|
||||||
https://docs.typo3.org/m/typo3/docs-how-to-document/main/en-us/GeneralConventions/FileStructure.html#includes-rst-txt
|
|
||||||
|
|
||||||
.. ----------
|
|
||||||
.. text roles
|
|
||||||
.. ----------
|
|
||||||
|
|
||||||
.. role:: aspect(emphasis)
|
|
||||||
.. role:: bash(code)
|
|
||||||
.. role:: html(code)
|
|
||||||
.. role:: js(code)
|
|
||||||
.. role:: php(code)
|
|
||||||
.. role:: rst(code)
|
|
||||||
.. role:: sep(strong)
|
|
||||||
.. role:: sql(code)
|
|
||||||
|
|
||||||
.. role:: tsconfig(code)
|
|
||||||
:class: typoscript
|
|
||||||
|
|
||||||
.. role:: typoscript(code)
|
|
||||||
.. role:: xml(code)
|
|
||||||
:class: html
|
|
||||||
|
|
||||||
.. role:: yaml(code)
|
|
||||||
|
|
||||||
.. default-role:: code
|
|
||||||
|
|
||||||
.. ---------
|
|
||||||
.. highlight
|
|
||||||
.. ---------
|
|
||||||
|
|
||||||
.. By default, code blocks use automatically detected syntax highlighting
|
|
||||||
|
|
||||||
.. highlight:: guess
|
|
||||||
|
|
|
@ -51,6 +51,7 @@ continuous integration.
|
||||||
ContinuousIntegration
|
ContinuousIntegration
|
||||||
Documentation
|
Documentation
|
||||||
Security
|
Security
|
||||||
|
DivergencesToTypo3Core
|
||||||
|
|
||||||
.. Meta Menu
|
.. Meta Menu
|
||||||
|
|
||||||
|
@ -58,4 +59,3 @@ continuous integration.
|
||||||
:hidden:
|
:hidden:
|
||||||
|
|
||||||
Sitemap
|
Sitemap
|
||||||
genindex
|
|
||||||
|
|
|
@ -21,127 +21,116 @@ Composer scripts
|
||||||
|
|
||||||
For most development-related tasks, this extension provides Composer scripts.
|
For most development-related tasks, this extension provides Composer scripts.
|
||||||
If you are working locally, you can run them using :bash:`composer <scriptname>`.
|
If you are working locally, you can run them using :bash:`composer <scriptname>`.
|
||||||
If you are working with ddev, you can run them with :bash:`ddev composer <scriptname>`.
|
|
||||||
You do not need to start or build the containers for this as this happens
|
|
||||||
automatically.
|
|
||||||
|
|
||||||
The code-quality-related Composer scripts make use of the PHIVE-installed tools.
|
The code-quality-related Composer scripts make use of the PHIVE-installed tools.
|
||||||
This means that for non-ddev-based development, you need to run :bash:`phive install`
|
|
||||||
before you can use the Composer scripts.
|
|
||||||
|
|
||||||
You can run :bash:`composer` (or :bash:`ddev composer`) to display a list of all available
|
You can run :bash:`composer` or :bash:`./Build/Scripts/runTests.sh composer` to
|
||||||
Composer commands and scripts. For all custom Composer scripts there are descriptions
|
display a list of all available Composer commands and scripts. For all custom
|
||||||
in the `script-description` section of the `composer.json`.
|
Composer scripts there are descriptions in the `script-description` section of
|
||||||
|
the `composer.json`.
|
||||||
|
|
||||||
.. _running-code-checks:
|
.. _running-code-checks:
|
||||||
|
|
||||||
Running code checks
|
Running code checks
|
||||||
===================
|
===================
|
||||||
|
|
||||||
You can currently run these code checks on the command line (if working locally without ddev, omit the :bash:`ddev` part):
|
You can currently run these code checks on the command line:
|
||||||
|
|
||||||
.. index:: Commands; composer ci
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
ddev composer ci
|
|
||||||
|
|
||||||
Runs all dynamic and static code checks.
|
|
||||||
|
|
||||||
.. index:: Commands; composer ci:composer:normalize
|
.. index:: Commands; composer ci:composer:normalize
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
ddev composer ci:composer:normalize
|
composer ci:composer:normalize
|
||||||
|
|
||||||
Checks the composer.json.
|
Checks the composer.json.
|
||||||
|
|
||||||
.. index:: Commands; composer ci:json:lint
|
.. index:: Commands; composer ci:json:lint
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
ddev composer ci:json:lint
|
composer ci:json:lint
|
||||||
|
|
||||||
Lints the JSON files.
|
Lints the JSON files.
|
||||||
|
|
||||||
.. index:: Commands; composer ci:php
|
.. index:: Commands; composer ci:php
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
ddev composer ci:php
|
composer ci:php
|
||||||
|
|
||||||
Runs all static checks for the PHP files.
|
Runs all static checks for the PHP files.
|
||||||
|
|
||||||
.. index:: Commands; composer ci:php:cs-fixer
|
.. index:: Commands; composer ci:php:cs-fixer
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
ddev composer ci:php:cs-fixer
|
composer ci:php:cs-fixer
|
||||||
|
|
||||||
Checks the code style with the PHP Coding Standards Fixer (PHP-CS-Fixer).
|
Checks the code style with the PHP Coding Standards Fixer (PHP-CS-Fixer).
|
||||||
|
|
||||||
.. index:: Commands; composer ci:php:lint
|
.. index:: Commands; composer ci:php:lint
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
ddev composer ci:php:lint
|
composer ci:php:lint
|
||||||
|
|
||||||
Lints the PHP files for syntax errors.
|
Lints the PHP files for syntax errors.
|
||||||
|
|
||||||
.. index:: Commands; composer ci:php:sniff
|
.. index:: Commands; composer ci:php:sniff
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
ddev composer ci:php:sniff
|
composer ci:php:sniff
|
||||||
|
|
||||||
Checks the code style with PHP_CodeSniffer (PHPCS).
|
Checks the code style with PHP_CodeSniffer (PHPCS).
|
||||||
|
|
||||||
.. index:: Commands; composer ci:php:stan
|
.. index:: Commands; composer ci:php:stan
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
ddev composer ci:php:stan
|
composer ci:php:stan
|
||||||
|
|
||||||
Checks the PHP types using PHPStan.
|
Checks the PHP types using PHPStan.
|
||||||
|
|
||||||
.. index:: Commands; composer ci:static
|
.. index:: Commands; composer ci:static
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
ddev composer ci:static
|
composer ci:static
|
||||||
|
|
||||||
Runs all static code checks (syntax, style, types).
|
Runs all static code checks (syntax, style, types).
|
||||||
|
|
||||||
.. index:: Commands; composer ci:ts:lint
|
.. index:: Commands; composer ci:ts:lint
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
ddev composer ci:ts:lint
|
composer ci:ts:lint
|
||||||
|
|
||||||
Lints the TypoScript files.
|
Lints the TypoScript files.
|
||||||
|
|
||||||
.. index:: Commands; composer ci:yaml:lint
|
.. index:: Commands; composer ci:yaml:lint
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
ddev composer ci:yaml:lint
|
composer ci:yaml:lint
|
||||||
|
|
||||||
Lints the YAML files.
|
Lints the YAML files.
|
||||||
|
|
||||||
.. index:: Commands; composer fix:php
|
.. index:: Commands; composer fix:php
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
ddev composer fix:php
|
composer fix:php
|
||||||
|
|
||||||
Runs all fixers for the PHP code.
|
Runs all fixers for the PHP code.
|
||||||
|
|
||||||
.. index:: Commands; composer fix:php:cs
|
.. index:: Commands; composer fix:php:cs
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
ddev composer fix:php:cs
|
composer fix:php:cs
|
||||||
|
|
||||||
Fixes the code style with PHP-CS-Fixer.
|
Fixes the code style with PHP-CS-Fixer.
|
||||||
|
|
||||||
.. index:: Commands; composer fix:php:sniff
|
.. index:: Commands; composer fix:php:sniff
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
ddev composer fix:php:sniff
|
composer fix:php:sniff
|
||||||
|
|
||||||
Fixes the code style with PHP_CodeSniffer.
|
Fixes the code style with PHP_CodeSniffer.
|
||||||
|
|
||||||
.. index:: Commands; composer phpstan:baseline
|
.. index:: Commands; composer phpstan:baseline
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
ddev composer phpstan:baseline
|
composer phpstan:baseline
|
||||||
|
|
||||||
Updates the PHPStan baseline file to match the code.
|
Updates the PHPStan baseline file to match the code.
|
||||||
|
|
||||||
|
@ -150,61 +139,47 @@ Updates the PHPStan baseline file to match the code.
|
||||||
Running unit and functional tests
|
Running unit and functional tests
|
||||||
=================================
|
=================================
|
||||||
|
|
||||||
You can currently run these tests and coverages on the command line (if working locally without ddev, omit the :bash:`ddev` part):
|
You can currently run these tests and coverages on the command line:
|
||||||
|
|
||||||
.. index:: Commands; composer ci:coverage
|
.. index:: Commands; composer ci:coverage
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
ddev composer ci:coverage
|
composer ci:coverage
|
||||||
|
|
||||||
Runs the ci:coverage script as defined in composer.json.
|
Runs the ci:coverage script as defined in composer.json.
|
||||||
|
|
||||||
.. index:: Commands; composer ci:coverage:functional
|
.. index:: Commands; composer ci:coverage:functional
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
ddev composer ci:coverage:functional
|
composer ci:coverage:functional
|
||||||
|
|
||||||
Generates the code coverage report for functional tests.
|
Generates the code coverage report for functional tests.
|
||||||
|
|
||||||
.. index:: Commands; composer ci:coverage:merge
|
.. index:: Commands; composer ci:coverage:merge
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
ddev composer ci:coverage:merge
|
composer ci:coverage:merge
|
||||||
|
|
||||||
Merges the code coverage reports for unit and functional tests.
|
Merges the code coverage reports for unit and functional tests.
|
||||||
|
|
||||||
.. index:: Commands; composer ci:coverage:unit
|
.. index:: Commands; composer ci:coverage:unit
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
ddev composer ci:coverage:unit
|
composer ci:coverage:unit
|
||||||
|
|
||||||
Generates the code coverage report for unit tests.
|
Generates the code coverage report for unit tests.
|
||||||
|
|
||||||
.. index:: Commands; composer ci:dynamic
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
ddev composer ci:dynamic
|
|
||||||
|
|
||||||
Runs all PHPUnit tests (unit and functional).
|
|
||||||
|
|
||||||
.. index:: Commands; composer ci:tests
|
|
||||||
.. code-block:: bash
|
|
||||||
|
|
||||||
ddev composer ci:tests
|
|
||||||
|
|
||||||
Runs all PHPUnit tests (unit and functional).
|
|
||||||
|
|
||||||
.. index:: Commands; composer ci:tests:functional
|
.. index:: Commands; composer ci:tests:functional
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
ddev composer ci:tests:functional
|
composer ci:tests:functional
|
||||||
|
|
||||||
Runs the functional tests.
|
Runs the functional tests.
|
||||||
|
|
||||||
.. index:: Commands; composer ci:tests:unit
|
.. index:: Commands; composer ci:tests:unit
|
||||||
.. code-block:: bash
|
.. code-block:: bash
|
||||||
|
|
||||||
ddev composer ci:tests:unit
|
composer ci:tests:unit
|
||||||
|
|
||||||
Runs the unit tests.
|
Runs the unit tests.
|
||||||
|
|
||||||
|
|
|
@ -1,62 +0,0 @@
|
||||||
# More information about this file:
|
|
||||||
# https://docs.typo3.org/m/typo3/docs-how-to-document/main/en-us/GeneralConventions/FileStructure.html#settings-cfg
|
|
||||||
|
|
||||||
[general]
|
|
||||||
|
|
||||||
project = TYPO3 EXT:tea
|
|
||||||
version = 3.0
|
|
||||||
release = 3.0.0
|
|
||||||
copyright = since 2013 by the TYPO3 contributors
|
|
||||||
|
|
||||||
[html_theme_options]
|
|
||||||
|
|
||||||
# "Edit on GitHub" button
|
|
||||||
github_repository = TYPO3-Documentation/tea
|
|
||||||
github_branch = main
|
|
||||||
|
|
||||||
# Footer links
|
|
||||||
project_home = https://extensions.typo3.org/extension/tea
|
|
||||||
project_contact = mailto:typo3-coding@oliverklee.de
|
|
||||||
project_repository = https://github.com/FriendsOfTYPO3/tea
|
|
||||||
project_issues = https://github.com/FriendsOfTYPO3/tea/issues
|
|
||||||
project_discussions =
|
|
||||||
|
|
||||||
use_opensearch =
|
|
||||||
|
|
||||||
[intersphinx_mapping]
|
|
||||||
|
|
||||||
# Official TYPO3 manuals
|
|
||||||
h2document = https://docs.typo3.org/m/typo3/docs-how-to-document/main/en-us/
|
|
||||||
# t3cheatsheets = https://docs.typo3.org/m/typo3/docs-cheatsheets/main/en-us/
|
|
||||||
# t3contribute = https://docs.typo3.org/m/typo3/guide-contributionworkflow/main/en-us/
|
|
||||||
# t3coreapi = https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/
|
|
||||||
# t3docteam = https://docs.typo3.org/m/typo3/team-t3docteam/main/en-us/
|
|
||||||
# t3editors = https://docs.typo3.org/m/typo3/tutorial-editors/main/en-us/
|
|
||||||
# t3extbasebook = https://docs.typo3.org/m/typo3/book-extbasefluid/main/en-us/
|
|
||||||
# t3extexample = https://docs.typo3.org/m/typo3/guide-example-extension-manual/main/en-us/
|
|
||||||
# t3home = https://docs.typo3.org/
|
|
||||||
# t3install = https://docs.typo3.org/m/typo3/guide-installation/main/en-us/
|
|
||||||
# t3l10n = https://docs.typo3.org/m/typo3/guide-frontendlocalization/main/en-us/
|
|
||||||
# t3sitepackage = https://docs.typo3.org/m/typo3/tutorial-sitepackage/main/en-us/
|
|
||||||
# t3start = https://docs.typo3.org/m/typo3/tutorial-getting-started/main/en-us/
|
|
||||||
# t3tca = https://docs.typo3.org/m/typo3/reference-tca/main/en-us/
|
|
||||||
# t3templating = https://docs.typo3.org/m/typo3/tutorial-templating/main/en-us/
|
|
||||||
# t3translate = https://docs.typo3.org/m/typo3/guide-frontendlocalization/main/en-us/
|
|
||||||
# t3tsconfig = https://docs.typo3.org/m/typo3/reference-tsconfig/main/en-us/
|
|
||||||
# t3tsref = https://docs.typo3.org/m/typo3/reference-typoscript/main/en-us/
|
|
||||||
# t3ts45 = https://docs.typo3.org/m/typo3/tutorial-typoscript-in-45-minutes/main/en-us/
|
|
||||||
# t3viewhelper = https://docs.typo3.org/other/typo3/view-helper-reference/main/en-us/
|
|
||||||
# t3upgrade = https://docs.typo3.org/m/typo3/guide-installation/main/en-us/
|
|
||||||
|
|
||||||
# TYPO3 system extensions
|
|
||||||
# ext_adminpanel = https://docs.typo3.org/c/typo3/cms-adminpanel/main/en-us/
|
|
||||||
# ext_core = https://docs.typo3.org/c/typo3/cms-core/main/en-us/
|
|
||||||
# ext_dashboard = https://docs.typo3.org/c/typo3/cms-dashboard/main/en-us/
|
|
||||||
# ext_felogin = https://docs.typo3.org/c/typo3/cms-felogin/main/en-us/
|
|
||||||
# ext_form = https://docs.typo3.org/c/typo3/cms-form/main/en-us/
|
|
||||||
# ext_fsc = https://docs.typo3.org/c/typo3/cms-fluid-styled-content/main/en-us/
|
|
||||||
# ext_indexed_search = https://docs.typo3.org/c/typo3/cms-indexed-search/main/en-us/
|
|
||||||
# ext_rte_ckeditor = https://docs.typo3.org/c/typo3/cms-rte-ckeditor/main/en-us/
|
|
||||||
# ext_scheduler = https://docs.typo3.org/c/typo3/cms-scheduler/main/en-us/
|
|
||||||
# ext_seo = https://docs.typo3.org/c/typo3/cms-seo/main/en-us/
|
|
||||||
# ext_workspaces = https://docs.typo3.org/c/typo3/cms-workspaces/main/en-us/
|
|
|
@ -1,7 +0,0 @@
|
||||||
.. include:: /Includes.rst.txt
|
|
||||||
|
|
||||||
=====
|
|
||||||
Index
|
|
||||||
=====
|
|
||||||
|
|
||||||
.. Sphinx will insert here the general index automatically.
|
|
23
Documentation/guides.xml
Normal file
23
Documentation/guides.xml
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<guides
|
||||||
|
xmlns="https://www.phpdoc.org/guides" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="https://www.phpdoc.org/guides ../vendor/phpdocumentor/guides-cli/resources/schema/guides.xsd"
|
||||||
|
links-are-relative="true"
|
||||||
|
>
|
||||||
|
<extension
|
||||||
|
class="\T3Docs\Typo3DocsTheme\DependencyInjection\Typo3DocsThemeExtension"
|
||||||
|
project-home="https://extensions.typo3.org/extension/tea"
|
||||||
|
project-contact="mailto:typo3-coding@oliverklee.de"
|
||||||
|
project-repository="https://github.com/FriendsOfTYPO3/tea"
|
||||||
|
project-issues="https://github.com/FriendsOfTYPO3/tea/issues"
|
||||||
|
edit-on-github-branch="main"
|
||||||
|
edit-on-github="FriendsOfTYPO3/tea"
|
||||||
|
typo3-core-preferred="stable"
|
||||||
|
/>
|
||||||
|
<project
|
||||||
|
title="TYPO3 EXT:tea"
|
||||||
|
release="3.1.0"
|
||||||
|
version="3.1"
|
||||||
|
copyright="since 2013 by the TYPO3 contributors"
|
||||||
|
/>
|
||||||
|
</guides>
|
11
README.md
11
README.md
|
@ -21,6 +21,17 @@ You can also use this extension to manage your collection of delicious teas.
|
||||||
| **TER:** | https://extensions.typo3.org/extension/tea/ |
|
| **TER:** | https://extensions.typo3.org/extension/tea/ |
|
||||||
| **Slack:** | https://typo3.slack.com/channels/qa-best-practices |
|
| **Slack:** | https://typo3.slack.com/channels/qa-best-practices |
|
||||||
|
|
||||||
|
## Philosophies
|
||||||
|
|
||||||
|
The following is a list of our code and technical philosophies only.
|
||||||
|
https://typo3.org/community/teams/best-practices provides an overview on how we work in general.
|
||||||
|
|
||||||
|
### Align with TYPO3 core
|
||||||
|
|
||||||
|
We align all decisions with the TYPO3 core, whenever applicable.
|
||||||
|
TYPO3 itself is a mono repository and sometimes needs to make different decisions.
|
||||||
|
We document all divergences within Documentation/DivergencesToTypo3Core/.
|
||||||
|
|
||||||
## Presentation at the TYPO3 Online Days 2021
|
## Presentation at the TYPO3 Online Days 2021
|
||||||
|
|
||||||
At the TYPO3 Online Days 2021, [Oliver Klee](https://www.oliverklee.de/) held a
|
At the TYPO3 Online Days 2021, [Oliver Klee](https://www.oliverklee.de/) held a
|
||||||
|
|
|
@ -3,27 +3,27 @@
|
||||||
<file source-language="en" target-language="de" datatype="plaintext" original="messages">
|
<file source-language="en" target-language="de" datatype="plaintext" original="messages">
|
||||||
<header/>
|
<header/>
|
||||||
<body>
|
<body>
|
||||||
<trans-unit id="plugin.tea_index">
|
<trans-unit id="plugin.tea_index" resname="plugin.tea_index" approved="yes">
|
||||||
<source>Tea list</source>
|
<source>Tea list</source>
|
||||||
<target>Teeliste</target>
|
<target>Teeliste</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.tea_show">
|
<trans-unit id="plugin.tea_show" resname="plugin.tea_show" approved="yes">
|
||||||
<source>Tea single view</source>
|
<source>Tea single view</source>
|
||||||
<target>Tee-Einzelansicht</target>
|
<target>Tee-Einzelansicht</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.tea_frontend_editor">
|
<trans-unit id="plugin.tea_frontend_editor" resname="plugin.tea_frontend_editor" approved="yes">
|
||||||
<source>Tea front-end editor</source>
|
<source>Tea front-end editor</source>
|
||||||
<target>Frontend-Editor für Tee</target>
|
<target>Frontend-Editor für Tee</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.tea.heading">
|
<trans-unit id="plugin.tea.heading" resname="plugin.tea.heading" approved="yes">
|
||||||
<source>Our selection of assorted teas</source>
|
<source>Our selection of assorted teas</source>
|
||||||
<target>Unsere Auswahl an erlesenen Tees</target>
|
<target>Unsere Auswahl an erlesenen Tees</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.tea.property.uid">
|
<trans-unit id="plugin.tea.property.uid" resname="plugin.tea.property.uid" approved="yes">
|
||||||
<source>UID</source>
|
<source>UID</source>
|
||||||
<target>UID</target>
|
<target>UID</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.tea.property.title">
|
<trans-unit id="plugin.tea.property.title" resname="plugin.tea.property.title" approved="yes">
|
||||||
<source>Title</source>
|
<source>Title</source>
|
||||||
<target>Titel</target>
|
<target>Titel</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
@ -31,31 +31,31 @@
|
||||||
<source>Stars</source>
|
<source>Stars</source>
|
||||||
<target>Sterne</target>
|
<target>Sterne</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.index.heading">
|
<trans-unit id="plugin.frontEndEditor.index.heading" resname="plugin.frontEndEditor.index.heading" approved="yes">
|
||||||
<source>My teas</source>
|
<source>My teas</source>
|
||||||
<target>Meine Tees</target>
|
<target>Meine Tees</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.message.noTeas">
|
<trans-unit id="plugin.frontEndEditor.message.noTeas" resname="plugin.frontEndEditor.message.noTeas" approved="yes">
|
||||||
<source>You have not created any teas yet.</source>
|
<source>You have not created any teas yet.</source>
|
||||||
<target>Du hast noch keine Tees angelegt.</target>
|
<target>Du hast noch keine Tees angelegt.</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.property.uid">
|
<trans-unit id="plugin.frontEndEditor.property.uid" resname="plugin.frontEndEditor.property.uid" approved="yes">
|
||||||
<source>UID</source>
|
<source>UID</source>
|
||||||
<target>UID</target>
|
<target>UID</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.property.title">
|
<trans-unit id="plugin.frontEndEditor.property.title" resname="plugin.frontEndEditor.property.title" approved="yes">
|
||||||
<source>Title</source>
|
<source>Title</source>
|
||||||
<target>Titel</target>
|
<target>Titel</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.property.description">
|
<trans-unit id="plugin.frontEndEditor.property.description" resname="plugin.frontEndEditor.property.description" approved="yes">
|
||||||
<source>Description</source>
|
<source>Description</source>
|
||||||
<target>Beschreibung</target>
|
<target>Beschreibung</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.edit.heading">
|
<trans-unit id="plugin.frontEndEditor.edit.heading" resname="plugin.frontEndEditor.edit.heading" approved="yes">
|
||||||
<source>Edit tea</source>
|
<source>Edit tea</source>
|
||||||
<target>Tee bearbeiten</target>
|
<target>Tee bearbeiten</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.action.actions">
|
<trans-unit id="plugin.frontEndEditor.action.actions" resname="plugin.frontEndEditor.action.actions" approved="yes">
|
||||||
<source>Actions</source>
|
<source>Actions</source>
|
||||||
<target>Aktionen</target>
|
<target>Aktionen</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
@ -63,27 +63,27 @@
|
||||||
<source>Rating</source>
|
<source>Rating</source>
|
||||||
<target>Bewertung</target>
|
<target>Bewertung</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.action.edit">
|
<trans-unit id="plugin.frontEndEditor.action.edit" resname="plugin.frontEndEditor.action.edit" approved="yes">
|
||||||
<source>Edit</source>
|
<source>Edit</source>
|
||||||
<target>Bearbeiten</target>
|
<target>Bearbeiten</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.action.cancel">
|
<trans-unit id="plugin.frontEndEditor.action.cancel" resname="plugin.frontEndEditor.action.cancel" approved="yes">
|
||||||
<source>Cancel</source>
|
<source>Cancel</source>
|
||||||
<target>Abbrechen</target>
|
<target>Abbrechen</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.action.save">
|
<trans-unit id="plugin.frontEndEditor.action.save" resname="plugin.frontEndEditor.action.save" approved="yes">
|
||||||
<source>Save</source>
|
<source>Save</source>
|
||||||
<target>Speichern</target>
|
<target>Speichern</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.action.new">
|
<trans-unit id="plugin.frontEndEditor.action.new" resname="plugin.frontEndEditor.action.new" approved="yes">
|
||||||
<source>Create new tea</source>
|
<source>Create new tea</source>
|
||||||
<target>Neuen Tee anlegen</target>
|
<target>Neuen Tee anlegen</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.action.delete">
|
<trans-unit id="plugin.frontEndEditor.action.delete" resname="plugin.frontEndEditor.action.delete" approved="yes">
|
||||||
<source>Delete</source>
|
<source>Delete</source>
|
||||||
<target>Löschen</target>
|
<target>Löschen</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.new.heading">
|
<trans-unit id="plugin.frontEndEditor.new.heading" resname="plugin.frontEndEditor.new.heading" approved="yes">
|
||||||
<source>Create new tea</source>
|
<source>Create new tea</source>
|
||||||
<target>Neuen Tee anlegen</target>
|
<target>Neuen Tee anlegen</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
|
|
@ -3,35 +3,35 @@
|
||||||
<file source-language="en" target-language="de" datatype="plaintext" original="messages">
|
<file source-language="en" target-language="de" datatype="plaintext" original="messages">
|
||||||
<header/>
|
<header/>
|
||||||
<body>
|
<body>
|
||||||
<trans-unit id="tx_tea_domain_model_product_tea">
|
<trans-unit id="tx_tea_domain_model_tea" resname="tx_tea_domain_model_tea" approved="yes">
|
||||||
<source>Tea</source>
|
<source>Tea</source>
|
||||||
<target>Tee</target>
|
<target>Tee</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="tx_tea_domain_model_product_tea.tabs.access">
|
<trans-unit id="tx_tea_domain_model_tea.tabs.access" resname="tx_tea_domain_model_tea.tabs.access" approved="yes">
|
||||||
<source>Access</source>
|
<source>Access</source>
|
||||||
<target>Zugriff</target>
|
<target>Zugriff</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="tx_tea_domain_model_product_tea.title">
|
<trans-unit id="tx_tea_domain_model_tea.title" resname="tx_tea_domain_model_tea.title" approved="yes">
|
||||||
<source>Title</source>
|
<source>Title</source>
|
||||||
<target>Titel</target>
|
<target>Titel</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="tx_tea_domain_model_product_tea.description">
|
<trans-unit id="tx_tea_domain_model_tea.description" resname="tx_tea_domain_model_tea.description" approved="yes">
|
||||||
<source>Description</source>
|
<source>Description</source>
|
||||||
<target>Beschreibung</target>
|
<target>Beschreibung</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="tx_tea_domain_model_product_tea.image">
|
<trans-unit id="tx_tea_domain_model_tea.image" resname="tx_tea_domain_model_tea.image" approved="yes">
|
||||||
<source>Image</source>
|
<source>Image</source>
|
||||||
<target>Bild</target>
|
<target>Bild</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="tx_tea_domain_model_product_tea.owner">
|
<trans-unit id="tx_tea_domain_model_tea.owner" resname="tx_tea_domain_model_tea.owner" approved="yes">
|
||||||
<source>Website user who created this record</source>
|
<source>Website user who created this record</source>
|
||||||
<target>Website-Benutzer, der diesen Datensatz erstellt hat</target>
|
<target>Website-Benutzer, der diesen Datensatz erstellt hat</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="tx_tea_domain_model_product_tea.fe_group">
|
<trans-unit id="tx_tea_domain_model_tea.fe_group" resname="tx_tea_domain_model_tea.fe_group" approved="yes">
|
||||||
<source>Usergroup Access Rights</source>
|
<source>Usergroup Access Rights</source>
|
||||||
<target>Zugriffsrechte für Benutzergruppen</target>
|
<target>Zugriffsrechte für Benutzergruppen</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="tx_tea_domain_model_product_tea.hidden">
|
<trans-unit id="tx_tea_domain_model_tea.hidden" resname="tx_tea_domain_model_tea.hidden" approved="yes">
|
||||||
<source>Visible</source>
|
<source>Visible</source>
|
||||||
<target>Sichtbar</target>
|
<target>Sichtbar</target>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
|
|
|
@ -3,67 +3,67 @@
|
||||||
<file source-language="en" datatype="plaintext" original="messages">
|
<file source-language="en" datatype="plaintext" original="messages">
|
||||||
<header/>
|
<header/>
|
||||||
<body>
|
<body>
|
||||||
<trans-unit id="plugin.tea_index">
|
<trans-unit id="plugin.tea_index" resname="plugin.tea_index">
|
||||||
<source>Tea list</source>
|
<source>Tea list</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.tea_show">
|
<trans-unit id="plugin.tea_show" resname="plugin.tea_show">
|
||||||
<source>Tea single view</source>
|
<source>Tea single view</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.tea_frontend_editor">
|
<trans-unit id="plugin.tea_frontend_editor" resname="plugin.tea_frontend_editor">
|
||||||
<source>Tea front-end editor</source>
|
<source>Tea front-end editor</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.tea.heading">
|
<trans-unit id="plugin.tea.heading" resname="plugin.tea.heading">
|
||||||
<source>Our selection of assorted teas</source>
|
<source>Our selection of assorted teas</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.tea.property.uid">
|
<trans-unit id="plugin.tea.property.uid" resname="plugin.tea.property.uid">
|
||||||
<source>UID</source>
|
<source>UID</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.tea.property.title">
|
<trans-unit id="plugin.tea.property.title" resname="plugin.tea.property.title">
|
||||||
<source>Title</source>
|
<source>Title</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.property.description">
|
<trans-unit id="plugin.frontEndEditor.property.description" resname="plugin.frontEndEditor.property.description">
|
||||||
<source>Description</source>
|
<source>Description</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.index.heading">
|
<trans-unit id="plugin.frontEndEditor.index.heading" resname="plugin.frontEndEditor.index.heading">
|
||||||
<source>My teas</source>
|
<source>My teas</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.message.noTeas">
|
<trans-unit id="plugin.frontEndEditor.message.noTeas" resname="plugin.frontEndEditor.message.noTeas">
|
||||||
<source>You have not created any teas yet.</source>
|
<source>You have not created any teas yet.</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.property.uid">
|
<trans-unit id="plugin.frontEndEditor.property.uid" resname="plugin.frontEndEditor.property.uid">
|
||||||
<source>UID</source>
|
<source>UID</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.property.title">
|
<trans-unit id="plugin.frontEndEditor.property.title" resname="plugin.frontEndEditor.property.title">
|
||||||
<source>Title</source>
|
<source>Title</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.property.stars">
|
<trans-unit id="plugin.frontEndEditor.property.stars">
|
||||||
<source>Stars</source>
|
<source>Stars</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.edit.heading">
|
<trans-unit id="plugin.frontEndEditor.edit.heading" resname="plugin.frontEndEditor.edit.heading">
|
||||||
<source>Edit tea</source>
|
<source>Edit tea</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.action.actions">
|
<trans-unit id="plugin.frontEndEditor.action.actions" resname="plugin.frontEndEditor.action.actions">
|
||||||
<source>Actions</source>
|
<source>Actions</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.action.rating">
|
<trans-unit id="plugin.frontEndEditor.action.rating">
|
||||||
<source>Rating</source>
|
<source>Rating</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.action.edit">
|
<trans-unit id="plugin.frontEndEditor.action.edit" resname="plugin.frontEndEditor.action.edit">
|
||||||
<source>Edit</source>
|
<source>Edit</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.action.cancel">
|
<trans-unit id="plugin.frontEndEditor.action.cancel" resname="plugin.frontEndEditor.action.cancel">
|
||||||
<source>Cancel</source>
|
<source>Cancel</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.action.save">
|
<trans-unit id="plugin.frontEndEditor.action.save" resname="plugin.frontEndEditor.action.save">
|
||||||
<source>Save</source>
|
<source>Save</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.action.new">
|
<trans-unit id="plugin.frontEndEditor.action.new" resname="plugin.frontEndEditor.action.new">
|
||||||
<source>Create new tea</source>
|
<source>Create new tea</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.action.delete">
|
<trans-unit id="plugin.frontEndEditor.action.delete" resname="plugin.frontEndEditor.action.delete">
|
||||||
<source>Delete</source>
|
<source>Delete</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="plugin.frontEndEditor.new.heading">
|
<trans-unit id="plugin.frontEndEditor.new.heading" resname="plugin.frontEndEditor.new.heading">
|
||||||
<source>Create new tea</source>
|
<source>Create new tea</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -3,28 +3,28 @@
|
||||||
<file source-language="en" datatype="plaintext" original="messages">
|
<file source-language="en" datatype="plaintext" original="messages">
|
||||||
<header/>
|
<header/>
|
||||||
<body>
|
<body>
|
||||||
<trans-unit id="tx_tea_domain_model_product_tea">
|
<trans-unit id="tx_tea_domain_model_tea" resname="tx_tea_domain_model_tea">
|
||||||
<source>Tea</source>
|
<source>Tea</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="tx_tea_domain_model_product_tea.tabs.access">
|
<trans-unit id="tx_tea_domain_model_tea.tabs.access" resname="tx_tea_domain_model_tea.tabs.access">
|
||||||
<source>Access</source>
|
<source>Access</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="tx_tea_domain_model_product_tea.title">
|
<trans-unit id="tx_tea_domain_model_tea.title" resname="tx_tea_domain_model_tea.title">
|
||||||
<source>Title</source>
|
<source>Title</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="tx_tea_domain_model_product_tea.description">
|
<trans-unit id="tx_tea_domain_model_tea.description" resname="tx_tea_domain_model_tea.description">
|
||||||
<source>Description</source>
|
<source>Description</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="tx_tea_domain_model_product_tea.image">
|
<trans-unit id="tx_tea_domain_model_tea.image" resname="tx_tea_domain_model_tea.image">
|
||||||
<source>Image</source>
|
<source>Image</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="tx_tea_domain_model_product_tea.owner">
|
<trans-unit id="tx_tea_domain_model_tea.owner" resname="tx_tea_domain_model_tea.owner">
|
||||||
<source>Website user who created this record</source>
|
<source>Website user who created this record</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="tx_tea_domain_model_product_tea.fe_group">
|
<trans-unit id="tx_tea_domain_model_tea.fe_group" resname="tx_tea_domain_model_tea.fe_group">
|
||||||
<source>Usergroup Access Rights</source>
|
<source>Usergroup Access Rights</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="tx_tea_domain_model_product_tea.hidden">
|
<trans-unit id="tx_tea_domain_model_tea.hidden" resname="tx_tea_domain_model_tea.hidden">
|
||||||
<source>Visible</source>
|
<source>Visible</source>
|
||||||
</trans-unit>
|
</trans-unit>
|
||||||
<trans-unit id="tx_tea_domain_model_product_tea.stars">
|
<trans-unit id="tx_tea_domain_model_product_tea.stars">
|
||||||
|
|
84
Resources/Private/Language/pl.locallang.xlf
Normal file
84
Resources/Private/Language/pl.locallang.xlf
Normal file
|
@ -0,0 +1,84 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||||
|
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||||
|
<file source-language="en" target-language="pl" datatype="plaintext" original="messages">
|
||||||
|
<header/>
|
||||||
|
<body>
|
||||||
|
<trans-unit id="plugin.tea_index" resname="plugin.tea_index" approved="yes">
|
||||||
|
<source>Tea list</source>
|
||||||
|
<target>Lista herbat</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="plugin.tea_show" resname="plugin.tea_show" approved="yes">
|
||||||
|
<source>Tea single view</source>
|
||||||
|
<target>Widok pojedynczej herbaty</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="plugin.tea_frontend_editor" resname="plugin.tea_frontend_editor" approved="yes">
|
||||||
|
<source>Tea front-end editor</source>
|
||||||
|
<target>Front-endowy edytor dla herbat</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="plugin.tea.heading" resname="plugin.tea.heading" approved="yes">
|
||||||
|
<source>Our selection of assorted teas</source>
|
||||||
|
<target>Nasz wybór różnorodnych herbat</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="plugin.tea.property.uid" resname="plugin.tea.property.uid" approved="yes">
|
||||||
|
<source>UID</source>
|
||||||
|
<target>UID</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="plugin.tea.property.title" resname="plugin.tea.property.title" approved="yes">
|
||||||
|
<source>Title</source>
|
||||||
|
<target>Tytuł</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="plugin.frontEndEditor.index.heading" resname="plugin.frontEndEditor.index.heading" approved="yes">
|
||||||
|
<source>My teas</source>
|
||||||
|
<target>Moje herbaty</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="plugin.frontEndEditor.message.noTeas" resname="plugin.frontEndEditor.message.noTeas" approved="yes">
|
||||||
|
<source>You have not created any teas yet.</source>
|
||||||
|
<target>Nie utworzyłeś jeszcze żadnych herbat.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="plugin.frontEndEditor.property.uid" resname="plugin.frontEndEditor.property.uid" approved="yes">
|
||||||
|
<source>UID</source>
|
||||||
|
<target>UID</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="plugin.frontEndEditor.property.title" resname="plugin.frontEndEditor.property.title" approved="yes">
|
||||||
|
<source>Title</source>
|
||||||
|
<target>Tytuł</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="plugin.frontEndEditor.property.description" resname="plugin.frontEndEditor.property.description" approved="yes">
|
||||||
|
<source>Description</source>
|
||||||
|
<target>Opis</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="plugin.frontEndEditor.edit.heading" resname="plugin.frontEndEditor.edit.heading" approved="yes">
|
||||||
|
<source>Edit tea</source>
|
||||||
|
<target>Edytuj herbatę.</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="plugin.frontEndEditor.action.actions" resname="plugin.frontEndEditor.action.actions" approved="yes">
|
||||||
|
<source>Actions</source>
|
||||||
|
<target>Akcje</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="plugin.frontEndEditor.action.edit" resname="plugin.frontEndEditor.action.edit" approved="yes">
|
||||||
|
<source>Edit</source>
|
||||||
|
<target>Edytuj</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="plugin.frontEndEditor.action.cancel" resname="plugin.frontEndEditor.action.cancel" approved="yes">
|
||||||
|
<source>Cancel</source>
|
||||||
|
<target>Anuluj</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="plugin.frontEndEditor.action.save" resname="plugin.frontEndEditor.action.save" approved="yes">
|
||||||
|
<source>Save</source>
|
||||||
|
<target>Zapisz</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="plugin.frontEndEditor.action.new" resname="plugin.frontEndEditor.action.new" approved="yes">
|
||||||
|
<source>Create new tea</source>
|
||||||
|
<target>Utwórz nową herbatę</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="plugin.frontEndEditor.action.delete" resname="plugin.frontEndEditor.action.delete" approved="yes">
|
||||||
|
<source>Delete</source>
|
||||||
|
<target>Usuń</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="plugin.frontEndEditor.new.heading" resname="plugin.frontEndEditor.new.heading" approved="yes">
|
||||||
|
<source>Create new tea</source>
|
||||||
|
<target>Utwórz nową herbatę.</target>
|
||||||
|
</trans-unit>
|
||||||
|
</body>
|
||||||
|
</file>
|
||||||
|
</xliff>
|
36
Resources/Private/Language/pl.locallang_db.xlf
Normal file
36
Resources/Private/Language/pl.locallang_db.xlf
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||||
|
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
|
||||||
|
<file source-language="en" target-language="pl" datatype="plaintext" original="messages">
|
||||||
|
<header/>
|
||||||
|
<body>
|
||||||
|
<trans-unit id="tx_tea_domain_model_tea" resname="tx_tea_domain_model_tea" approved="yes">
|
||||||
|
<source>Tea</source>
|
||||||
|
<target>Herbata</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="tx_tea_domain_model_tea.tabs.access" resname="tx_tea_domain_model_tea.tabs.access" approved="yes">
|
||||||
|
<source>Access</source>
|
||||||
|
<target>Dostęp</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="tx_tea_domain_model_tea.title" resname="tx_tea_domain_model_tea.title" approved="yes">
|
||||||
|
<source>Title</source>
|
||||||
|
<target>Tytuł</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="tx_tea_domain_model_tea.description" resname="tx_tea_domain_model_tea.description" approved="yes">
|
||||||
|
<source>Description</source>
|
||||||
|
<target>Opis</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="tx_tea_domain_model_tea.image" resname="tx_tea_domain_model_tea.image" approved="yes">
|
||||||
|
<source>Image</source>
|
||||||
|
<target>Obraz</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="tx_tea_domain_model_tea.owner" resname="tx_tea_domain_model_tea.owner" approved="yes">
|
||||||
|
<source>Website user who created this record</source>
|
||||||
|
<target>Użytkownik strony, który utworzył ten rekord</target>
|
||||||
|
</trans-unit>
|
||||||
|
<trans-unit id="tx_tea_domain_model_tea.fe_group" resname="tx_tea_domain_model_tea.fe_group" approved="yes">
|
||||||
|
<source>Usergroup Access Rights</source>
|
||||||
|
<target>Prawa dostępu grupy użytkowników</target>
|
||||||
|
</trans-unit>
|
||||||
|
</body>
|
||||||
|
</file>
|
||||||
|
</xliff>
|
|
@ -0,0 +1,3 @@
|
||||||
|
"tt_content"
|
||||||
|
,"uid","pid","CType","header","list_type"
|
||||||
|
,1,1,"list","Teas Index","tea_teaindex"
|
Can't render this file because it has a wrong number of fields in line 2.
|
|
@ -0,0 +1,4 @@
|
||||||
|
"pages"
|
||||||
|
,"uid","pid","title","slug"
|
||||||
|
,1,0,"Rootpage","/"
|
||||||
|
,2,1,"Storage","/storage"
|
Can't render this file because it has a wrong number of fields in line 2.
|
4
Tests/Functional/Controller/Fixtures/Database/Teas.csv
Normal file
4
Tests/Functional/Controller/Fixtures/Database/Teas.csv
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
"tx_tea_domain_model_tea"
|
||||||
|
,"uid","pid","title"
|
||||||
|
,1,2,"Godesberger Burgtee"
|
||||||
|
,2,2,"Oolong"
|
Can't render this file because it has a wrong number of fields in line 2.
|
|
@ -0,0 +1,16 @@
|
||||||
|
base: '/'
|
||||||
|
languages:
|
||||||
|
-
|
||||||
|
title: English
|
||||||
|
enabled: true
|
||||||
|
languageId: '0'
|
||||||
|
base: /
|
||||||
|
typo3Language: default
|
||||||
|
locale: en_US.utf8
|
||||||
|
iso-639-1: en
|
||||||
|
navigationTitle: English
|
||||||
|
hreflang: en-us
|
||||||
|
direction: ltr
|
||||||
|
flag: us
|
||||||
|
websiteTitle: ''
|
||||||
|
rootPageId: 1
|
|
@ -0,0 +1,5 @@
|
||||||
|
plugin.tx_tea {
|
||||||
|
persistence {
|
||||||
|
storagePid = 2
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
page = PAGE
|
||||||
|
page {
|
||||||
|
10 < styles.content.get
|
||||||
|
}
|
58
Tests/Functional/Controller/TeaControllerTest.php
Normal file
58
Tests/Functional/Controller/TeaControllerTest.php
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace TTN\Tea\Tests\Functional\Controller;
|
||||||
|
|
||||||
|
use TYPO3\TestingFramework\Core\Functional\Framework\Frontend\InternalRequest;
|
||||||
|
use TYPO3\TestingFramework\Core\Functional\FunctionalTestCase;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @covers \TTN\Tea\Controller\TeaController
|
||||||
|
*/
|
||||||
|
final class TeaControllerTest extends FunctionalTestCase
|
||||||
|
{
|
||||||
|
protected array $testExtensionsToLoad = ['ttn/tea'];
|
||||||
|
|
||||||
|
protected array $coreExtensionsToLoad = ['typo3/cms-fluid-styled-content'];
|
||||||
|
|
||||||
|
protected array $pathsToLinkInTestInstance = [
|
||||||
|
'typo3conf/ext/tea/Tests/Functional/Controller/Fixtures/Sites/' => 'typo3conf/sites',
|
||||||
|
];
|
||||||
|
|
||||||
|
protected function setUp(): void
|
||||||
|
{
|
||||||
|
parent::setUp();
|
||||||
|
|
||||||
|
$this->importCSVDataSet(__DIR__ . '/Fixtures/Database/SiteStructure.csv');
|
||||||
|
$this->setUpFrontendRootPage(1, [
|
||||||
|
'constants' => [
|
||||||
|
'EXT:fluid_styled_content/Configuration/TypoScript/constants.typoscript',
|
||||||
|
'EXT:tea/Configuration/TypoScript/constants.typoscript',
|
||||||
|
'EXT:tea/Tests/Functional/Controller/Fixtures/TypoScript/Constants/PluginConfiguration.typoscript',
|
||||||
|
],
|
||||||
|
'setup' => [
|
||||||
|
'EXT:fluid_styled_content/Configuration/TypoScript/setup.typoscript',
|
||||||
|
'EXT:tea/Configuration/TypoScript/setup.typoscript',
|
||||||
|
'EXT:tea/Tests/Functional/Controller/Fixtures/TypoScript/Setup/Rendering.typoscript',
|
||||||
|
],
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*/
|
||||||
|
public function indexActionRendersAllAvailableTeas(): void
|
||||||
|
{
|
||||||
|
$this->importCSVDataSet(__DIR__ . '/Fixtures/Database/ContentElementTeaIndex.csv');
|
||||||
|
$this->importCSVDataSet(__DIR__ . '/Fixtures/Database/Teas.csv');
|
||||||
|
|
||||||
|
$request = new InternalRequest();
|
||||||
|
$request = $request->withPageId(1);
|
||||||
|
|
||||||
|
$html = (string)$this->executeFrontendSubRequest($request)->getBody();
|
||||||
|
|
||||||
|
self::assertStringContainsString('Godesberger Burgtee', $html);
|
||||||
|
self::assertStringContainsString('Oolong', $html);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,3 +1,3 @@
|
||||||
"tx_tea_domain_model_product_tea"
|
"tx_tea_domain_model_tea"
|
||||||
,"uid","title"
|
,"uid","title"
|
||||||
,1,"Godesberger Burgtee"
|
,1,"Godesberger Burgtee"
|
Can't render this file because it has a wrong number of fields in line 2.
|
|
@ -1,3 +0,0 @@
|
||||||
"tx_tea_domain_model_product_tea"
|
|
||||||
,"uid","pid","title"
|
|
||||||
,1,1,"Earl Grey"
|
|
Can't render this file because it has a wrong number of fields in line 2.
|
|
@ -1,3 +0,0 @@
|
||||||
"tx_tea_domain_model_product_tea"
|
|
||||||
,"uid","pid","title","description","owner"
|
|
||||||
,1,1,"Earl Grey","Fresh and hot.",2
|
|
Can't render this file because it has a wrong number of fields in line 2.
|
|
@ -1,7 +0,0 @@
|
||||||
"tx_tea_domain_model_product_tea"
|
|
||||||
,"uid","pid","title","image",
|
|
||||||
,1,1,"Gunpowder",1
|
|
||||||
|
|
||||||
"sys_file_reference"
|
|
||||||
,"uid","uid_foreign","tablenames","fieldname"
|
|
||||||
,1,1,"tx_tea_domain_model_product_tea","image"
|
|
Can't render this file because it contains an unexpected character in line 2 and column 2.
|
|
@ -1,3 +0,0 @@
|
||||||
"tx_tea_domain_model_product_tea"
|
|
||||||
,"uid","pid","title","owner"
|
|
||||||
,"1","1","Earl Grey",1
|
|
Can't render this file because it has a wrong number of fields in line 2.
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue