Files
transcriber/web/embed_test.go
T
av 663021f712 приложение собрано каркасом и вшито в бинарник
- заведён каталог web/ — Vue 3, роутер пятой версии, сборка Vite; собранное
  вшивается через go:embed и раздаётся корневым маршрутом: разметка на
  неизвестном пути вне корней сервиса, отказ контракта внутри корня
- перечень корней сервиса стал единой точкой и порождает регистрацию маршрутов,
  а не описывает её; журнал раздачи пишет исход и длину пути, но не сам путь
- шаг front зовёт Node контейнером docker — Biome, юнит-тесты Vue и сборка
  входят в гейт, а в Dockerfile появилась ступень приложения
2026-08-15 18:51:05 +03:00

47 lines
2.3 KiB
Go

package web
import (
"io/fs"
"testing"
)
// Стык вшивания с раздачей проверяется здесь, и только здесь: проверки самой
// раздачи получают файловую систему параметром и подставляют свою, поэтому
// расхождение объявленной раскладки с настоящей им недоступно по построению.
//
// Раскладка объявлена дважды — выходным каталогом сборщика и `distDir` здесь, —
// и связаны они только совпадением строк. Разойдясь, они дают `503` на каждом
// пути показа при зелёном наборе проверок.
func TestDistMatchesEmbeddedLayout(t *testing.T) {
dist, built := Dist()
if dist == nil {
t.Fatal("вшитое поддерево недоступно: distDir разошёлся с директивой go:embed")
}
_, err := fs.Stat(dist, "index.html")
// Оба исхода законны и различаются одним: собрано приложение или нет.
// Незаконно третье — «собрано, но `Dist` этого не видит».
if built && err != nil {
t.Fatalf("приложение объявлено собранным, а разметки в поддереве нет: %v", err)
}
if !built && err == nil {
t.Fatal("разметка есть, а приложение объявлено несобранным")
}
if !built {
t.Skip("приложение не собрано: прогон без шага сборки, проверять нечего")
}
}
// Метка пустого каталога вшивается вместе с прочим: без неё каталога не было бы
// в git, и сборка Go отказывала бы у всякого, кто приложение ни разу не собирал.
// Приставка `all:` заведена ровно ради неё.
func TestMarkerIsEmbedded(t *testing.T) {
if _, err := fs.Stat(embedded, "embed/.gitkeep"); err != nil {
t.Fatalf("метка пустого каталога не вшита: %v", err)
}
}