TGViewer
Библиотека Go-разработчика | Golang Библиотека Go-разработчика | Golang @goproglib · 24.1K subscribers
Post #7078 3.3K
🔄 dockertest v4

У dockertest вышло мажорное обновление, быстро смотрим под капот.

Автоматическая очистка через t.Cleanup

В v3 нужно было явно вызывать defer pool.Purge(resource). В v4 NewPoolT регистрирует очистку автоматически. Контейнеры удаляются при завершении теста без единой строки дополнительного кода.

Переиспользование контейнеров по умолчанию

Контейнеры с одинаковым repository:tag автоматически шарятся между тестами в рамках одного запуска. Это существенно ускоряет локальную разработку. Отключается через WithoutReuse(), а для одного образа с разными конфигами WithReuseID("my-key").

Функциональные опции вместо RunOptions

// v3
pool.RunWithOptions(&dockertest.RunOptions{
Repository: "postgres",
Tag: "14",
Env: []string{"POSTGRES_PASSWORD=secret"},
})

// v4
pool.RunT(t, "postgres",
dockertest.WithTag("14"),
dockertest.WithEnv([]string{"POSTGRES_PASSWORD=secret"}),
)


Context везде

pool.Retry теперь принимает context.Context и явный таймаут:
// v3
pool.Retry(func() error { return db.Ping() })

// v4
pool.Retry(t.Context(), 30*time.Second, func() error { return db.Ping() })


Лёгкий клиент и безопасность

v3 тащил за собой 6000+ строк вендорного Docker-клиента с известными CVE. v4 использует официальный Moby-клиент — зависимости стали значительно чище.

Sentinel errors

Вместо строковых ошибок — типизированные:
if errors.Is(err, dockertest.ErrImagePullFailed) { ... }
if errors.Is(err, dockertest.ErrContainerStartFailed) { ... }


Миграция:
go get github.com/ory/dockertest/v4
# Обновить импорты
find . -name "*.go" -exec sed -i \
's|github.com/ory/dockertest/v3|github.com/ory/dockertest/v4|g' {} \;


➡️ Полный гайд по миграции

🔗 Источник

📍 Навигация: Вакансии • Задачи • Собесы

🐸 Библиотека Go-разработчика

#GoLive
  • 👍 6
  • 🔥 4
More from @goproglib
  1. Sep 30, 2026🧑‍💻 Эмулятор AWS-сервисов Kumo — это небольшой инструмент на Go для локальной имитации A…
  2. Sep 29, 2026👨‍💻 Библиотека для написания LSP-серверов Написать свой Language Server с нуля на Go сло…
  3. Sep 28, 2026🤔 Вопрос с собеседования по Go Что выведет программа? ❤️ — 1 true / 0 false 🔥 — 1 true /…
  4. Sep 28, 2026👩‍💻 Что на самом деле происходит внутри Go map? После Go 1.24 обычный map внутри работае…
  5. Sep 26, 2026🔥 В Go 1.27 появился portable SIMD До этого SIMD-оптимизации в Go требовали архитектурног…
  6. Sep 25, 2026🤡🤡 📍 Навигация: Вакансии • Задачи • Собесы 🐸 Библиотека Go-разработчика #GoGiggle
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →