Skip to content

Conversation

@potemin1999
Copy link
Collaborator

@potemin1999 potemin1999 commented Oct 29, 2025

Это предварительная имплементация одного долгожданного поведения picotest_unit, плюс небольшое улучшение по UX использования макроса:

  1. Паники в picotest_unit более не роняют инстанс, но вместо этого паника обрабатывается для тестового файбера (не затрагивая другие), извлекается стактрейс, текст ошибки, локация и передается в текстовом формате (с использованием base64 для экранирования) в клиент тестов. Там оно распаковывается и перепробрасывается как паника уже в процессе тестового исполняемого файла. Сама имплементация этого механизма может быть лучше, критика принимается.
  2. Новое решение проблемы конфликт имен в unit тестах #67 (фикс был в fix: use original unit test name in output #89) - и на стороне клиента (исполняемый файл с тестами), и на стороне сервера (библиотека с самой тестовой нагрузкой) мы используем оригинальное имя функции, без FFI-export. Вместо этого, мы экспортируем соседнюю функцию с автосгенерированным именем, которая называется "локатор" теста. Все, что она делает, это возвращает указатель на реальный тестовый метод с Rust call ABI, который будет вызван в picotest_execute_unit на стороне сервера. При этом получилось вытащить полный путь тестируемой функции через module_path! За счет этих изменений, мы получаем реальное имя функции в стактрейсах, если таковые вылетают, что упрощает дебаг.

Improves solution for FFI-exported symbols collision by preserving original test function signature on both sides (test executable and plugin library), though with different contents depending on cfg test. This allows real function name to appear in occasional stacktraces as well as in test result summary, improving debugging experience
@boris-sinyapkin boris-sinyapkin self-requested a review October 29, 2025 13:58
@potemin1999 potemin1999 changed the title Macro refactor and panic handler Улучшение макроса picotest_unit и обработка паник в тестах Oct 29, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants