diff --git a/.gitea/workflows/tests.yml b/.gitea/workflows/tests.yml index 959b91c..22dd19a 100644 --- a/.gitea/workflows/tests.yml +++ b/.gitea/workflows/tests.yml @@ -108,6 +108,10 @@ jobs: # żadna trasa poza dwiema funkcjami. - name: Testy (pytest) working-directory: services/astrodemo + env: + PYTHONPATH: . + run: pytest tests -q -rs + astroklient-tests: name: Testy astroklient runs-on: ubuntu-latest @@ -125,7 +129,6 @@ jobs: # bo tylko on trafia do obrazu. - name: Testy (pytest) working-directory: services/astroklient - env: PYTHONPATH: . run: pytest tests -q -rs @@ -258,3 +261,33 @@ jobs: # silnika swisseph, który nie wchodzi do produktu). - name: py_compile run: python -m compileall -q services + + # Krok bez `run` i bez `uses` jest dla Gitei krokiem PUSTYM: zadanie mija + # go i kończy się powodzeniem, nie uruchomiwszy niczego. Tak właśnie + # zniknęły na jeden commit testy astrodemo — blok został rozcięty przy + # dopisywaniu sąsiedniego, a jego `run` przywędrował do cudzego zadania, + # które przez to przechodziło z niewłaściwego powodu. + # + # Zielone CI, które nic nie uruchomiło, jest gorsze od czerwonego. + - name: Kontrola kroków w workflow + run: | + python - <<'KONTROLA' + import pathlib, sys, yaml + grzechy = [] + for f in sorted(pathlib.Path(".gitea/workflows").glob("*.y*ml")): + d = yaml.safe_load(f.read_text(encoding="utf-8")) or {} + for nazwa, job in (d.get("jobs") or {}).items(): + kroki = job.get("steps") or [] + if not kroki: + grzechy.append(f"{f.name}: zadanie '{nazwa}' nie ma kroków") + for k in kroki: + if "run" not in k and "uses" not in k: + grzechy.append( + f"{f.name}: '{nazwa}' → krok " + f"'{k.get('name','(bez nazwy)')}' nie ma ani run, ani uses") + if grzechy: + print("PUSTE KROKI — zadanie przeszłoby nic nie robiąc:") + print("\n".join(" " + g for g in grzechy)) + sys.exit(1) + print("Wszystkie kroki mają co uruchomić.") + KONTROLA