X-Git-Url: http://biod.pnpi.spb.ru/gitweb/?p=alexxy%2Fgromacs.git;a=blobdiff_plain;f=src%2Ftestutils%2Frefdata.cpp;fp=src%2Ftestutils%2Frefdata.cpp;h=3c72514481cab29dbfbffc189f2734696ae7376d;hp=075a028761ae41b642f1b492fe090530c245c332;hb=4ab77f8b8162e37a89f7bdbd89709528326d7c26;hpb=977d0e553d447c3a373c4dee62225922364fae27 diff --git a/src/testutils/refdata.cpp b/src/testutils/refdata.cpp index 075a028761..3c72514481 100644 --- a/src/testutils/refdata.cpp +++ b/src/testutils/refdata.cpp @@ -38,6 +38,7 @@ * Implements classes and functions from refdata.h. * * \author Teemu Murtola + * \author Mark Abraham * \ingroup module_testutils */ #include "gmxpre.h" @@ -49,6 +50,7 @@ #include #include +#include #include #include @@ -93,7 +95,7 @@ class TestReferenceDataImpl { public: //! Initializes a checker in the given mode. - TestReferenceDataImpl(ReferenceDataMode mode, bool bSelfTestMode); + TestReferenceDataImpl(ReferenceDataMode mode, bool bSelfTestMode, std::optional testNameOverride); //! Performs final reference data processing when test ends. void onTestEnd(bool testPassed) const; @@ -165,10 +167,11 @@ ReferenceDataMode getReferenceDataMode() } //! Returns a reference to the global reference data object. -TestReferenceDataImplPointer initReferenceDataInstance() +TestReferenceDataImplPointer initReferenceDataInstance(std::optional testNameOverride) { GMX_RELEASE_ASSERT(!g_referenceData, "Test cannot create multiple TestReferenceData instances"); - g_referenceData.reset(new internal::TestReferenceDataImpl(getReferenceDataMode(), false)); + g_referenceData.reset(new internal::TestReferenceDataImpl( + getReferenceDataMode(), false, std::move(testNameOverride))); return g_referenceData; } @@ -182,7 +185,7 @@ TestReferenceDataImplPointer initReferenceDataInstanceForSelfTest(ReferenceDataM g_referenceData->onTestEnd(true); g_referenceData.reset(); } - g_referenceData.reset(new internal::TestReferenceDataImpl(mode, true)); + g_referenceData.reset(new internal::TestReferenceDataImpl(mode, true, std::nullopt)); return g_referenceData; } @@ -287,12 +290,16 @@ void initReferenceData(IOptionsContainer* options) namespace internal { -TestReferenceDataImpl::TestReferenceDataImpl(ReferenceDataMode mode, bool bSelfTestMode) : +TestReferenceDataImpl::TestReferenceDataImpl(ReferenceDataMode mode, + bool bSelfTestMode, + std::optional testNameOverride) : updateMismatchingEntries_(false), bSelfTestMode_(bSelfTestMode), bInUse_(false) { const std::string dirname = bSelfTestMode ? TestFileManager::getGlobalOutputTempDirectory() : TestFileManager::getInputDataDirectory(); - const std::string filename = TestFileManager::getTestSpecificFileName(".xml"); + const std::string filename = testNameOverride.has_value() + ? testNameOverride.value() + : TestFileManager::getTestSpecificFileName(".xml"); fullFilename_ = Path::join(dirname, "refdata", filename); switch (mode) @@ -678,9 +685,14 @@ ReferenceDataEntry* TestReferenceChecker::Impl::findOrCreateEntry(const char* ty * TestReferenceData */ -TestReferenceData::TestReferenceData() : impl_(initReferenceDataInstance()) {} +TestReferenceData::TestReferenceData() : impl_(initReferenceDataInstance(std::nullopt)) {} +TestReferenceData::TestReferenceData(std::string testNameOverride) : + impl_(initReferenceDataInstance(std::move(testNameOverride))) +{ +} + TestReferenceData::TestReferenceData(ReferenceDataMode mode) : impl_(initReferenceDataInstanceForSelfTest(mode)) {