1.7 KiB
tparallel
Реализуйте api, дублирующее поведение t.Parallel()
.
Тест - это функция с сигнатурой func(*T)
. Вам нужно реализовать функцию Run(topTests []func(*T))
,
запускающую множество top-level тестов.
Каждый тест получает аргументом уникальный объект *T
.
В начате все тесты выполняются последовательно. Если тест вызывает t.Parallel()
, то он становится
паралельным и блокируется на этом вызове. После этого, запускается следующий последовательный тест.
Когда все последовательные тесты завершились, все паралельные тесты разблокируются и продолжают своё исполнение.
Функция Run
выходит, когда завершились все тесты.
Тест может запускать под-тесты вызывая t.Run
. Тест считается завершённым, когда завершилась его тестовая функция и
завершились все его подтесты.
Под-тест начинает своё выполнение последовательно, блокируя вызов Run. Подтест может стать параллельным,
вызвав t.Parallel()
. Такой тест должен продолжить исполнение, после того как функция родительского теста
завершилась.