33#include " cucumber/messages/envelope.hpp"
44#include " cucumber/messages/step_match_arguments_list.hpp"
55#include " cucumber/messages/test_case.hpp"
6- #include " cucumber/messages/test_step.hpp"
76#include " cucumber_cpp/library/HookRegistry.hpp"
87#include " cucumber_cpp/library/assemble/AssembledTestSuite.hpp"
98#include " cucumber_cpp/library/cucumber_expression/Matcher.hpp"
109#include " cucumber_cpp/library/support/SupportCodeLibrary.hpp"
1110#include " cucumber_cpp/library/support/Types.hpp"
1211#include " cucumber_cpp/library/util/Broadcaster.hpp"
12+ #include < list>
1313#include < map>
1414#include < optional>
1515#include < ranges>
@@ -25,9 +25,10 @@ namespace cucumber_cpp::library::assemble
2525 std::vector<AssembledTestSuite> AssembleTestSuites (support::SupportCodeLibrary supportCodeLibrary,
2626 std::string_view testRunStartedId,
2727 util::Broadcaster& broadcaster,
28- std::span< const support::PickleSource> sourcedPickles,
28+ const std::list< support::PickleSource>& sourcedPickles,
2929 cucumber::gherkin::id_generator_ptr idGenerator)
3030 {
31+ std::vector<std::string> testUris;
3132 std::map<std::string, AssembledTestSuite> assembledTestSuiteMap;
3233
3334 for (const auto & pickleSource : sourcedPickles)
@@ -77,16 +78,19 @@ namespace cucumber_cpp::library::assemble
7778 broadcaster.BroadcastEvent (cucumber::messages::envelope{ .test_case = testCase });
7879
7980 if (!assembledTestSuiteMap.contains (pickleSource.gherkinDocument ->uri .value ()))
81+ {
82+ testUris.emplace_back (pickleSource.gherkinDocument ->uri .value ());
8083 assembledTestSuiteMap.emplace (pickleSource.gherkinDocument ->uri .value (), *pickleSource.gherkinDocument );
84+ }
8185
8286 assembledTestSuiteMap.at (pickleSource.gherkinDocument ->uri .value ()).testCases .emplace_back (*pickleSource.pickle , testCase);
8387 }
8488
8589 std::vector<AssembledTestSuite> assembledTestSuites;
8690 assembledTestSuites.reserve (assembledTestSuiteMap.size ());
8791
88- for (auto assembledTestSuiteValues : assembledTestSuiteMap | std::views::values )
89- assembledTestSuites.emplace_back (std::move (assembledTestSuiteValues ));
92+ for (auto uri : testUris )
93+ assembledTestSuites.emplace_back (std::move (assembledTestSuiteMap. at (uri) ));
9094
9195 return assembledTestSuites;
9296 }
0 commit comments