Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/docs
diff options
context:
space:
mode:
authorPhil Nash2026-07-10 16:42:51 +0100
committerMartin Hořeňovský2026-07-22 20:50:17 +0200
commiteb431764b4cb9b6fa2296a034b4231064f8e464e (patch)
treef486843060010eabadde982f69a7da2175c3ae10 /docs
parentae5d271da2c88b859d6365281ac075112115d4b1 (diff)
downloadcatch3-eb431764b4cb9b6fa2296a034b4231064f8e464e.tar.gz
Document that DISCOVERY_MODE PRE_TEST should be used with catch_discover_tests when used with XCode.
This addresses https://github.com/catchorg/Catch2/issues/2411 by making the "workaround" the official approach and is consistent with how gtest and cmake deal with the same situation.
Diffstat (limited to 'docs')
-rw-r--r--docs/cmake-integration.md11
1 files changed, 11 insertions, 0 deletions
diff --git a/docs/cmake-integration.md b/docs/cmake-integration.md
index e63e67f6..63b5ebde 100644
--- a/docs/cmake-integration.md
+++ b/docs/cmake-integration.md
@@ -212,6 +212,17 @@ execution (useful e.g. in cross-compilation environments).
calling ``catch_discover_tests``. This provides a mechanism for globally
selecting a preferred test discovery behavior.
+_Note that on Apple Silicon with the Xcode generator you must use `PRE_TEST`,
+e.g. `catch_discover_tests(tests DISCOVERY_MODE PRE_TEST)`. With the default
+`POST_BUILD` mode the build fails with `Result: Subprocess killed`, because
+macOS on Apple Silicon refuses to run unsigned binaries and Xcode code-signs
+the test executable only **after** the post-build script that `POST_BUILD`
+mode uses to run it for test discovery. `PRE_TEST` avoids this by delaying
+discovery until test time, when the executable is already signed. The same
+limitation affects CMake's `gtest_discover_tests`; see
+[Catch2 #2411](https://github.com/catchorg/Catch2/issues/2411) and
+[CMake #21845](https://gitlab.kitware.com/cmake/cmake/-/issues/21845)._
+
* `SKIP_IS_FAILURE`
Skipped tests will be marked as failed instead.