Moje fixtury se mnou souhlasily
Importéry měly dobrou sadu testů. Každý zdroj měl fixtury, fixtury se rozebraly, výsledky se ověřily a všechno procházelo.
Pak jsem importéry pustil přes tři archivy, které jsem nevytvořil já: export z Ghostu se 118 příspěvky a 419 obrázky, strom Huga se 77 soubory a WordPress WXR se 194 položkami. Vedle nich čtvrtý, který je celý můj – vlastní export tohoto enginu, načtený rovnou zpět – protože ten se neptá, jestli kód přežije cizího člověka, ale jestli se obě půlky cesty tam a zpět pořád shodují.
Ty tři cizí ale byly pointa. Fixtury s kódem souhlasily, protože oba jejich konce jsou moje.
Obrázek, který nikdo nestáhl neúspěšně
{{< figure >}} je způsob, jakým Hugo zapisuje obrázek, a odstraňovač Liquidu ho snědl jako značku Liquidu. Oba, které v tom archivu byly, mířily na soubory ležící hned vedle článku v jeho svazku stránky: nic ke stažení, nic, co by mohlo selhat, a byly pryč bez řádku v souhrnu – protože je nikdo nezkusil stáhnout, a tak nikdo neselhal.
To je tvar každého nálezu v tomhle průchodu. Ne pády. Ticho.
Slib, který platil pro tři procenta
Obrázky pocházejí ze stromu samotného – žádná síť. Platí to pro web na Jekyllu a jako obecný slib o markdownových stromech se to opakovalo na čtyřech místech: v dokumentaci, ve srovnávací tabulce v README, v hlavičce importéru a v komentáři nad adaptérem.
Ze 79 odkazů na obrázky v tom skutečném archivu Huga jich 72 byly absolutní adresy mířící zpět na WordPress, ze kterého byl web před lety přestěhován. Import udělal 72 požadavků, 66 odpovědělo 404 a 20 ze 74 příspěvků dorazilo úplně bez obrázků.
Souhrn to všechno poctivě hlásil. Dokumentace čtenáři řekla, že není co hlásit, takže nebyl důvod ho číst. Všechna čtyři místa teď říkají, která polovina potřebuje síť, uvádějí číslo z toho archivu a radí importovat, dokud starý hostitel ještě odpovídá.
Pětina webu s adresami v nadpisech
[](url) je to, co po sobě nechá převod z WordPressu do Markdownu tam, kde bývala kotva nadpisu. Parser vyžadoval aspoň jeden znak popisku, takže nenašel nic a vytiskl čtenáři syrový markdown: 153 bloků nadpisů ve 14 z těch 74 příspěvků, hranaté závorky a celá adresa v nadpisu, pět z nich přivařených na konec skutečných slov. Obsah odkazoval na kotvy pojmenované po github.com.
A pár dalších
Video nahrané do Ghostu se ztratilo a na jeho místě se zveřejnily tři řádky jeho přehrávače. Procentově escapované jméno souboru se slugifikovalo znak po znaku a razilo trvalé adresy začínající ef-bf-bc. Článek, který ukazoval markdown uvnitř bloku kódu, přišel o svůj příklad – a honba za tím odhalila něco horšího pod tím: odstavec končící obrázkem se vrátil o jeden nový řádek kratší, takže se plot pod ním přilepil k textu a každý plot odtud dolů se četl naruby, kód jako próza a próza jako kód. Na tom archivu to 30 z jeho 72 obrázků udělalo všemu pod sebou.
To, co převodník HTML musí zahodit – přehrávače, iframy, formuláře – počítal přesně jeden z jedenácti adaptérů, které ho používají, a ostatních deset to zahodilo, takže import z WordPressu své ztráty pojmenoval a import z Jekyllu nad týmž tělem řekl „Hotovo".
Poučení je levné a já se ho pořád učím znovu
Fixtura, kterou jsem napsal, kóduje to, čemu jsem věřil, když jsem ji psal. Archiv cizího člověka kóduje to, co se s jeho blogem skutečně dělo patnáct let, na platformách, které se pod ním měnily, exportovaný nástrojem, který měl svůj vlastní špatný den.
Jen jeden z těch dvou mi umí říci, že se mýlím.

Komentáře