PHPStan (level 6 + symfony extension) and PHP CS Fixer (Symfony + PHP83Migration ruleset) configs at framework/php/. composer.json exposes phpstan / cs:check / cs:fix / phpunit / quality scripts. PHPStan-clean across the bundle; cs:check is happy after auto-fix applied @Symfony idioms (yoda, leading-backslash JSON_*, blank-line before return). Test mocks consolidated into a HubSpy helper to keep PHPStan happy about by-ref captures. Skeleton's Makefile target `quality` chains `composer quality` (in framework/php/) with cmake's all_qmllint target. Local run is green — 11 tests / 32 assertions, no PHPStan errors, cs-fixer clean, qmllint emits advisory warnings only. Layout fix in skeleton's Main.qml: status-dot Rectangles inside RowLayout now use Layout.preferredWidth/Height instead of width/height to satisfy Quick.layout-positioning checks. .gitea/workflows/ci.yml replaces the placeholder with a real `quality` job: setup-php, composer install (cached), the four PHP checks, Qt 6 via install-qt-action (cached), QML module build, qmllint via the all_qmllint CMake target. Workflow exists from this commit onward even if a runner isn't provisioned yet. bridge:doctor lost the Publisher dependency since it was only used as a "service is wired" marker — the command being injectable already proves that. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -10,11 +10,60 @@ jobs:
|
||||
quality:
|
||||
name: Quality
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Quality (placeholder)
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: '8.3'
|
||||
extensions: curl, json, mbstring
|
||||
tools: composer:v2
|
||||
coverage: none
|
||||
|
||||
- name: Cache Composer
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.cache/composer
|
||||
key: composer-${{ hashFiles('framework/php/composer.json') }}
|
||||
|
||||
- name: Install bundle dependencies
|
||||
working-directory: framework/php
|
||||
run: composer install --no-interaction --prefer-dist
|
||||
|
||||
- name: PHPStan
|
||||
working-directory: framework/php
|
||||
run: composer phpstan
|
||||
|
||||
- name: php-cs-fixer (check)
|
||||
working-directory: framework/php
|
||||
run: composer cs:check
|
||||
|
||||
- name: PHPUnit
|
||||
working-directory: framework/php
|
||||
run: composer phpunit
|
||||
|
||||
- name: Setup Qt 6
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
version: '6.5.*'
|
||||
modules: 'qtquickcontrols2'
|
||||
cache: true
|
||||
|
||||
- name: Cache CMake build
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: framework/skeleton/build
|
||||
key: cmake-${{ runner.os }}-${{ hashFiles('framework/qml/**', 'framework/skeleton/qml/**') }}
|
||||
|
||||
- name: Build QML module + skeleton
|
||||
working-directory: framework/skeleton
|
||||
run: |
|
||||
echo "quality job — populated in Phase 1 sub-commit 7"
|
||||
echo "will run: PHPStan, php-cs-fixer (check), PHPUnit, qmllint"
|
||||
cmake -S qml -B build/qml
|
||||
cmake --build build/qml --parallel
|
||||
|
||||
- name: qmllint
|
||||
working-directory: framework/skeleton
|
||||
run: cmake --build build/qml --target all_qmllint
|
||||
|
||||
Reference in New Issue
Block a user