Skip to content

fix(codex): assemble plugin package at repo-root plugins/litestar/ #37

fix(codex): assemble plugin package at repo-root plugins/litestar/

fix(codex): assemble plugin package at repo-root plugins/litestar/ #37

Workflow file for this run

name: Test
on:
push:
branches: [main]
pull_request:
concurrency:
group: test-${{ github.ref }}
cancel-in-progress: true
jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
python: ["3.10", "3.11", "3.12", "3.13"]
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v4
- name: Setup uv
uses: astral-sh/setup-uv@v3
with:
enable-cache: true
- name: Setup Python
run: uv python install ${{ matrix.python }}
- name: Setup Bun
uses: oven-sh/setup-bun@v2
- name: Install dependencies
run: |
uv sync --extra dev
bun install
- name: Install PSScriptAnalyzer (Windows only)
if: runner.os == 'Windows'
shell: pwsh
run: Install-Module -Name PSScriptAnalyzer -Force -Scope CurrentUser
- name: Lint PowerShell scripts (Windows only)
if: runner.os == 'Windows'
shell: pwsh
run: |
$results = Invoke-ScriptAnalyzer -Path tools/install.ps1 -Settings tools/PSScriptAnalyzerSettings.psd1
if ($results) {
$results | Format-Table -AutoSize
throw "PSScriptAnalyzer found $($results.Count) issue(s)"
}
- name: Verify install.ps1 dry-run (Windows only)
if: runner.os == 'Windows'
shell: pwsh
run: pwsh -File tools/install.ps1 -DryRun
- name: Run tests
run: make test
# Pragmatic smoke test: the upstream Claude Code / Gemini CLI container
# images are not yet stable enough to run a full plugin-load step. For now
# we exercise install.sh --dry-run (catches host-detection and path-layout
# bugs), parse the host-specific manifest JSON (catches schema drift), and
# re-run validate-skills (catches frontmatter drift). Full container-based
# plugin-load tests can be added later when upstream images ship.
smoke-test:
name: Smoke test (${{ matrix.host }})
runs-on: ubuntu-latest
needs: test
strategy:
fail-fast: false
matrix:
host: [claude-code, gemini-cli]
include:
- host: claude-code
install_name: claude
- host: gemini-cli
install_name: gemini
env:
HOST: ${{ matrix.host }}
INSTALL_NAME: ${{ matrix.install_name }}
steps:
- uses: actions/checkout@v4
- name: Setup uv
uses: astral-sh/setup-uv@v3
with:
enable-cache: true
- name: Setup Python
run: uv python install 3.12
- name: Setup Bun
uses: oven-sh/setup-bun@v2
- name: Install dependencies
run: uv sync --extra dev
- name: Install plugin (dry run)
run: bash tools/install.sh --dry-run --only "$INSTALL_NAME"
- name: Verify plugin manifest parses
run: |
case "$HOST" in
claude-code)
uv run python -c "import json; json.load(open('.claude-plugin/plugin.json'))"
uv run python -c "import json; json.load(open('.claude-plugin/marketplace.json'))"
;;
gemini-cli)
uv run python -c "import json; json.load(open('gemini-extension.json'))"
;;
esac
- name: Validate shipped skills / commands / agents
run: uv run python tools/validate-skills.py