diff options
| author | Martin Hořeňovský | 2026-09-06 20:46:06 +0200 |
|---|---|---|
| committer | Martin Hořeňovský | 2026-09-06 20:46:11 +0200 |
| commit | 15db9be53067d66ecd11a7ddd3097d412047130a (patch) | |
| tree | 31cf2c06a1100db239390d69bd5e0752ca72eb9c | |
| parent | 5fe473f202a322ab10ee10bf64fcae63593286cf (diff) | |
| download | catch3-15db9be53067d66ecd11a7ddd3097d412047130a.tar.gz | |
Move-enable createShard
This is _technically_ a performance improvement, but in actuality
it is a tiny cleanup so it stops bothering me.
| -rw-r--r-- | src/catch2/catch_session.cpp | 2 | ||||
| -rw-r--r-- | src/catch2/internal/catch_sharding.hpp | 8 | ||||
| -rw-r--r-- | src/catch2/internal/catch_test_case_registry_impl.cpp | 2 |
3 files changed, 8 insertions, 4 deletions
diff --git a/src/catch2/catch_session.cpp b/src/catch2/catch_session.cpp index bf14d23b..503da14f 100644 --- a/src/catch2/catch_session.cpp +++ b/src/catch2/catch_session.cpp @@ -103,7 +103,7 @@ namespace Catch { } } - m_tests = createShard(m_tests, m_config->shardCount(), m_config->shardIndex()); + m_tests = createShard(CATCH_MOVE(m_tests), m_config->shardCount(), m_config->shardIndex()); } Totals execute() { diff --git a/src/catch2/internal/catch_sharding.hpp b/src/catch2/internal/catch_sharding.hpp index 4d7ee269..2315a1fa 100644 --- a/src/catch2/internal/catch_sharding.hpp +++ b/src/catch2/internal/catch_sharding.hpp @@ -14,9 +14,10 @@ namespace Catch { template<typename Container> - Container createShard(Container const& container, std::size_t const shardCount, std::size_t const shardIndex) { + Container createShard(Container container, std::size_t const shardCount, std::size_t const shardIndex) { assert(shardCount > shardIndex); + // Single shard means there is nothing to do if (shardCount == 1) { return container; } @@ -32,7 +33,10 @@ namespace Catch { auto startIterator = std::next(container.begin(), static_cast<std::ptrdiff_t>(startIndex)); auto endIterator = std::next(container.begin(), static_cast<std::ptrdiff_t>(endIndex)); - return Container(startIterator, endIterator); + container.erase(endIterator, container.end()); + container.erase(container.begin(), startIterator); + + return container; } } diff --git a/src/catch2/internal/catch_test_case_registry_impl.cpp b/src/catch2/internal/catch_test_case_registry_impl.cpp index 3c1bdd4b..ec707e08 100644 --- a/src/catch2/internal/catch_test_case_registry_impl.cpp +++ b/src/catch2/internal/catch_test_case_registry_impl.cpp @@ -135,7 +135,7 @@ namespace Catch { filtered.push_back(testCase); } } - return createShard(filtered, config.shardCount(), config.shardIndex()); + return createShard(CATCH_MOVE(filtered), config.shardCount(), config.shardIndex()); } std::vector<TestCaseHandle> const& getAllTestCasesSorted( IConfig const& config ) { return getRegistryHub().getTestCaseRegistry().getAllTestsSorted( config ); |