закрыты известные остатки

- документ самоуправления объявляется ключом governance, а не угадывается
  по «он один и без ключей оси»: конвенция, потерявшая topic, была от него
  неотличима и тихо теряла все проверки об отъезде к потребителю
- проверка путей канона больше не ловит README.md и READING.md — эти два
  имени значат что-то и на стороне потребителя
- lang.Recognize требует совпадения и слов, и номера версии; директории
  компонентов сверяются на вложенность, а не только на равенство
- у обеих проверок появился --json, а convy sync называет ссылки на темы,
  которых компонент не взял
This commit is contained in:
av
2026-07-28 10:16:27 +03:00
parent 29d29740f5
commit 600aba5ee3
16 changed files with 413 additions and 70 deletions
+23
View File
@@ -1,6 +1,7 @@
package lang_test
import (
"strings"
"testing"
"git.vakhrushev.me/av/convy/internal/lang"
@@ -100,3 +101,25 @@ func TestRecognizeReadsTheLanguageOffTheVersionLine(t *testing.T) {
t.Errorf("prose naming no words passed for a version line")
}
}
// Words say which natural language, the number says which version. One without
// the other names no vocabulary: two versions of the same language would be
// told apart by nothing at all.
func TestRecognizeNeedsTheVersionToAgree(t *testing.T) {
ru, err := lang.Lookup(1, "ru")
if err != nil {
t.Fatal(err)
}
line := ru.VersionLine()
if _, ok := lang.Recognize(line); !ok {
t.Fatalf("the line the tool itself writes was not recognized")
}
wrong := strings.Replace(line, "версии 1", "версии 7", 1)
if wrong == line {
t.Fatal("the fixture did not change the version")
}
if v, ok := lang.Recognize(wrong); ok {
t.Errorf("a line naming version 7 was read as version %d (%s)", v.Version, v.Code)
}
}