Improve reporting of unusual unit test failures:

* Jobs with no unit tests are counted as failures. Resolves #3474
* Crashed processes are counted as failures. Resolves #3600
* Any tests specified on the command line test do not have matching
  suites are counted as failures.
* Remove unused CI manual test.
This commit is contained in:
Edward Hennis
2020-09-02 18:27:34 -04:00
committed by Nik Bougalis
parent 1129110be3
commit dbde686a97
4 changed files with 144 additions and 2 deletions

View File

@@ -182,6 +182,22 @@ multi_runner_base<IsParent>::inner::any_failed(bool v)
any_failed_ = any_failed_ || v;
}
template <bool IsParent>
std::size_t
multi_runner_base<IsParent>::inner::tests() const
{
std::lock_guard l{m_};
return results_.total;
}
template <bool IsParent>
std::size_t
multi_runner_base<IsParent>::inner::suites() const
{
std::lock_guard l{m_};
return results_.suites;
}
template <bool IsParent>
void
multi_runner_base<IsParent>::inner::inc_keep_alive_count()
@@ -348,6 +364,30 @@ multi_runner_base<IsParent>::message_queue_send(
message_queue_->send(s.c_str(), s.size(), /*priority*/ 0);
}
template <bool IsParent>
std::size_t
multi_runner_base<IsParent>::tests() const
{
return inner_->tests();
}
template <bool IsParent>
std::size_t
multi_runner_base<IsParent>::suites() const
{
return inner_->suites();
}
template <bool IsParent>
void
multi_runner_base<IsParent>::add_failures(std::size_t failures)
{
results results;
results.failed += failures;
add(results);
any_failed(failures != 0);
}
template <bool IsParent>
constexpr const char* multi_runner_base<IsParent>::shared_mem_name_;
template <bool IsParent>
@@ -445,6 +485,24 @@ multi_runner_parent::any_failed() const
return multi_runner_base<true>::any_failed();
}
std::size_t
multi_runner_parent::tests() const
{
return multi_runner_base<true>::tests();
}
std::size_t
multi_runner_parent::suites() const
{
return multi_runner_base<true>::suites();
}
void
multi_runner_parent::add_failures(std::size_t failures)
{
multi_runner_base<true>::add_failures(failures);
}
//------------------------------------------------------------------------------
multi_runner_child::multi_runner_child(
@@ -501,6 +559,25 @@ multi_runner_child::~multi_runner_child()
add(results_);
}
std::size_t
multi_runner_child::tests() const
{
return results_.total;
}
std::size_t
multi_runner_child::suites() const
{
return results_.suites;
}
void
multi_runner_child::add_failures(std::size_t failures)
{
results_.failed += failures;
any_failed(failures != 0);
}
void
multi_runner_child::on_suite_begin(beast::unit_test::suite_info const& info)
{

View File

@@ -131,6 +131,12 @@ class multi_runner_base
void
any_failed(bool v);
std::size_t
tests() const;
std::size_t
suites() const;
void
inc_keep_alive_count();
@@ -192,6 +198,15 @@ public:
bool
any_failed() const;
std::size_t
tests() const;
std::size_t
suites() const;
void
add_failures(std::size_t failures);
};
} // namespace detail
@@ -220,6 +235,15 @@ public:
bool
any_failed() const;
std::size_t
tests() const;
std::size_t
suites() const;
void
add_failures(std::size_t failures);
};
//------------------------------------------------------------------------------
@@ -249,6 +273,15 @@ public:
multi_runner_child(std::size_t num_jobs, bool quiet, bool print_log);
~multi_runner_child();
std::size_t
tests() const;
std::size_t
suites() const;
void
add_failures(std::size_t failures);
template <class Pred>
bool
run_multi(Pred pred);