исправлены находки ревью проектной стороны
- манифест читается так, как записан: решётка внутри строки не открывает комментарий, скобка внутри комментария не закрывает массив, имя внутри комментария не становится подпиской; новый ключ встаёт после массива, а не внутрь него - всё записываемое проходит через manifest.Quote — обратный слэш в пути делал файл, который инструмент сам не читает - маркер локальной части переехал в doc и пропускает огороженные блоки: процитированный в примере маркер больше не считается границей, а копия без маркера не перезаписывается молча - лишний позиционный аргумент отсекается: flag прекращал разбор и прятал флаги после себя, из-за чего pull, list и check игнорировали --for - заведены тесты проверок копий, включая молчание на исправной копии
This commit is contained in:
@@ -68,7 +68,14 @@ internal/cli команды, диалог, два режима
|
||||
заголовка до следующего заголовка любого уровня. Метка открывает блок только
|
||||
первой в абзаце и полужирным. Огороженные блоки кода исключаются везде;
|
||||
инлайн-код вырезается там, где ищутся ссылки, и не вырезается там, где ищутся
|
||||
пути канона.
|
||||
пути канона. Маркер локальной части — то же самое: `doc.LocalMarker` один на
|
||||
весь инструмент, `doc.Marker()` пропускает огороженные блоки, потому что
|
||||
конвенция о ведении копий этот маркер цитирует.
|
||||
- **Манифест читается так, как он записан.** Решётка внутри строки не открывает
|
||||
комментарий, скобка внутри комментария не закрывает массив, имя внутри
|
||||
комментария не подписка. Регуляркой по сырым строкам это не берётся —
|
||||
`splitComment` и `scanCode` в `internal/manifest`. Превращение комментария в
|
||||
данные — единственная ошибка, из которой нет дороги назад.
|
||||
- **Уровень называется ссылкой, а не путём.** Проект ссылается на набор, набор
|
||||
на язык; `source.Ref` разбирает ссылку, `source.Open` отдаёт директорию,
|
||||
которую можно читать. Транспортов два, но `Kind` — перечисление, а не булево:
|
||||
@@ -114,7 +121,16 @@ internal/cli команды, диалог, два режима
|
||||
- **Целостность набора проверяется локально.** Когда `[language] source`
|
||||
заполнен, `suite check` не тянет описание языка и пропускает проверки
|
||||
документов о языке (META-30 в том числе), проверяя вместо этого саму ссылку.
|
||||
Проверка гоняется на каждой правке и в сеть ходить не должна.
|
||||
Проверка гоняется на каждой правке и в сеть ходить не должна. Пропуск
|
||||
объявляется строкой в выводе: молча не выполненная проверка читается ровно
|
||||
как пройденная.
|
||||
- **Всё, что попадает в манифест, проходит через `manifest.Quote`.** Обратный
|
||||
слэш в пути — обычный случай, на котором инструмент перестаёт читать файл,
|
||||
который сам записал.
|
||||
- **Позиционный аргумент отсекается явно.** `flag` прекращает разбор на первом
|
||||
не-флаге, поэтому лишний аргумент не просто лежит без дела — он прячет все
|
||||
флаги после себя. `noStrayArgs` в командах без позиционных, ручное снятие
|
||||
темы с головы в `convy add`.
|
||||
|
||||
## Проверки
|
||||
|
||||
@@ -128,7 +144,8 @@ internal/cli команды, диалог, два режима
|
||||
Новая проверка заводится вместе с двумя тестами: что она срабатывает и что она
|
||||
**молчит** там, где не должна. Второй важнее: проверка, краснеющая на исправном
|
||||
файле, выключается целиком. Ложные срабатывания собраны в
|
||||
`TestNoFalsePositives`.
|
||||
`TestNoFalsePositives` для набора и в `TestCopiesAreSilentOnASoundCopy` для
|
||||
копий.
|
||||
|
||||
Перед тем как заводить проверку, стоит прогнать её замысел по живому канону
|
||||
(`dev-conventions`): если она покраснеет на исправном наборе, замысел неверен.
|
||||
@@ -152,6 +169,12 @@ internal/cli команды, диалог, два режима
|
||||
- `convy add` пишет подписку после сборки — если сборка прошла, а запись в
|
||||
манифест упала, копия останется неучтённой. Обратный порядок хуже: подписка
|
||||
без файла отправляет следующий `pull` искать то, чего не делали.
|
||||
- Директории компонентов сверяются на равенство, а не на вложенность. Компонент
|
||||
в `docs` и компонент в `docs/sub` манифест пропустит; `convy check` от
|
||||
двойных находок защищён отдельно (`distinct`).
|
||||
- `lang.Recognize` при отсутствии словаря с совпавшим номером версии отдаёт
|
||||
первого кандидата, у которого совпали слова. Пока версия в реестре одна, это
|
||||
безвредно; со второй версией того же естественного языка станет неверно.
|
||||
|
||||
## Тесты
|
||||
|
||||
|
||||
Reference in New Issue
Block a user