Co to znamená
project.english-only říká, že každý artefakt tohoto repozitáře je napsán anglicky: dokumenty, kód, komentáře, zprávy commitů, samotná pravidla. To mělo větší význam, než se zdá. Na tomto repozitáři se pracuje v jazyce, který není angličtina; několik lidí a agentů, kteří se ho dotýkají, v tom jazyce myslí; a odstavec v něm napsaný čte jeho autor jako zcela v pořádku a všichni ostatní jako šum. Revize zachytí dokument. Nezachytí větu.
Princip
Rozpoznání jazyka z prózy je výzkumný problém a kontrola, která by hádala, by byla kontrolou, které nikdo nevěří. Rozhodnutelná je abeceda. Hrstka písmen nese diakritiku, která se vyskytuje v češtině, slovenštině a polštině a nikdy v angličtině — č ď ě ň ř š ť ů ž, ą ć ę ł ń ś ź ż — a celá písma jsou na první pohled jednoznačná: cyrilice, řečtina, rozsahy CJK. Soubor, který obsahuje některé z nich, není anglicky, ať je o něm pravda cokoli jiného.
Toto je částečná kontrola a říká to. Anglická próza s českou větou přepsanou do ASCII jí projde a vždy projde. Pravidlo zůstává širší než kontrola, což je poctivý vztah mezi nimi; kontrola zajišťuje, že běžný případ — ten, který se tu skutečně stal — nemůže projít bez povšimnutí.
Typografická interpunkce je povolena podle rozsahu: próza tohoto repozitáře používá em pomlčku, zakřivený apostrof a výpustku a ty se k testu nikdy nedostanou. Povoleny jsou dvě další věci a obě se deklarují s důvodem v scripts/ci/english-only-allow.txt, místo aby se oslabil test:
name <word>— vlastní jméno, jehož pravopis je jeho vlastní. Odstraňuje se všude, kde se objeví, takže řádek angličtiny, který některé pojmenovává, je angličtina.fixture <path> <why>— soubor, který používá neanglický řetězec jako data, aby dokázal, že s ním program zachází. Doctest tvrdící, že lokální část identifikátoru jsou neprůhledné bajty, musí obsahovat neprůhledné bajty; to je test, který dělá svou práci. Důvod je povinný a položka fixtury bez něj způsobí, že kontrola odmítne běžet, místo aby tiše prošla.
Ani jedno nevyjímá větu. Komentář psaný v jiném jazyce uvnitř vyjmutého souboru je stále porušením pravidla; výjimka pro fixture říká, že tento test abecedy nedokáže v tom souboru rozlišit text od dat — omezení uvedené, ne skryté.
Jak to vidět
scripts/ci/english-only-check report, and fail on new debt
scripts/ci/english-only-check --strict fail on any finding, baseline ignored
Kontrola english-only ji spouští v každém plánu CI. Přistála s prázdnou baseline.
Co nepokrývá
Věta v jiném jazyce zapsaná v ASCII. „Toto je veta bez diakritiky“ projde a vždy projde. Kontrola rozhoduje o abecedě, ne o jazyku, a pravidlo je záměrně širší než kontrola — říct to otevřeně je lepší než kontrola, která naznačuje záruku, kterou nemůže dát.
Také nečte generované stromy, záznamy relací ani lokální vrstvu checkoutu. Projekce nesoucí cizí slovo ho nese ze svého zdroje a zdroj je místo, kam nález patří; záznam relace cituje, co bylo řečeno, a co bylo řečeno, není vždy anglicky.
Proč existuje
Protože to zachytávala jen revize a revize zachytí dokument, ne větu. Na tomto repozitáři se pracuje v jazyce, který není angličtina, lidmi a agenty, kteří v něm myslí, a odstavec napsaný v tomto jazyce se tomu, kdo jej psal, čte naprosto v pořádku a všem ostatním jako šum.
Co to dokazuje
Samotná kontrola, spouštěná proti tomuto repozitáři v CI při každé změně, a test/cases/138_governance_gates.sh, který ji dokazuje mutací, ne tvrzením, že existuje: české písmeno v autorském souboru je jmenováno se souborem a řádkem, stejně tak celé jiné písmo, deklarované vlastní jméno je odstraněno, deklarovaný fixture je vyňat jen s důvodem a generované stromy jsou mimo rozsah, protože projekce nesoucí cizí slovo je nese ze svého zdroje.
Kontrola tiskne vlastního jmenovatele — kolik souborů změřila a kolik fixtur je deklarováno — místo toho, aby tento počet byl napsán tady. Číslo v próze je číslo, které zastará, a toto zastaralo: rozšíření selektoru na shebang skripty jej pohnulo týž odpoledne, kdy bylo poprvé zapsáno.