Erster Stand des Repositories AG_QGIS/Projektwissen (bisher Arbeitstitel "Workspace", ADR 0006). Der lokale Ordner heisst weiter AG_QGIS, weil darin auch die Plugin-Klone liegen. Git verbindlich (ADR 0007), aus dem bisherigen Wiki-Konzept entwickelt: - docs/leitfaden/05_git_arbeitsweise.md mit Kanal-Kette, Branch-Namen und Gitea-Branch-Schutz. - Der Einstiegspunkt eines Fixes richtet sich nach dem Kanal, in dem der Fehler sitzt; ein Fix an testing oder stable ist erst mit der Rueckfuehrung nach unten abgeschlossen. Das fehlte bisher. - Der stabile Kanal heisst stable, nicht main: der Release-Workflow in Repository:hidden/workflows fuehrt git checkout "$CHANNEL" aus, der Branchname muss also dem Kanalnamen entsprechen. Er existiert in keinem Plugin-Repo und ist vom Maintainer anzulegen. - Der Mensch drueckt ab: .claude/settings.json sperrt push, merge, tag. - scripts/hallo.py und /hallo holen den Stand aller Klone, per Fast-Forward wo gefahrlos; nie mergen, stashen oder verwerfen. Ticketzugriff: - scripts/gitea.py liest Issues, Kommentare und PRs ueber die oeffentliche API, ohne Token, nur GET. Schreibendes nur als Entwurf in entwuerfe/. - Skill sn-ticket. Tests (ADR 0009): - docs/leitfaden/06_tests.md: Testebenen, Testpflicht, und wie eine Fachperson beurteilt, ob Tests fachlich sinnvoll sind. - scripts/testkatalog.py erzeugt docs/tests/testkatalog.md per ast-Parsing, ohne Import und ohne QGIS. Befund: nur 100 von 332 Tests haben einen Docstring, sn_basis keinen einzigen von 87. - Vorlage und erste Testkonzept-Seite mit Mermaid. Dabei gefunden und gegen origin geprueft: _ermittle_gebietstyp_aus_fbschl hat keinen Test, obwohl PR #44/#45 genau diese Funktion tolerant gemacht hat. - docs/konzept/07_qgis_tests_plan.md: Stufenplan fuer Tests gegen echtes QGIS. Dabei aufgefallen: QGIS 3.40 ist seit Januar 2026 End of Life, qgis_min steht aber noch darauf. Werkzeuge (ADR 0008): - 04_werkzeuge_einrichten.md nur noch Claude Code als CLI und in VS Code. - .vscode/ entfernt, brauchbare Einstellungen als persoenliche Vorlage. Ausserdem: README als Einstieg neu aufgebaut, Mermaid-Diagramm in schnittstellen.md repariert (unmaskierte Klammern, rendert seither nicht). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
52 lines
1.9 KiB
YAML
52 lines
1.9 KiB
YAML
# Vorlage für .gitea/workflows/tests.yaml in Plugin_SN_Basis, Plugin_SN_Plan41, Plugin_SN_Verfahrensgebiet.
|
|
# Führt die Mock-Modus-Tests bei Push/PR auf unstable und testing aus.
|
|
# Voraussetzung: Gitea-Runner mit Label alpine-latest (wie beim Release-Workflow), Projektwissen-Repo öffentlich lesbar.
|
|
# Der Lauf klont das Projektwissen und die abhängigen Plugin-Repos (unstable) und testet den aktuellen Checkout dieses Repos.
|
|
|
|
name: Tests (Mock-Modus)
|
|
run-name: "Tests | ${{ github.ref_name }}"
|
|
|
|
on:
|
|
push:
|
|
branches: [unstable, testing]
|
|
pull_request:
|
|
branches: [unstable, testing]
|
|
|
|
jobs:
|
|
mock-tests:
|
|
runs-on: alpine-latest
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
steps:
|
|
- name: Abhängigkeiten installieren
|
|
shell: sh
|
|
run: apk add --no-cache bash git python3 py3-openpyxl
|
|
|
|
- name: Workspace und Repos holen
|
|
env:
|
|
GITEA: ${{ vars.RELEASE_URL }} # z. B. entwicklung.flurneuordnung-sachsen.de
|
|
run: |
|
|
git clone --depth 1 "https://${GITEA}/AG_QGIS/Projektwissen.git" ws
|
|
cd ws
|
|
for r in Plugin_SN_Basis Plugin_SN_Plan41 Plugin_SN_Verfahrensgebiet; do
|
|
git clone --depth 1 --branch unstable "https://${GITEA}/AG_QGIS/$r.git" "$r"
|
|
done
|
|
# Dieses Repo im geprüften Stand einsetzen
|
|
NAME="${GITHUB_REPOSITORY##*/}"
|
|
rm -rf "$NAME"
|
|
git clone "https://${GITEA}/${GITHUB_REPOSITORY}.git" "$NAME"
|
|
cd "$NAME" && git checkout "${GITHUB_SHA}" && cd ..
|
|
|
|
- name: Tests mit Baseline
|
|
run: |
|
|
cd ws
|
|
NAME="${GITHUB_REPOSITORY##*/}"
|
|
PAKET=$(python3 - "$NAME" <<'PY'
|
|
import sys, tomllib
|
|
m = tomllib.load(open("workspace.toml", "rb"))
|
|
print(next(r["paket"] for r in m["repos"] if r["name"] == sys.argv[1]))
|
|
PY
|
|
)
|
|
python3 scripts/run_tests.py "$PAKET" --baseline
|