shad-go/tparallel
2022-02-10 22:06:57 +00:00
..
README.md Update README.md 2020-03-29 17:14:32 +00:00
tparallel.go Resolve "upgrage to 1.17" 2022-02-10 22:06:57 +00:00
tparallel_test.go Add tparallel task 2020-03-18 18:35:54 +03:00

tparallel

Реализуйте api, дублирующее поведение t.Parallel().

Тест - это функция с сигнатурой func(*T). Вам нужно реализовать функцию Run(topTests []func(*T)), запускающую множество top-level тестов.

Каждый тест получает аргументом уникальный объект *T, под объекту T на каждый запуск теста.

В начале все тесты выполняются последовательно. Если тест вызывает t.Parallel(), то он становится параллельным и блокируется на этом вызове. После этого, запускается следующий последовательный тест.

Когда все последовательные тесты завершились, все параллельные тесты разблокируются и продолжают своё исполнение.

Функция Run выходит, когда завершились все тесты.

Тест может запускать под-тесты вызывая t.Run. Тест считается завершённым, когда завершилась его тестовая функция и завершились все его подтесты.

Под-тест начинает своё выполнение последовательно, блокируя вызов Run. Подтест может стать параллельным, вызвав t.Parallel(). Такой тест должен продолжить исполнение, после того как функция родительского теста завершилась.