Ответ Тома Андерсона неплох, но kill $(cat $PIDFILE)
произойдет только в моей системе, если foo
закончен сам по себе или через Ctrl-C. Для меня работает следующее решение
while read g
do
if [[ $g =~ bar ]]
then
kill $!
fi
done < <(
exec foo 2> >(tee /dev/tty)
)
Вам нужно fulfill
ожидание. Как это:
let expectation = self.expectation(description: "Alert")
DispatchQueue.main.asyncAfter(deadline: .now() + 3.0, execute: {
expectation.fulfill()
})
waitForExpectations(timeout: 5, handler: nil)
XCTAssert(whatever)
Вы не выполняете своих ожиданий
func testExample() {
let expec = expectation(description: "Home Code")
someAsyncTask() { _ in
expectation.fulfill()
}
wait(for: [expec], timeout: 30)
}
См. Тестирование асинхронных операций с ожиданиями
Примечания: