ci: faire échouer la CI sur les codes d'import Godot non reconnus (#43) #44

Merged
Reliodas merged 1 commit from ci/43-import-strict-rc into develop 2026-06-20 11:25:31 +00:00
Owner

Closes #43

Le correctif #30 capturait bien le code retour de godot --headless --import, mais tout code non nul était ensuite toléré dès que .godot existait et qu'aucun motif textuel fatal ne matchait — alors que le commentaire affirmait l'inverse. Reproduit avec un code 42 : le snippet sortait en succès.

Changements

  • Décision isolée dans un script POSIX committé et auto-testé ci/check_godot_import.sh <exit_code> <log_file> <cache_dir> (sortie 0 = valide), avec trois règles ordonnées :
    1. un diagnostic fatal dans le log échoue même avec un code 0 (réutilise la liste de motifs de #30, sans sur-filtrage) ;
    2. cache attendu absent ⇒ échec (un cache présent ne masque jamais un échec) ;
    3. code 0 ⇒ succès ; tout code non nul ⇒ échec par défaut. Aucune exception bénigne n'est définie aujourd'hui (l'import réel sort avec 0) ; une éventuelle exception future ne serait tolérée qu'ici, via une signature précise et documentée, jamais sur la seule foi du code.
  • Test shell ci/check_godot_import_test.sh : code 0 + log propre + cache (succès), code 42 inconnu (échec), code 0 + log fatal (échec), cache absent (échec).
  • .woodpecker.yml : l'étape tests exécute d'abord ci/check_godot_import_test.sh, puis lance l'import en capturant code + log dans un fichier et délègue la validation à ci/check_godot_import.sh. Étape version-coherence, suite GUT complète et rapport JUnit conservés.

Critères d'acceptation

  • un code retour nul valide l'import si les autres contrôles sont satisfaits ;
  • un code non nul échoue par défaut ;
  • chaque éventuelle exception bénigne est reconnue par une signature précise, documentée et testable (aucune définie pour l'instant) ;
  • un cache .godot déjà présent ne suffit jamais à masquer un nouvel échec ;
  • les diagnostics fatals connus continuent à faire échouer même avec un code nul ;
  • un test shell couvre au moins code 0, code non nul inconnu et le cas bénin éventuel.

Tests

  • sh ci/check_godot_import_test.sh : 4 cas verts en local.
  • Import réel passé à travers le script : rc=0 ⇒ validé. Suite GUT complète verte (162 tests, 510 assertions), YAML revalidé.
  • Bout en bout attesté par le pipeline pull_request de cette MR.
Closes #43 Le correctif #30 capturait bien le code retour de `godot --headless --import`, mais **tout code non nul était ensuite toléré** dès que `.godot` existait et qu'aucun motif textuel fatal ne matchait — alors que le commentaire affirmait l'inverse. Reproduit avec un code 42 : le snippet sortait en succès. ## Changements - Décision isolée dans un script POSIX **committé et auto-testé** `ci/check_godot_import.sh <exit_code> <log_file> <cache_dir>` (sortie 0 = valide), avec trois règles ordonnées : 1. un **diagnostic fatal** dans le log échoue **même avec un code 0** (réutilise la liste de motifs de #30, sans sur-filtrage) ; 2. **cache attendu absent** ⇒ échec (un cache présent ne masque jamais un échec) ; 3. **code 0 ⇒ succès ; tout code non nul ⇒ échec par défaut.** Aucune exception bénigne n'est définie aujourd'hui (l'import réel sort avec 0) ; une éventuelle exception future ne serait tolérée qu'ici, via une **signature précise et documentée**, jamais sur la seule foi du code. - Test shell `ci/check_godot_import_test.sh` : code 0 + log propre + cache (succès), **code 42 inconnu** (échec), code 0 + log fatal (échec), cache absent (échec). - `.woodpecker.yml` : l'étape `tests` exécute d'abord `ci/check_godot_import_test.sh`, puis lance l'import en capturant code + log dans un fichier et délègue la validation à `ci/check_godot_import.sh`. Étape `version-coherence`, suite GUT complète et rapport JUnit conservés. ## Critères d'acceptation - [x] un code retour nul valide l'import si les autres contrôles sont satisfaits ; - [x] un code non nul échoue par défaut ; - [x] chaque éventuelle exception bénigne est reconnue par une signature précise, documentée et testable (aucune définie pour l'instant) ; - [x] un cache `.godot` déjà présent ne suffit jamais à masquer un nouvel échec ; - [x] les diagnostics fatals connus continuent à faire échouer même avec un code nul ; - [x] un test shell couvre au moins code 0, code non nul inconnu et le cas bénin éventuel. ## Tests - `sh ci/check_godot_import_test.sh` : 4 cas verts en local. - Import réel passé à travers le script : `rc=0` ⇒ validé. Suite GUT complète verte (**162 tests, 510 assertions**), YAML revalidé. - Bout en bout attesté par le pipeline `pull_request` de cette MR.
ci: faire échouer la CI sur les codes d'import Godot non reconnus (#43)
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/pr/woodpecker Pipeline was successful
ci/woodpecker/pull_request_closed/woodpecker Pipeline was successful
ef45e06ab0
Le correctif #30 tolérait tout code de sortie non nul de `godot --import` dès que
le cache .godot existait et qu'aucun motif fatal ne matchait, contredisant son
commentaire (code 42 -> faux succès). La décision est isolée dans un script POSIX
committé et auto-testé ci/check_godot_import.sh : diagnostic fatal -> échec même
avec code 0, cache absent -> échec, tout code non nul -> échec par défaut (aucune
exception bénigne ; une future exigerait une signature précise). Test shell
ci/check_godot_import_test.sh exécuté en CI avant l'import.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Reliodas merged commit a1a4b5619f into develop 2026-06-20 11:25:31 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: jeux/beaulieu-sur-brume#44
No description provided.