Branch data Line data Source code
# 1 : : // Copyright (c) 2019-2021 The Bitcoin Core developers # 2 : : // Distributed under the MIT software license, see the accompanying # 3 : : // file COPYING or http://www.opensource.org/licenses/mit-license.php. # 4 : : # 5 : : #include <test/util/logging.h> # 6 : : # 7 : : #include <logging.h> # 8 : : #include <noui.h> # 9 : : #include <tinyformat.h> # 10 : : # 11 : : #include <stdexcept> # 12 : : # 13 : : DebugLogHelper::DebugLogHelper(std::string message, MatchFn match) # 14 : : : m_message{std::move(message)}, m_match(std::move(match)) # 15 : 17 : { # 16 : 17 : m_print_connection = LogInstance().PushBackCallback( # 17 : 399 : [this](const std::string& s) { # 18 [ + + ]: 399 : if (m_found) return; # 19 [ + + ][ + + ]: 385 : m_found = s.find(m_message) != std::string::npos && m_match(&s); # 20 : 385 : }); # 21 : 17 : noui_test_redirect(); # 22 : 17 : } # 23 : : # 24 : : void DebugLogHelper::check_found() # 25 : 17 : { # 26 : 17 : noui_reconnect(); # 27 : 17 : LogInstance().DeleteCallback(m_print_connection); # 28 [ + + ][ - + ]: 17 : if (!m_found && m_match(nullptr)) { # 29 : 0 : throw std::runtime_error(strprintf("'%s' not found in debug log\n", m_message)); # 30 : 0 : } # 31 : 17 : }