safe-code-change

Après un changement de code, trouver les tests affectés, les mettre à jour pour correspondre au nouveau comportement, puis guider l'utilisateur pour exécuter la validation. Utiliser lorsque l'utilisateur a effectué ou demandé une…

npx skills add https://github.com/openshift/lightspeed-operator --skill safe-code-change

Safe Code Change

After a code change is made, find and fix affected tests before running validation.

Rules

  • The code change is already done. Do not modify production code.
  • Only update tests to match the new behavior, not the other way around.
  • Do not reformat or lint-fix during test updates. Save that for validation.
  • If a test change is ambiguous (unclear what the new expected behavior is), ask the user.

Step 1: Identify What Changed

git diff --name-only
git diff --stat

List the modified production files (ignore test files, configs, docs).

Step 2: Find Affected Tests

Search for imports and uses of changed functions/types across all test files:

# Find test files that import the changed package
rg "github.com/openshift/lightspeed-operator/<changed_package>" --type go -g '*_test.go'

# Find direct function/type references
rg "<ChangedFunctionOrType>" --type go -g '*_test.go'

For controller changes, also check:

  • internal/controller/suite_test.go (shared test setup)
  • test/e2e/ (E2E tests)

Step 3: Analyze Impact on Tests

For each affected test file, check whether the change breaks existing tests:

  1. Signature changes — function renamed, parameters added/removed/reordered.
  2. Behavior changes — return value, error messages, side effects differ.
  3. Removed code — tests for deleted functions/types need removal.
  4. New code — consider whether new tests are needed (ask user if unclear).
  5. Interface changes — mock implementations need updating.

Step 4: Update Tests

Apply minimal fixes to each affected test:

For Ginkgo Tests (most controller tests):

  • Update Expect() assertions to match new return values
  • Update mock return values in test fixtures
  • Add/remove parameters in function calls
  • Update error message checks
  • Adjust Eventually() timeouts if reconciliation logic changed

For Standard Go Tests (utils, helpers):

  • Update table-driven test cases with new expected values
  • Update mock implementations
  • Add/remove parameters in function calls
  • Update error assertions

Common Fixes:

  • Error constant renamed: Update all Expect(err).To(MatchError(ContainSubstring(oldName)))newName
  • Function signature changed: Update all call sites in tests
  • Resource structure changed: Update test fixtures and expected values
  • Owner reference logic changed: Update assertions that check OwnerReferences

Step 5: Verify Test File Syntax

Before telling the user tests are ready, verify Go syntax:

go fmt <modified_test_file>

If formatting changes the file significantly, there may be syntax errors.

Step 6: Report

List all test files updated and what was changed in each:

  1. File name
  2. What was updated (function calls, expectations, mocks, fixtures)
  3. Number of changes

Then guide the user to run validation:

Tests are updated. Run validation with:
  make test          # Run all unit tests
  make test-e2e      # Run E2E tests (requires cluster)
  make lint          # Check code style

If tests fail, review the specific failures and adjust expectations.

Do not run make test automatically — let the user control when tests run.

Plus de skills de openshift

openshift-expert
openshift
Expert de la plateforme OpenShift et de Kubernetes avec une connaissance approfondie de l'architecture des clusters, des opérateurs, du réseau, du stockage, du dépannage et des pipelines CI/CD. Utilisez…
official
find-token
openshift
Trouvez le jeton de vérification caché. Exécutez le script find-token pour récupérer un jeton unique.
official
code-review
openshift
Examiner une demande de tirage pour la qualité du code, l'exactitude et les conventions du projet. Utiliser lorsque l'utilisateur demande de réviser une PR, une revue de code, ou d'examiner des modifications sur une…
official
css-review
openshift
Examiner le CSS pour le style de codage, l'utilisation des tokens PatternFly et les bonnes pratiques. Utiliser lorsque l'utilisateur demande de réviser du CSS, vérifier des styles ou auditer des fichiers CSS.
official
review-readmes
openshift
Examiner tous les fichiers README.md du dépôt pour détecter les fautes de frappe, erreurs et informations obsolètes. Utiliser lorsque l'utilisateur demande de vérifier les README, de contrôler l'exactitude de la documentation, ou…
official
review-skills
openshift
Examiner les compétences IA du projet pour détecter les doublons, les références obsolètes, les erreurs et les problèmes structurels. Utiliser lorsque l'utilisateur demande de réviser les compétences, d'auditer les compétences, de vérifier…
official
test
openshift
Exécute des tests de bout en bout filtrés par balise. À utiliser lorsque l'utilisateur demande d'exécuter des tests, de lancer Playwright, ou de tester une balise de fonctionnalité spécifique comme @core ou @attach.
official
unused-exports
openshift
Trouve les symboles exportés qui ne sont jamais importés par un autre fichier. À utiliser lorsque l'utilisateur dit "vérifier les exports", "exports inutilisés" ou demande de nettoyer les exports.
official