X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Fjob_manager_test.cc;h=e11423575f48a18b91d70aa020fc0cb1fa6c54c0;hb=922dc3605c29bd742a18b02fbe1faae5739b70df;hp=1baa5767e25a6b678b57426843443e79d5119641;hpb=d41a59b6ef7a8c935f182d498ae4df0bdd66ba02;p=dcpomatic.git diff --git a/test/job_manager_test.cc b/test/job_manager_test.cc index 1baa5767e..e11423575 100644 --- a/test/job_manager_test.cc +++ b/test/job_manager_test.cc @@ -59,7 +59,7 @@ public: set_state (FINISHED_ERROR); } - void run () + void run () override { while (true) { if (finished ()) { @@ -68,11 +68,11 @@ public: } } - string name () const { + string name () const override { return ""; } - string json_name () const { + string json_name () const override { return ""; } }; @@ -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) { return !job->finished_ok(); }) == jobs.end()) { + break; + } + + for (auto job: jobs) { + if (job->running()) { + job->set_finished_ok(); + } + } } + + BOOST_REQUIRE (!wait_for_jobs()); }