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

summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMartin Hořeňovský2026-09-06 20:46:06 +0200
committerMartin Hořeňovský2026-09-06 20:46:11 +0200
commit15db9be53067d66ecd11a7ddd3097d412047130a (patch)
tree31cf2c06a1100db239390d69bd5e0752ca72eb9c
parent5fe473f202a322ab10ee10bf64fcae63593286cf (diff)
downloadcatch3-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.cpp2
-rw-r--r--src/catch2/internal/catch_sharding.hpp8
-rw-r--r--src/catch2/internal/catch_test_case_registry_impl.cpp2
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 );