diff options
| author | Nat Goodspeed <nat@lindenlab.com> | 2019-08-12 17:43:09 -0400 |
|---|---|---|
| committer | Nat Goodspeed <nat@lindenlab.com> | 2019-08-12 17:43:09 -0400 |
| commit | a5f58663c00d9d6ffa12d4b9f8cf4eeee70b4d5e (patch) | |
| tree | 4655c10ed8baf9de95732f7bfbb8663e965b2a2a /indra/llcommon/tests/wrapllerrs.h | |
| parent | 3c552696bf8704e30c1525a4f9d4b3dd09034820 (diff) | |
| parent | 4fce6dc4353dbf9ccd3c9c3aced89df72a4f3abd (diff) | |
Automated merge with ssh://bitbucket.org/andreykproductengine/drtvwr-493
Diffstat (limited to 'indra/llcommon/tests/wrapllerrs.h')
| -rw-r--r-- | indra/llcommon/tests/wrapllerrs.h | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/indra/llcommon/tests/wrapllerrs.h b/indra/llcommon/tests/wrapllerrs.h index 08fbf19b1c..b07d5afbd8 100644 --- a/indra/llcommon/tests/wrapllerrs.h +++ b/indra/llcommon/tests/wrapllerrs.h @@ -37,6 +37,7 @@ #include "llerrorcontrol.h" #include "llexception.h" #include "stringize.h" +#include "../test/catch_and_store_what_in.h" #include <boost/bind.hpp> #include <boost/noncopyable.hpp> #include <boost/shared_ptr.hpp> @@ -81,6 +82,31 @@ struct WrapLLErrs LLTHROW(FatalException(message)); } + /// Convenience wrapper for catch_what<FatalException>() + // + // The implementation makes it clear that this function need not be a + // member; it could easily be a free function. It is a member because it + // makes no sense to attempt to catch FatalException unless there is a + // WrapLLErrs instance in scope. Without a live WrapLLErrs instance, any + // LL_ERRS() reached by code within 'func' would terminate the test + // program instead of throwing FatalException. + // + // We were tempted to introduce a free function, likewise accepting + // arbitrary 'func', that would instantiate WrapLLErrs and then call + // catch_llerrs() on that instance. We decided against it, for this + // reason: on extending a test function containing a single call to that + // free function, a maintainer would most likely make additional calls to + // that free function, instead of switching to an explicit WrapLLErrs + // declaration with several calls to its catch_llerrs() member function. + // Even a construct such as WrapLLErrs().catch_llerrs(...) would make the + // object declaration more visible; it's not unreasonable to expect a + // maintainer to extend that by naming and reusing the WrapLLErrs instance. + template <typename FUNC> + std::string catch_llerrs(FUNC func) + { + return catch_what<FatalException>(func); + } + std::string error; LLError::SettingsStoragePtr mPriorErrorSettings; LLError::FatalFunction mPriorFatal; |
