Проблема з тестами на фреймворку: чому вони відмовляють, але працюють на виконуваних файлах?

Проблема з тестами на фреймворку: чому вони відмовляють, але працюють на виконуваних файлах?

3 Березня 2024 в 17:29 26

Під час підтримки старого проекту я натрапив на цікавий момент, який спровокував мій інтерес. У мене є фреймворк, до якого входять деякі тести. Оскільки це було написано у 2013 році, розробник додав прапорець для виключених архітектур: Any iOS Simulator SDK arm64. Це означало, що для запуску тестів мені потрібно переключитися на Rosseta, якщо я хочу запустити їх на своєму M1 Mac. На Intel Macs вони працюють безпосередньо. Якщо я не використовую Rosseta, тести не запускаються, і я отримую помилку зв’язування. До цього все зрозуміло.

Ось цікава частина. Але якщо я зміню свій фреймворк на додаток і спробую запустити ті самі тести, вони не відмовлять. Вони будуть працювати, навіть якщо я не обираю Rosseta симулятор на своєму M1 Mac. На всіх інших це повинно відмовити.

Я додаю невеликий проект, який є PoC цього -> https://github.com/MegaManX32/TestX86_64. Один цільовий – це додаток (виконуваний файл), а інший – це фреймворк.

Так от, моє питання таке: в чому різниця, що відбувається під капотом, і як я можу зробити тести для фреймворку працюють без переходу на Rosseta симулятор?