mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-26 03:03:22 -03:00
Merge bitcoin-core/gui#337: test: Use Regex Search in Apptests
6969b2bb98
qt, test: use regex search in apptests (Jarol Rodriguez)d09d1cf1a2
qt, test: introduce FindInConsole function (Jarol Rodriguez) Pull request description: This PR refactors our GUI `apptests` so that it uses regex search to find values in our console/qtextedit output regardless if it is in `plaintext`, `html`, or `markdown`. This introduces a new function `FindInConsole` which uses [QRegularExpression](https://doc.qt.io/qt-5/qregularexpression.html) to search the output of the console. The function must be provided with a [perl compatible regex](https://www.debuggex.com/cheatsheet/regex/pcre) pattern which wants to match a single group. The function then returns the matched group. If no match is found, an empty `QString` is returned. We then use this new function in `TestRpcCommand` to find the current `chain` value instead of reading with univalue. This approach can apply to a wider variety of testing scenarios as we can reuse this function to search for values when the console output is exported in a different format than `plaintext`. As an example, A follow up PR will add tests for console resizing and needs to look for the size in `html` tags after exporting the console text with `toHtml()`. ACKs for top commit: hebasto: ACK6969b2bb98
ShaMan239: ACK6969b2bb98
Tree-SHA512: 4db8bcd4a1acc4539ca64bbd7de572fe7dd6afc3e95108235abfc2891585bc4db3a56a33928fa38e8d44ac87023ce0dee3abcfadfbcd4440e3a21a52fef02536
This commit is contained in:
commit
be37037e8e
1 changed files with 12 additions and 5 deletions
|
@ -12,7 +12,6 @@
|
|||
#include <qt/rpcconsole.h>
|
||||
#include <shutdown.h>
|
||||
#include <test/util/setup_common.h>
|
||||
#include <univalue.h>
|
||||
#include <validation.h>
|
||||
|
||||
#if defined(HAVE_CONFIG_H)
|
||||
|
@ -21,8 +20,10 @@
|
|||
|
||||
#include <QAction>
|
||||
#include <QLineEdit>
|
||||
#include <QRegularExpression>
|
||||
#include <QScopedPointer>
|
||||
#include <QSignalSpy>
|
||||
#include <QString>
|
||||
#include <QTest>
|
||||
#include <QTextEdit>
|
||||
#include <QtGlobal>
|
||||
|
@ -30,6 +31,13 @@
|
|||
#include <QtTest/QtTestGui>
|
||||
|
||||
namespace {
|
||||
//! Regex find a string group inside of the console output
|
||||
QString FindInConsole(const QString& output, const QString& pattern)
|
||||
{
|
||||
const QRegularExpression re(pattern);
|
||||
return re.match(output).captured(1);
|
||||
}
|
||||
|
||||
//! Call getblockchaininfo RPC and check first field of JSON output.
|
||||
void TestRpcCommand(RPCConsole* console)
|
||||
{
|
||||
|
@ -41,10 +49,9 @@ void TestRpcCommand(RPCConsole* console)
|
|||
QTest::keyClick(lineEdit, Qt::Key_Return);
|
||||
QVERIFY(mw_spy.wait(1000));
|
||||
QCOMPARE(mw_spy.count(), 4);
|
||||
QString output = messagesWidget->toPlainText();
|
||||
UniValue value;
|
||||
value.read(output.right(output.size() - output.lastIndexOf(QChar::ObjectReplacementCharacter) - 1).toStdString());
|
||||
QCOMPARE(value["chain"].get_str(), std::string("regtest"));
|
||||
const QString output = messagesWidget->toPlainText();
|
||||
const QString pattern = QStringLiteral("\"chain\": \"(\\w+)\"");
|
||||
QCOMPARE(FindInConsole(output, pattern), QString("regtest"));
|
||||
}
|
||||
} // namespace
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue