diff options
| author | Carl Hetherington <cth@carlh.net> | 2021-12-22 16:47:27 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2021-12-23 12:59:56 +0100 |
| commit | d3be0385139016f72622e1e515af26b8472d59a8 (patch) | |
| tree | 9a9fed03fc58d27bfa9329b8c9f64b1da6bbb8ab | |
| parent | a7f61a15fc974feaff1554bd5322650676a63c51 (diff) | |
Fix deadlock in test, caused by setting jobs to finished before they have been started.
| -rw-r--r-- | test/job_manager_test.cc | 15 |
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()); } |
