Documentation
¶
Overview ¶
Package platformtree даёт ПРОБЕ исход резолва координат дерева.
───────────────────────────────────────────────────────────────────────────── ЧТО ЗДЕСЬ И ЧЕГО ЗДЕСЬ НЕТ
Здесь — только превращение исхода резолва в `t.Fatalf`. Сам резолв (какой корень судят пробы, как привести к нему координату, от какого корня брать состав) живёт в `internal/treeposture` и НЕ ЗНАЕТ про `testing`.
Разрез не косметический. Тот же вопрос задают приборы модуля — отпечаток сетки замера, писатель отчётов, — и они прод-код: пакет с `testing` в импорте они звать не вправе, иначе испытательная оснастка уезжает в поставляемый двоичный.
───────────────────────────────────────────────────────────────────────────── ПРОПУСКА ЗДЕСЬ БОЛЬШЕ НЕТ — И ЭТО ГЛАВНОЕ, ЧТО СТОИТ ЗНАТЬ
Пакет отдавал пробе третий исход — пропуск «дерева платформы рядом с модулем нет». Предпосылка была свойством КЛОНА ровно до выноса службы отдельным репозиторием; после него каталога `services/iam` нет НИ В ОДНОМ дереве, и пропуск стал безусловным. Замер на стволе `83ddd08a` (`go test -short -v ./...`, строки пропуска по этой предпосылке): **58** строк · **53** верхнеуровневые пробы · 2 подпробы · 1 строка без `SKIP` рядом. Среди них гейт безопасности «у каждого публичного RPC есть пообъектный вопрос». Молчание такой пробы неотличимо от исправной работы.
Поэтому ветви пропуска НЕТ. Её отсутствие держит компилятор — символа `ErrNoPlatformTree` не существует, — а не перепись и не обещание.
Осталась одна причина отказать, и она ГРОМКАЯ: координата называет дерево, которого в этом репозитории нет (`treeposture.ErrForeignTree`). У такой пробы здесь нет предмета; её снимают вместе с предметом либо переносят туда, где предмет живёт. Тихо соглашаться с ней нельзя — именно так пропуск и переживает свою предпосылку.
───────────────────────────────────────────────────────────────────────────── ЧТО БРАТЬ — ТРИ ВХОДА, И ОНИ О РАЗНОМ
Require — пробе нужен КОРЕНЬ дерева, которое она судит;
RequirePath — пробе нужен ОДИН файл по координате дерева;
RequireCorpus — проба ОБХОДИТ состав и судит его целиком: возвращает корень
обхода и приставку модуля в нём (пустую).
Index ¶
- Constants
- 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 NamedPlatformRoot() (string, string)
- 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 RequireNamedPlatformTree(t *testing.T) string
- func RequirePath(t *testing.T, rel string) string
- func RootFrom(start string) (string, error)
- func Under(prefix, rel string) string
Constants ¶
const PlatformTreeEnv = treeposture.PlatformTreeEnv
PlatformTreeEnv — см. treeposture.PlatformTreeEnv.
const SiblingsDir = treeposture.SiblingsDir
SiblingsDir — см. treeposture.SiblingsDir.
Variables ¶
var ( ErrForeignTree = treeposture.ErrForeignTree 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 NamedPlatformRoot ¶ added in v0.5.0
NamedPlatformRoot — см. treeposture.NamedPlatformRoot.
func RequireCorpus ¶
RequireCorpus — корень обхода и приставка модуля в нём.
func RequireNamedPlatformTree ¶ added in v0.5.0
RequireNamedPlatformTree — корень дерева платформы, НАЗВАННЫЙ снаружи, либо пропуск с предпосылкой, у которой ЕСТЬ ПРОИЗВОДИТЕЛЬ.
Чем этот пропуск отличается от снятого ¶
Снятый пропуск («дерева платформы рядом с модулем нет») был БЕЗУСЛОВНЫМ: его предпосылка после выноса службы выполнялась всегда и ни в одной посадке не могла стать ложной. Проба, им помеченная, не исполнялась НИ РАЗУ, и отличить это от исправной работы было нечем.
Здесь предпосылка — ручка, и её выставляет задание конвейера, выкладывающее манифесты соседних модулей. Значит пропуск наступает ровно там, где условие действительно не создано, и снимается СОЗДАНИЕМ УСЛОВИЯ, а не правкой пробы. Проба при этом исполняется в конвейере, а не только объявляет, что могла бы.
Предмет таких проб — платформенный артефакт (таблица типов, порождённая из шести манифестов; побайтовая сверка канона модели с ними), и судить его по одному собственному манифесту нельзя: вердикт был бы о другом предмете.
func RequirePath ¶
RequirePath — координата, приведённая к дереву прогона.
Types ¶
This section is empty.