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