mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-07-18 17:11:28 +00:00
Previously, we were using codegen to support describing a fixed set of enums. Instead, we implement an enum() function, allowing any native PHP enum to be described. All enums used in runtime data have been migrated to native PHP 8.1 enums in minor-next to facilitate this. This implementation: - is faster (in extreme cases by 40x, such as with PotionType) - requires way less code - does not require a build step - is way more flexible This fixes #5877, increasing the range of stuff that plugins are now able to do. EnumTrait enums are not supported, as it's easier and cleaner to just support native enums. Most core EnumTrait enums have been migrated to native enums by now to facilitate this.
185 lines
4.7 KiB
YAML
185 lines
4.7 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
pull_request:
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
phpstan:
|
|
name: PHPStan analysis
|
|
runs-on: ${{ matrix.image }}
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
image: [ubuntu-20.04]
|
|
php: ["8.1", "8.2"]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Setup PHP
|
|
uses: pmmp/setup-php-action@2.0.0
|
|
with:
|
|
php-version: ${{ matrix.php }}
|
|
install-path: "./bin"
|
|
pm-version-major: "5"
|
|
|
|
- name: Restore Composer package cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.cache/composer/files
|
|
~/.cache/composer/vcs
|
|
key: "composer-v2-cache-${{ matrix.php }}-${{ hashFiles('./composer.lock') }}"
|
|
restore-keys: |
|
|
composer-v2-cache-
|
|
|
|
- name: Install Composer dependencies
|
|
run: composer install --prefer-dist --no-interaction
|
|
|
|
- name: Run PHPStan
|
|
run: ./vendor/bin/phpstan analyze --no-progress --memory-limit=2G
|
|
|
|
phpunit:
|
|
name: PHPUnit tests
|
|
runs-on: ${{ matrix.image }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
image: [ubuntu-20.04]
|
|
php: ["8.1", "8.2"]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Setup PHP
|
|
uses: pmmp/setup-php-action@2.0.0
|
|
with:
|
|
php-version: ${{ matrix.php }}
|
|
install-path: "./bin"
|
|
pm-version-major: "5"
|
|
|
|
- name: Restore Composer package cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.cache/composer/files
|
|
~/.cache/composer/vcs
|
|
key: "composer-v2-cache-${{ matrix.php }}-${{ hashFiles('./composer.lock') }}"
|
|
restore-keys: |
|
|
composer-v2-cache-
|
|
|
|
- name: Install Composer dependencies
|
|
run: composer install --prefer-dist --no-interaction
|
|
|
|
- name: Run PHPUnit tests
|
|
run: ./vendor/bin/phpunit --bootstrap vendor/autoload.php --fail-on-warning tests/phpunit
|
|
|
|
integration:
|
|
name: Integration tests
|
|
runs-on: ${{ matrix.image }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
image: [ubuntu-20.04]
|
|
php: ["8.1", "8.2"]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
submodules: true
|
|
|
|
- name: Setup PHP
|
|
uses: pmmp/setup-php-action@2.0.0
|
|
with:
|
|
php-version: ${{ matrix.php }}
|
|
install-path: "./bin"
|
|
pm-version-major: "5"
|
|
|
|
- name: Restore Composer package cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.cache/composer/files
|
|
~/.cache/composer/vcs
|
|
key: "composer-v2-cache-${{ matrix.php }}-${{ hashFiles('./composer.lock') }}"
|
|
restore-keys: |
|
|
composer-v2-cache-
|
|
|
|
- name: Install Composer dependencies
|
|
run: composer install --no-dev --prefer-dist --no-interaction
|
|
|
|
- name: Run integration tests
|
|
run: ./tests/travis.sh -t4
|
|
|
|
codegen:
|
|
name: Generated Code consistency checks
|
|
runs-on: ${{ matrix.image }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
image: [ubuntu-20.04]
|
|
php: ["8.1", "8.2"]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Setup PHP
|
|
uses: pmmp/setup-php-action@2.0.0
|
|
with:
|
|
php-version: ${{ matrix.php }}
|
|
install-path: "./bin"
|
|
pm-version-major: "5"
|
|
|
|
- name: Restore Composer package cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.cache/composer/files
|
|
~/.cache/composer/vcs
|
|
key: "composer-v2-cache-${{ matrix.php }}-${{ hashFiles('./composer.lock') }}"
|
|
restore-keys: |
|
|
composer-v2-cache-
|
|
|
|
- name: Install Composer dependencies
|
|
run: composer install --no-dev --prefer-dist --no-interaction
|
|
|
|
- name: Regenerate registry annotations
|
|
run: php build/generate-registry-annotations.php src
|
|
|
|
- name: Regenerate KnownTranslation APIs
|
|
run: php build/generate-known-translation-apis.php
|
|
|
|
- name: Regenerate BedrockData available files constants
|
|
run: php build/generate-bedrockdata-path-consts.php
|
|
|
|
- name: Regenerate YmlServerProperties constants
|
|
run: php build/generate-pocketmine-yml-property-consts.php
|
|
|
|
- name: Verify code is unchanged
|
|
run: |
|
|
git diff
|
|
git diff --quiet
|
|
|
|
codestyle:
|
|
name: Code Style checks
|
|
runs-on: ubuntu-20.04
|
|
strategy:
|
|
fail-fast: false
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Setup PHP and tools
|
|
uses: shivammathur/setup-php@2.25.5
|
|
with:
|
|
php-version: 8.1
|
|
tools: php-cs-fixer:3.17
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
- name: Run PHP-CS-Fixer
|
|
run: php-cs-fixer fix --dry-run --diff --ansi
|