Freezeyt sraz sedmý

Review pull requestů

Začali jsme tím, že jsme se koukli na pull requesty (PR), které přistály na GitHubu.

První z nich aktualizoval dokumentační řetězce (docstringy). Druhý řešil Issue #31. Jelikož používáme metodu Test Driven Developementu (TDD), znamenalo to zajistit, aby prošel příslušný test. Díky tady tomuto PR freezeyt spadne v případě, že v dané webové aplikaci bude „pokažený“ odkaz, např. e-mail link bez mailto:

Komentář k tomuto PR říkal, že by bylo dobré, kdyby chybová hláška byla více informativní. K tomu se dostaneme později v projektu.

Poznámka ke GitHubu: chceme-li zajistit, aby se dané Issue zavřelo automaticky, je potřeba použít jedno z těchto klíčových slov.

Třetí PR přidává adresář na blog, ale jelikož je blog stále „a Work in progress“, tak jsme PR (zatím) do projektu nezačlenili.

Poznámka ke GitHubu: chceme-li se podívat na obrázky, které byly přidány přímo na GitHubu bez toho, aniž bychom si k sobě stahovali danou větev, můžeme použít tlačítko Display the rich diff vpravo v rohu u daného souboru v sekci Files changed na GitHubu.

Tlačítko pro zobrazení obrázků na GitHubu

Úprava odchytávání chybných odkazů

Následně jsme zkontrolovali Issues a poté jsme se pustili do práce na samotném kódu. Začleněný PR na odchytávání špatných odkazů obsahoval i tuto podmínku:

if "200" in status:
    ...

V řetězci, který obsahuje status code, se "200" teoreticky může vyskytovat kdekoliv, takže pro jistotu jsme tuto podmínku upravili, protože dle standardu je status code vždy na začátku. Podmínku jsme upravili tak, že zjišťuje, zda status začíná kódem 200.

if not status.startswith("200"):
    ...

Úprava slovníku environ

Když už jsme se věnovali těm standardům, tak jsme se pustili na úpravu environ aby bylo podle WSGI standardu, tedy dle PEP 3333. Prošli jsme všechny proměnné, které environ může obsahovat a vybrali vše, co potřebujeme.

Momentálně to není celá implementace protokolu WSGI a proto se k ní někdy v budoucnu vrátíme. Bylo na to založeno Issue.

Odbočka ke standardním výstupům

V průběhu toho jsme si udělali odbočku ke standardním vstupům, výstupům a souborům, kam se ukládají chybové hlášky. Ve zkratce:

Jiná host adresa

Momentálně freezeyt nefunguje (tak, jak bychom chtěli), když je jiná host adresa než localhost:8000.

Jelikož používáme TDD, začali jsme napsáním testů. Upravili jsme funkce freezeyt.freezing.freeze a freezeyt.freezing.url_to_filename. Rozšířili jsme nápovědu. A zajistit, aby to fungovalo je úkol do příště.

Odbočka k doménám

Pro pokusné a testovací účely jsou rezervovány jisté domény, například doména test a localhost.

Reorganizace testů

Ke konci jsme se dostali k tomu, že většina první stránky repozitáře jsou testy a testovací aplikace.

Testy (momentálně) fungují tak, že zkopírujeme předchozí test a něco tam upravíme (něco upravit zapomeneme). Testovací metoda Gold Master Testing by mohla náš problém elegantně vyřešit. Ve zkratce: máme uložený vstup a správný/chtěný výstup - testovací aplikace projde vstupy, spustí je a ověří, že výsledky jsou stejné. Víme, že jakmile aplikaci zmrazíme, tak zmražení bude vždy stejné, takže testy nebudeme muset upravovat.

V adresáři fixtures jsou data, která budou testy potřebovat, tzn. testovací aplikace V adresáři test_expected_output budou adresáře s očekávanými výstupy programu.

Pro testy potřebujeme funkci, která vezme obsah dvou adresářů a porovná jejich obsah. Tu si buď můžeme napsat vlastní, nebo pro to můžeme použít třídu filecmp.dircmp standardní knihovny.

V reorganizaci testů budeme pokračovat příště.

Odbočka k __name__ a __file__

Záznam ze srazu zde. Více informací o projektu zde.