Repository navigation
v0.6.0 Continuous Integration
⚠️ Documentation of Golem v0.6.0. The latest release is v0.7.0: this page in v0.7.0 · what changed · other versions
# .github/workflows/tests.yml
name: Tests
on: [push, pull_request]
jobs:
golem:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: achedon12/golem@v0That is the whole setup: the runner's PHP runs the CLI, and PocketMine plus its PHP build are cached between runs. When a test fails, the job fails and the failure is annotated on the pull request diff, at the line of the test.
| Input | Default | Description |
|---|---|---|
path |
. |
Plugin folder, for repositories holding several plugins |
tests |
from composer.json, else tests
|
Tests folder, relative to the plugin |
pocketmine |
from composer.json, else latest |
PocketMine-MP version |
filter |
Only run matching tests | |
junit |
golem-junit.xml |
JUnit report path, empty to skip it |
parallel |
1 |
Number of servers to split the tests between (see --parallel) |
jobs:
golem:
runs-on: ubuntu-latest
strategy:
matrix:
pocketmine: ['5.40.0', '5.44.3']
steps:
- uses: actions/checkout@v7
- uses: achedon12/golem@v0
with:
pocketmine: ${{ matrix.pocketmine }}jobs:
golem:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
pocketmine: ['5.44.3', 'Plutonium-Mcpe/PocketMine-MP']
steps:
- uses: actions/checkout@v7
- uses: achedon12/golem@v0
with:
pocketmine: ${{ matrix.pocketmine }} - uses: shivammathur/setup-php@v2
with:
php-version: '8.4'
- run: composer install
- run: vendor/bin/golem --compare=Plutonium-Mcpe/PocketMine-MPThe differences land in the job summary, and the job fails when a passing test breaks on the fork.
- uses: achedon12/golem@v0
- uses: actions/upload-artifact@v6
if: always()
with:
name: golem-report
path: golem-junit.xmlAny Linux machine with PHP 8.1+ can run Golem:
composer install
vendor/bin/golem --log-junit=build/golem-junit.xmlCache ~/.cache/golem between runs to skip the downloads (or point GOLEM_CACHE_DIR at a cached
folder). GitLab CI, for example:
golem:
image: php:8.3-cli
variables:
GOLEM_CACHE_DIR: "$CI_PROJECT_DIR/.golem-cache"
cache:
paths: [.golem-cache/]
script:
- apt-get update && apt-get install -y git unzip
- curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
- composer install
- vendor/bin/golem --log-junit=golem-junit.xml
artifacts:
when: always
reports:
junit: golem-junit.xml--teamcity replaces the usual output with
TeamCity service messages:
TeamCity, and other tools that read them, show each test class as a suite, each test with its
duration, and failures with their expected and actual values.
vendor/bin/golem --teamcity##teamcity[testCount count='4']
##teamcity[testSuiteStarted name='LobbyHudTest' locationHint='php_qn:///…/tests/LobbyHudTest.php::\Example\HelloWorld\Tests\LobbyHudTest']
##teamcity[testStarted name='testCountsPlayersOnline' locationHint='php_qn:///…/tests/LobbyHudTest.php::\Example\HelloWorld\Tests\LobbyHudTest::testCountsPlayersOnline']
##teamcity[testFailed name='testCountsPlayersOnline' message='The scoreboard of Steve does not show "Online: 3"' type='comparisonFailure' expected='"Online: 3"' actual='…']
##teamcity[testFinished name='testCountsPlayersOnline' duration='1452']