Files
Thomas Vincent f3ff777992 ci: install locked shared plugin test dependencies (#8345)
* ci: install locked shared plugin test dependencies

Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>

* docs: explain pinned tooling checkout for plugin CI

Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>

---------

Signed-off-by: Thomas Vincent <thomasvincent@gmail.com>
2026-10-14 00:01:08 -07:00
..

Plugin test dependencies

The shared setup-plugin-dependencies action installs the Cacti fixture's committed Composer lock without changing it. LTS fixtures use this separate locked Pest 3 harness. Fixtures targeting develop use the development tools in the core lock, so two PHPUnit dependency graphs are never loaded together. Both installs run as the runner user. Only downloaded Composer archives are cached; installed vendor trees are rebuilt from the locks.

Plugin callers pin the tooling checkout and Cacti fixture to full commit SHAs. Cacti source archives exclude .github and tests, so callers sparse-checkout those tooling paths into ci-tools and invoke the composite action locally. Do not use a remote uses: Cacti/cacti/.github/actions/...@SHA reference: the GitHub Action archive does not contain these paths. They keep their existing jobs, matrices, PHPUnit configuration, coverage thresholds, database/schema setup, localization checks and polling steps. Keeping those steps in the callers preserves check names and makes plugin differences visible. No plugin-local Composer manifest is needed for test tooling. Stream retains its separate runtime Composer manifest and lock.

The action exports CACTI_PEST_BIN; callers invoke "$CACTI_PEST_BIN" from the Cacti directory with their existing PHPUnit configuration. The action does not install PHP: callers use their existing pinned setup-php action and matrix. Callers must request the extensions required by both the plugin and the core fixture, including LDAP for the current LTS manifest.

Dependabot updates this harness independently. Regenerate the lock using Composer with the configured PHP 8.2 platform, then validate and test it:

composer update --working-dir=tests/tools/plugin-harness
composer validate --strict --working-dir=tests/tools/plugin-harness
composer install --working-dir=tests/tools/plugin-harness

Before advancing the fixture/action pins, run Syslog, Thold, FlowView and Stream against the supported PHP versions, including Linux polling/database checks. Existing failing assertions must be reported separately; do not lower coverage thresholds or suppress failures to migrate the harness.