Description
catch_discover_tests(tests PROPERTIES ENVIRONMENT "FIRST=one;SECOND=two") currently passes only the first environment variable to discovered tests. Argument parsing and forwarding flatten the list-valued property, losing the property/value boundary.
Preserve argument boundaries in the public parser and carry the encoded properties as one argument into test registration. Keep the existing list semantics for the executor so multi-argument emulators continue to work.
The integration regression covers PRE_TEST and POST_BUILD, verifies the CTest properties, and runs a real testcase that reads all environment variables. It includes a literal semicolon, an empty environment value, scalar properties, and a multi-argument emulator. Both modes fail on the unchanged base and pass with this change.
Validation on Linux/GCC 13.3/CMake 3.28.3: complete all-tests build and all 157 CTest checks pass, including the existing name/tag/TEST_LIST and DL_PATHS checks. The changed fixture passes C++14 syntax and formatting checks; the Python verifier passes syntax checking. Generated amalgamated files were rebuilt locally and are excluded from the commit.
Prepared with OpenAI Codex assistance; the reported failure was reproduced and the submitted source was tested locally.
GitHub Issues
Closes #2424.
Activity
3Codecov Report
:white_check_mark: All modified and coverable lines are covered by tests.
:white_check_mark: Project coverage is 91.21%. Comparing base (0809213) to head (a994213).
Additional details and impacted files
@@ Coverage Diff @@
## devel #3220 +/- ##
==========================================
+ Coverage 91.18% 91.21% +0.03%
==========================================
Files 205 205
Lines 9101 9101
==========================================
+ Hits 8298 8301 +3
+ Misses 803 800 -3 :rocket: New features to boost your workflow:
- :snowflake: Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.