Продолжение #1271. Там набор научился компилироваться; теперь он впервые прогнан.
TRIOS_E2E_DISABLE_KEYCHAIN=1 TRIOS_VARIANT=dev swift test
выполнено 121, пропущено 2, падений 10 в четырёх наборах
процесс завершился сигналом 5
Два пропуска — намеренные, это тесты с удалённым предметом (#1271), и они говорят почему.
Падения не дрейф
Это не «тест отстал от API». Это утверждения о поведении, которые никто не мог проверить месяцами:
ChatFailureTests.testBackgroundPollerStopsAndResumes (:353) — XCTAssertNil не прошёл: BackgroundHealthPoller после остановки не обнулился.
ChatFailureTests.testDoctorWithModelFlagRejectedWhenEmpty (:315) — /doctor --model с пустым значением разбирается как doctor(model: nil), а ожидался отказ unknown("/doctor --model"). То есть флаг без значения молча принимается.
ChatFailureTests.testProviderStatusDisablesModelProbe (:213) — при выключенном каталоге провайдера ожидалось unavailable, получено unknown(error: "not configured").
Падают четыре набора: ChatFailureTests, ChatRequestBuilderTests, ChatRequestSizerTests, ConversationEncryptionTests.
Средовое, о чём стоит знать
Без TRIOS_E2E_DISABLE_KEYCHAIN=1 прогон обрывается насмерть: KeychainSymmetricKeyStoreTests даёт Fatal error: Unexpectedly found nil, и всё после него не выполняется вовсе — то есть без этой переменной вы видите не десять падений, а обрубок. С переменной те шесть тестов проходят.
Сигнал 5 на выходе остаётся и с переменной: что-то ещё падает после последнего сообщения.
Что нужно
- Разобрать десять падений: для каждого решить, ошибка в коде или в ожидании теста. Судя по трём процитированным, минимум два — в коде.
- Найти источник сигнала 5.
- Решить, где живёт
TRIOS_E2E_DISABLE_KEYCHAIN=1 — если прогон без неё обрывается, она часть контракта, а не заклинание в чужой памяти.
- Только после этого
swift test можно ставить в ворота: сейчас make xctest считает ошибки сборки, а не результаты.
Продолжение #1271. Там набор научился компилироваться; теперь он впервые прогнан.
Два пропуска — намеренные, это тесты с удалённым предметом (#1271), и они говорят почему.
Падения не дрейф
Это не «тест отстал от API». Это утверждения о поведении, которые никто не мог проверить месяцами:
ChatFailureTests.testBackgroundPollerStopsAndResumes(:353) —XCTAssertNilне прошёл:BackgroundHealthPollerпосле остановки не обнулился.ChatFailureTests.testDoctorWithModelFlagRejectedWhenEmpty(:315) —/doctor --modelс пустым значением разбирается какdoctor(model: nil), а ожидался отказunknown("/doctor --model"). То есть флаг без значения молча принимается.ChatFailureTests.testProviderStatusDisablesModelProbe(:213) — при выключенном каталоге провайдера ожидалосьunavailable, полученоunknown(error: "not configured").Падают четыре набора:
ChatFailureTests,ChatRequestBuilderTests,ChatRequestSizerTests,ConversationEncryptionTests.Средовое, о чём стоит знать
Без
TRIOS_E2E_DISABLE_KEYCHAIN=1прогон обрывается насмерть:KeychainSymmetricKeyStoreTestsдаётFatal error: Unexpectedly found nil, и всё после него не выполняется вовсе — то есть без этой переменной вы видите не десять падений, а обрубок. С переменной те шесть тестов проходят.Сигнал 5 на выходе остаётся и с переменной: что-то ещё падает после последнего сообщения.
Что нужно
TRIOS_E2E_DISABLE_KEYCHAIN=1— если прогон без неё обрывается, она часть контракта, а не заклинание в чужой памяти.swift testможно ставить в ворота: сейчасmake xctestсчитает ошибки сборки, а не результаты.