With #1289 the `nodejs` dependency management has
been changed from `yarn` to `npm` missing the one
or other important requirement.
This change streamlines the management by ...
* adding a `.nvmrc` file to the repository root to
allow automatic nodejs/npm switch if the nvm shell
switching is available on the host system.
* adding a `.npmrc` file to specify the lock file
version and engine option.
* adding `nodejs` and `npm` version constraints as
`engine` specification to the `package.json` file.
* remove `package-lock.json` from `.gitignore` and
add it to the repository to ensure reproducable
setups - which becomes more important if extension
get custom backend/frontend modules and javascript.
* adding `package-lock.json` to exclude it from archive,
due to remove from the `.gitignore` file.
* ensuring that new development files are excluded from
packaging and publishing.
* use `npm ci` in GitHub action workflows to install
from the lock-file.
Note: This change unblocks adding `npm` dispatching
to `Build/Scripts/runTests.sh`.
Resolves: #1301
Related: #1289
TYPO3 Core and related repositories like the `typo3/testing-framework`
or `typo3/styleguide` uses a bash script arround docker to execute all
scripts over different operating systems in a controlled and ensured
manner. This helps to reproduce locally failing jobs from a CI like
GitHub actions or GitLab.
TYPO3 core dropped recently the requirement for `docker-compose`,
reducing it to `docker` and preparing for dual usage with docker
and podman in the future.
This change integrates the current state as extension wrapper,
aligning contained suits with existing tools. Additionally, a
TYPO3 core version switch is integrated.
The added script is excluded from git archive building and
during releasing.
A list of possible options can be display with:
```shell
Build/Scripts/runTests.sh -h
```
Overview of integrated features:
* `-p` to select the PHP version (7.4 - 8.3)
* `-s` to select the suite to execute
* `-t` to select the TYPO3 core version, mainly
needed for the `composer` suits executions
* `-e` to provide additionally flags for phpunit
executions, e.g. for unit and functional tests
* `-x` to enable xdebug trigger - this helps with
debugging during unit or functional test
* `-d` to select the database backend to use, needed
for functional test execution to start the correct
database
* `-a` to select the used php driver for the `-d`
database backend, if multiple options are possible
* `-i` to specify the mariadb version
* `-j` to specify the mysql version
* `-k` to specify the postgres version
Available suits (`-s`):
- cgl: Checks the code style with the PHP Coding Standards Fixer
(PHP-CS-Fixer).
- cglFix: Fixes the code style with PHP-CS-Fixer."
- clean: clean up build, cache and testing related files and
folders
- cleanBuild: clean up build related files and folders
- cleanCache: clean up cache related files and folders
- cleanRenderedDocumentation: clean up rendered documentation
files and folders (Documentation-GENERATED-temp)
- cleanTests: clean up test related files and folders
- composer: "composer" with all remaining arguments dispatched.
- composerInstallMax: "composer update", with no platform.php config.
- composerInstallMin: "composer update --prefer-lowest", with
platform.php set to PHP version x.x.0.
- docsGenerate: Renders the extension ReST documentation.
- functional: PHP functional tests
- lintTypoScript: TypoScript linting
- lintPhp: PHP linting
- lintJson: JSON linting
- lintYaml: YAML linting
- phpstan: phpstan tests
- phpstanGenerateBaseline: regenerate phpstan baseline, handy after
phpstan updates
- unit (default): PHP unit tests
- unitRandom: PHP unit tests in random order, add -o <number> to use
specific seed
Notes:
* Not everything is available directly for now in the `runTests.sh`
and therefore not enabled in CI.
* Coverage related execution needs extended work and are therefore
left out for now.
* `composer.json` protection for core version changes not included
yet like the one or other advanced option.
* Intermediate cleanings for changing php versions and core versions
not included yet and will follow.
* typo3/testing-framework template files **must** be copied to the
extension or project and **must not** be used from the vendor
folder.
Resolves: #899
Releases: main
Case-insensitive filesystems cannot distinguish properly for
file and folder names with different casings. This leads to
unforseeable issues on these systems, like default partition
on MacOS devices from apple or eventually Windows systems.
This change configure phpcoverall and the chain explicitly to
use folders for the files which differs from the default of
`build/*` to avoid conflicts on case-insensitve filesystems
and prepare for introduction of the upcoming implementation
of TYPO3 core recommended `Build/` structure.
Co-authored-by: Stefan Bürk <stefan.buerk@impactmedia.de>
JetBrains created a new product named "Fleet" as
lightweight editor. This tool tends to write it's
config files to `.fleet/` folders, like all of the
IntellJ based IDE's like PHPStorm uses the `.idea`
folder.
This change adds this config folder to `.gitignore`
to avoid adding this folder to a patch if Fleet
is used to create a patch.
- Move npm tools and config to default places
- Remove now unnecessary config file parameter from npm scripts
- editorconfig and eslint config contradict, adapt editorconfig
- switch JS indent linting to TYPO3 coding standard of 2 spaces
- adapt composer scripts for new npm location