catchorg / Catch2

A modern, C++-native, test framework for unit-tests, TDD and BDD - using C++14, C++17 and later (C++11 support is in v2.x branch, and C++03 on the Catch1.x branch)
https://discord.gg/4CWS9zD
Boost Software License 1.0
18.51k stars 3.04k forks source link

Add optional argument to catch_discover_tests to set DYLD_FRAMEWORK_PATH #2880

Closed andy-phillips closed 2 months ago

andy-phillips commented 3 months ago

If a 3rd party library used in tests depends on the DYLD_FRAMEWORK_PATH environment variable to be set on OSX (in order to find its dependent libraries packaged as Apple frameworks during test discovery and run them), then catch_discover_tests will fail. It's similar to the need and usage of the DL_PATHS argument.

Two solutions I initially thought of. One, set the DYLD_FRAMEWORK_PATH implicitly to the same value as DL_PATHS. Second, adding an explicit optional argument to set the paths specifically used for Apple frameworks.

In this PR I have opted for the second solution to allow the two variables to hold different values, even though DYLD_FRAMEWORK_PATH only needs to be set on OSX. There is some repetition in the code to process the paths and set the variables which could be improved in a separate commit or PR.

codecov[bot] commented 3 months ago

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 91.14%. Comparing base (4e8d92b) to head (9109c06). Report is 6 commits behind head on devel.

Additional details and impacted files ```diff @@ Coverage Diff @@ ## devel #2880 +/- ## ========================================== + Coverage 91.10% 91.14% +0.04% ========================================== Files 198 198 Lines 8493 8487 -6 ========================================== - Hits 7737 7735 -2 + Misses 756 752 -4 ```
horenmar commented 2 months ago

It's fine to keep the paths duplicated.

horenmar commented 2 months ago

Thanks