Merge pull request #5263 from blattms/fix-dangling-references-test_LogOutHelper

[fix] Prevent dangling refernces in Logger for test_LogOutputHelper
This commit is contained in:
Bård Skaflestad 2024-04-11 12:16:04 +02:00 committed by GitHub
commit 006aa14fbd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -40,6 +40,28 @@
#include <memory> #include <memory>
#include <string> #include <string>
template<int type>
struct LogFixture
{
LogFixture() {
Opm::OpmLog::addBackend("stream",
std::make_shared<Opm::StreamLog>(str, type));
}
~LogFixture() {
Opm::OpmLog::removeBackend("stream");
}
std::stringstream str;
};
/*
template<>
std::stringstream LogFixture<Opm::Log::MessageType::Warning>::str;
template<>
std::stringstream LogFixture<Opm::Log::MessageType::Note>::str;
*/
using LogNoteFixture = LogFixture<Opm::Log::MessageType::Note>;
using LogWarningFixture = LogFixture<Opm::Log::MessageType::Warning>;
namespace { namespace {
const std::string input = R"( const std::string input = R"(
@ -94,7 +116,7 @@ std::string trimStream(std::stringstream& str)
} }
BOOST_AUTO_TEST_CASE(Cumulative) BOOST_FIXTURE_TEST_CASE(Cumulative, LogNoteFixture)
{ {
const std::string reference = R"(=================================================== CUMULATIVE PRODUCTION/INJECTION REPORT ========================================= const std::string reference = R"(=================================================== CUMULATIVE PRODUCTION/INJECTION REPORT =========================================
: WELL : LOCATION : WELL :CTRL: OIL : WATER : GAS : Prod : OIL : WATER : GAS : INJ : : WELL : LOCATION : WELL :CTRL: OIL : WATER : GAS : Prod : OIL : WATER : GAS : INJ :
@ -107,12 +129,6 @@ BOOST_AUTO_TEST_CASE(Cumulative)
: INJ: 1, 1: INJ:GRAT: 24.0: 25.0: 26.0: 27.0: 28.0: 29.0: 30.0: 31.0: : INJ: 1, 1: INJ:GRAT: 24.0: 25.0: 26.0: 27.0: 28.0: 29.0: 30.0: 31.0:
:--------:-----------:--------:----:-----------:-----------:-----------:-----------:-----------:-----------:-----------:-----------: :--------:-----------:--------:----:-----------:-----------:-----------:-----------:-----------:-----------:-----------:-----------:
)"; )";
std::stringstream str;
Opm::OpmLog::addBackend("stream",
std::make_shared<Opm::StreamLog>(str, Opm::Log::MessageType::Note));
Opm::Parser parser; Opm::Parser parser;
auto python = std::make_shared<Opm::Python>(); auto python = std::make_shared<Opm::Python>();
auto deck = parser.parseString(input); auto deck = parser.parseString(input);
@ -173,16 +189,12 @@ BOOST_AUTO_TEST_CASE(Cumulative)
} }
BOOST_AUTO_TEST_CASE(Error) BOOST_FIXTURE_TEST_CASE(Error, LogWarningFixture)
{ {
const std::string reference = R"(Finding the bubble point pressure failed for 3 cells [(2,1,1), (1,3,1), (1,4,1)] const std::string reference = R"(Finding the bubble point pressure failed for 3 cells [(2,1,1), (1,3,1), (1,4,1)]
Finding the dew point pressure failed for 3 cells [(5,1,1), (6,1,1), (7,1,1)] Finding the dew point pressure failed for 3 cells [(5,1,1), (6,1,1), (7,1,1)]
)"; )";
std::stringstream str;
Opm::OpmLog::addBackend("stream",
std::make_shared<Opm::StreamLog>(str, Opm::Log::MessageType::Warning));
Opm::Parser parser; Opm::Parser parser;
auto python = std::make_shared<Opm::Python>(); auto python = std::make_shared<Opm::Python>();
auto deck = parser.parseString(input); auto deck = parser.parseString(input);
@ -202,7 +214,7 @@ Finding the dew point pressure failed for 3 cells [(5,1,1), (6,1,1), (7,1,1)]
BOOST_CHECK_EQUAL(data, reference); BOOST_CHECK_EQUAL(data, reference);
} }
BOOST_AUTO_TEST_CASE(Fip) BOOST_FIXTURE_TEST_CASE(Fip, LogNoteFixture)
{ {
const std::string reference = R"( const std::string reference = R"(
================================================== ==================================================
@ -237,11 +249,6 @@ BOOST_AUTO_TEST_CASE(Fip)
)"; )";
std::stringstream str;
Opm::OpmLog::addBackend("stream",
std::make_shared<Opm::StreamLog>(str, Opm::Log::MessageType::Note));
Opm::Parser parser; Opm::Parser parser;
auto python = std::make_shared<Opm::Python>(); auto python = std::make_shared<Opm::Python>();
auto deck = parser.parseString(input); auto deck = parser.parseString(input);
@ -289,7 +296,7 @@ BOOST_AUTO_TEST_CASE(Fip)
BOOST_CHECK_EQUAL(str.str(), reference); BOOST_CHECK_EQUAL(str.str(), reference);
} }
BOOST_AUTO_TEST_CASE(FipResv) BOOST_FIXTURE_TEST_CASE(FipResv, LogNoteFixture)
{ {
const std::string reference = R"( const std::string reference = R"(
=================================== ===================================
@ -304,11 +311,6 @@ BOOST_AUTO_TEST_CASE(FipResv)
=========================================================================================== ===========================================================================================
)"; )";
std::stringstream str;
Opm::OpmLog::addBackend("stream",
std::make_shared<Opm::StreamLog>(str, Opm::Log::MessageType::Note));
Opm::Parser parser; Opm::Parser parser;
auto python = std::make_shared<Opm::Python>(); auto python = std::make_shared<Opm::Python>();
auto deck = parser.parseString(input); auto deck = parser.parseString(input);
@ -343,7 +345,7 @@ BOOST_AUTO_TEST_CASE(FipResv)
} }
BOOST_AUTO_TEST_CASE(Injection) BOOST_FIXTURE_TEST_CASE(Injection, LogNoteFixture)
{ {
const std::string reference = R"(=================================================== INJECTION REPORT ======================================== const std::string reference = R"(=================================================== INJECTION REPORT ========================================
: WELL : LOCATION : CTRL : CTRL : CTRL : OIL : WATER : GAS : FLUID : BHP OR : THP OR : : WELL : LOCATION : CTRL : CTRL : CTRL : OIL : WATER : GAS : FLUID : BHP OR : THP OR :
@ -356,10 +358,6 @@ BOOST_AUTO_TEST_CASE(Injection)
:--------:-----------:------:------:------:-----------:-----------:-----------:-----------:--------:--------: :--------:-----------:------:------:------:-----------:-----------:-----------:-----------:--------:--------:
)"; )";
std::stringstream str;
Opm::OpmLog::addBackend("stream",
std::make_shared<Opm::StreamLog>(str, Opm::Log::MessageType::Note));
Opm::Parser parser; Opm::Parser parser;
auto python = std::make_shared<Opm::Python>(); auto python = std::make_shared<Opm::Python>();
auto deck = parser.parseString(input); auto deck = parser.parseString(input);
@ -398,7 +396,7 @@ BOOST_AUTO_TEST_CASE(Injection)
} }
BOOST_AUTO_TEST_CASE(Production) BOOST_FIXTURE_TEST_CASE(Production, LogNoteFixture)
{ {
const std::string reference = R"(======================================================= PRODUCTION REPORT ======================================================= const std::string reference = R"(======================================================= PRODUCTION REPORT =======================================================
: WELL : LOCATION :CTRL: OIL : WATER : GAS : FLUID : WATER : GAS/OIL : WAT/GAS : BHP OR : THP OR : : WELL : LOCATION :CTRL: OIL : WATER : GAS : FLUID : WATER : GAS/OIL : WAT/GAS : BHP OR : THP OR :
@ -411,9 +409,6 @@ BOOST_AUTO_TEST_CASE(Production)
:--------:-----------:----:-----------:-----------:-----------:-----------:-----------:----------:------------:--------:--------: :--------:-----------:----:-----------:-----------:-----------:-----------:-----------:----------:------------:--------:--------:
)"; )";
std::stringstream str;
Opm::OpmLog::addBackend("stream",
std::make_shared<Opm::StreamLog>(str, Opm::Log::MessageType::Note));
Opm::Parser parser; Opm::Parser parser;
auto python = std::make_shared<Opm::Python>(); auto python = std::make_shared<Opm::Python>();