Documentation
¶
Overview ¶
Package platformtree даёт ПРОБЕ третий исход вместо красного там, где дерева платформы рядом с модулем нет.
───────────────────────────────────────────────────────────────────────────── ЧТО ЗДЕСЬ И ЧЕГО ЗДЕСЬ НЕТ
Здесь — только превращение исхода резолва в `t.Skipf` либо `t.Fatalf`. Сам резолв (лежит ли модуль в дереве платформы, как привести координату к посадке, от какого корня брать состав) живёт в `internal/treeposture` и НЕ ЗНАЕТ про `testing`.
Разрез не косметический. Тот же вопрос задают приборы модуля — отпечаток сетки замера, писатель отчётов, — и они прод-код: пакет с `testing` в импорте они звать не вправе, иначе испытательная оснастка уезжает в поставляемый двоичный. Пока резолв жил здесь, приборы складывали координату литералом и в самостоятельном клоне читали несуществующий подкаталог.
───────────────────────────────────────────────────────────────────────────── ПОЧЕМУ ПРОПУСК ЗДЕСЬ НЕ МАСКА
Пропуск, который проба назначает себе сама, был бы ровно тем механизмом, который корпус запрещает: его нельзя отличить от «проба сломалась, и её заглушили». Здесь пропуск назначает НЕ проба, а ПРЕДПОСЫЛКА — свойство дерева, проверяемое на месте:
дерево платформы ЕСТЬ → Require возвращает корень, проба идёт целиком; дерева платформы НЕТ → пропуск с НАЗВАННОЙ причиной и координатой.
Отсюда несущее свойство: **в монорепо пропуск невозможен**. Не «его там не бывает», а невозможен — детектор отвечает «есть», и ветвь пропуска не достижима ни для одной пробы. Держит это гейт-сосед (`platformtree_gate_test.go`), а не обещание.
Пометка ИСТЕКАЕТ САМА в обратную сторону: приедет каталог контрактов в поставку модуля — детектор в клоне ответит «есть», и помеченные пробы начнут исполняться там, где раньше пропускались.
───────────────────────────────────────────────────────────────────────────── ЧТО БРАТЬ — ТРИ ВХОДА, И ОНИ О РАЗНОМ
Require — пробе нужно ДЕРЕВО ПЛАТФОРМЫ целиком (манифесты соседних
модулей, каталог контрактов, зонтичный чарт). В клоне —
пропуск: этого в поставку не входит by construction;
RequirePath — пробе нужен ОДИН файл, записанный координатой от корня
платформы. Лежит внутри модуля — резолвится в обеих посадках;
лежит вне — пропуск;
RequireCorpus — проба ОБХОДИТ состав и судит его целиком. Возвращает корень
обхода и приставку модуля в нём (пустую в клоне). Пропуска
НЕТ: предмет таких проб — собственная композиция модуля, и она
в поставку входит.
Index ¶
- Variables
- func CorpusRoot(start string) (root, prefix string, err error)
- func ModuleDirIn(root, moduleRoot string) (string, error)
- func ModuleDirInPlatform() string
- func ModuleRootFrom(start string) (string, error)
- func PathOf(start, rel string) (string, error)
- func PathUnder(root, rel string) (string, error)
- func PrefixUnder(root string) string
- func Require(t *testing.T) string
- func RequireCorpus(t *testing.T) (root, prefix string)
- func RequirePath(t *testing.T, rel string) string
- func RootFrom(start string) (string, error)
- func Under(prefix, rel string) string
Constants ¶
This section is empty.
Variables ¶
var ( ErrNoPlatformTree = treeposture.ErrNoPlatformTree ErrModuleRootUnknown = treeposture.ErrModuleRootUnknown )
Признаки резолва — те же, что у него: два места об одном предмете разошлись бы молча, поэтому здесь они переобъявлены ссылкой, а не копией.
Functions ¶
func CorpusRoot ¶
CorpusRoot — см. treeposture.CorpusRoot.
func ModuleDirIn ¶
ModuleDirIn — см. treeposture.ModuleDirIn.
func ModuleDirInPlatform ¶
func ModuleDirInPlatform() string
ModuleDirInPlatform — см. treeposture.ModuleDirInPlatform.
func ModuleRootFrom ¶
ModuleRootFrom — см. treeposture.ModuleRootFrom.
func RequireCorpus ¶
RequireCorpus — корень обхода и приставка модуля в нём.
Пропуска НЕТ by construction: обе посадки дают ответ, и отказ здесь означает, что корня нет ни у одной, — то есть проба не может назвать дерево, о котором говорит.
func RequirePath ¶
RequirePath — координата, приведённая к посадке, либо ПРОПУСК.
Types ¶
This section is empty.