Skip to content

Merge pull request #612 from athola/research-1.9.16 #4

Merge pull request #612 from athola/research-1.9.16

Merge pull request #612 from athola/research-1.9.16 #4

name: Ecosystem Tests (root tests/ suite)
# Runs the root `tests/` suite on every PR.
#
# Why this workflow exists. `make test` shells out to run-plugin-tests.sh, which
# iterates `plugins/*/` and runs one pytest process per plugin. It never sees
# the root `tests/` directory. Neither did any other workflow. The suite that
# checks the things no single plugin can check (that every skill across every
# plugin states a trigger and a boundary; that plugin packages still import when
# pytest runs from the repo root) was therefore in no gate at all, and 75 of its
# assertions failed for months with nothing to report it.
#
# The suite is cross-cutting by nature: a skill added to any plugin is a new
# parametrized case here. That is why the path filter is broad across plugins/
# rather than scoped to a language or directory.
on:
push:
branches: [main, master]
paths:
- "plugins/**/SKILL.md"
- "plugins/**/commands/**"
- "plugins/**/agents/**"
- "plugins/abstract/scripts/validate_budget.py"
- "tests/**"
- "conftest.py"
- "pyproject.toml"
- "Makefile"
- ".github/workflows/ecosystem-tests.yml"
pull_request:
paths:
- "plugins/**/SKILL.md"
- "plugins/**/commands/**"
- "plugins/**/agents/**"
- "plugins/abstract/scripts/validate_budget.py"
- "tests/**"
- "conftest.py"
- "pyproject.toml"
- "Makefile"
- ".github/workflows/ecosystem-tests.yml"
workflow_dispatch:
concurrency:
group: ecosystem-tests-${{ github.ref }}
cancel-in-progress: true
jobs:
ecosystem-tests:
name: root tests/ suite
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.12"
- name: Install uv
uses: astral-sh/setup-uv@v8.3.2
- name: Run root ecosystem suite
run: make test-ecosystem