Přeskočit na obsah

Tato stránka byla automaticky přeložena z angličtiny, jediného jazyka, ve kterém se tento web píše. Číst originál.

I1110 — Druhý běh nic nemění a test to dokazuje

Učinit sladění idempotentním: jeho spuštění proti vyhovujícímu repozitáři nevytvoří žádnou změnu a dokázat to testem, nikoli pozorováním.

BLOKOVÁNO vlna 5 · p0 · profil implementation · bezpečné paralelně

Součást two-folder-integration — Repozitář, který přijme Majordomus, získá dva adresáře a dva řádky a může je vrátit.

Blokováno. Tento úkol nemůže začít, dokud není I1109 hotovo. Stav je z toho odvozen, ne deklarován.

Cíl

Učinit sladění idempotentním: jeho spuštění proti vyhovujícímu repozitáři nevytvoří žádnou změnu a dokázat to testem, nikoli pozorováním.

Proč

Idempotence odděluje reconciler od skriptu, který se náhodou spustí dvakrát. Je to také nejlevnější možný regresní test celého stroje požadovaného stavu: pokud druhý běh něco udělá, první udělal něco, co nedokázal popsat.

Aktuální stav

Inicializace není idempotentní a nic neměří, zda je.

Cílový stav

Druhé sladění hlásí nula změn, pracovní strom je bajtově identický a test selže ve chvíli, kdy to přestane platit.

Rozsah

  • test/cases

Mimo rozsah

  • Dosažení klidu tím, že druhý běh přeskočí práci, kterou měl udělat
  • Ignorování rozdílu, protože je jen ve vygenerovaném souboru

Závislosti

Co na tom čeká

Kritéria přijetí

  • Dvojí smíření vyhovujícího repozitáře zanechá strom bajtově shodný, včetně každého generovaného artefaktu
  • Druhý běh hlásí žádnou změnu, místo aby hlásil změny, které pak neprovede
  • Test pokrývá repozitář, který už byl adoptován, repozitář adoptovaný starší verzí a repozitář, kde člověk upravil bridge
  • Záměrná divergence způsobí selhání testu, čímž se dokáže, že selhat umí

Validace

  • bash test/run.sh
  • majordomus init --dry-run

Požadované důkazy

  • second_run_empty
  • negative_test

Důkazy

Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.

Riziko

Snadný způsob, jak tento test splnit, je zařídit, aby druhý běh z principu nedělal nic. Test musí rozlišit reconciler, který nenašel nic k práci, od toho, který se nepodíval.

Časová osa

zahájeno
—
ověřeno
—
dokončeno
—

Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.

Kanonický záznam: .ai/repo/project/issues/I1110.yaml. Přečtěte jej zpět přes majordomus plan show I1110.

Prohledává názvy a popisy všech stránek, které tento web publikuje.