summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2021-12-22 16:47:27 +0100
committerCarl Hetherington <cth@carlh.net>2021-12-23 12:59:56 +0100
commitd3be0385139016f72622e1e515af26b8472d59a8 (patch)
tree9a9fed03fc58d27bfa9329b8c9f64b1da6bbb8ab
parenta7f61a15fc974feaff1554bd5322650676a63c51 (diff)
Fix deadlock in test, caused by setting jobs to finished before they have been started.
-rw-r--r--test/job_manager_test.cc15
1 files changed, 13 insertions, 2 deletions
diff --git a/test/job_manager_test.cc b/test/job_manager_test.cc
index 1baa5767e..cdd1e2a29 100644
--- a/test/job_manager_test.cc
+++ b/test/job_manager_test.cc
@@ -123,8 +123,19 @@ BOOST_AUTO_TEST_CASE (job_manager_test2)
BOOST_CHECK (i == 5 ? jobs[i]->running() : !jobs[i]->running());
}
- for (auto job: jobs) {
- job->set_finished_ok();
+ /* Set any jobs that are started to be finished, until they're all finished */
+ while (true) {
+ if (std::find_if(jobs.begin(), jobs.end(), [](shared_ptr<Job> job) { return !job->finished_ok(); }) == jobs.end()) {
+ break;
+ }
+
+ for (auto job: jobs) {
+ if (job->running()) {
+ job->set_finished_ok();
+ }
+ }
}
+
+ BOOST_REQUIRE (!wait_for_jobs());
}