| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | 
							
- #              Copyright Catch2 Authors
 
- # Distributed under the Boost Software License, Version 1.0.
 
- #   (See accompanying file LICENSE_1_0.txt or copy at
 
- #        https://www.boost.org/LICENSE_1_0.txt)
 
- # SPDX-License-Identifier: BSL-1.0
 
- # Indirection for CatchShardTests that allows us to delay the script
 
- # file generation until build time.
 
- # Expected args:
 
- #  * TEST_BINARY - full path to the test binary to run sharded
 
- #  * CTEST_FILE  - full path to ctest script file to write to
 
- #  * TARGET_NAME - name of the target to shard (used for test names)
 
- #  * SHARD_COUNT - number of shards to split the binary into
 
- # Optional args:
 
- #  * REPORTER_SPEC - reporter specs to be passed down to the binary
 
- #  * TEST_SPEC     - test spec to pass down to the test binary
 
- if(NOT EXISTS "${TEST_BINARY}")
 
-   message(FATAL_ERROR
 
-     "Specified test binary '${TEST_BINARY}' does not exist"
 
-   )
 
- endif()
 
- set(other_args "")
 
- if (TEST_SPEC)
 
-   set(other_args "${other_args} ${TEST_SPEC}")
 
- endif()
 
- if (REPORTER_SPEC)
 
-   set(other_args "${other_args} --reporter ${REPORTER_SPEC}")
 
- endif()
 
- # foreach RANGE in cmake is inclusive of the end, so we have to adjust it
 
- math(EXPR adjusted_shard_count "${SHARD_COUNT} - 1")
 
- file(WRITE "${CTEST_FILE}"
 
-   "string(RANDOM LENGTH 8 ALPHABET \"0123456789abcdef\" rng_seed)\n"
 
-   "\n"
 
-   "foreach(shard_idx RANGE ${adjusted_shard_count})\n"
 
-   "  add_test(${TARGET_NAME}-shard-" [[${shard_idx}]] "/${adjusted_shard_count}\n"
 
-   "    ${TEST_BINARY}"
 
-   " --shard-index " [[${shard_idx}]]
 
-   " --shard-count ${SHARD_COUNT}"
 
-   " --rng-seed " [[0x${rng_seed}]]
 
-   " --order rand"
 
-   "${other_args}"
 
-   "\n"
 
-   "  )\n"
 
-   "endforeach()\n"
 
- )
 
 
  |