Skip to content

Commit e2b55cd

Browse files
committed
Merge bitcoin-core#335: test: Use QSignalSpy instead of QEventLoop
7eea659 qt, test: use qsignalspy instead of qeventloop (Jarol Rodriguez) Pull request description: This PR refactors our GUI `apptests` to use [QSignalSpy](https://doc.qt.io/qt-5/qsignalspy.html) instead of [QEventLoop](https://doc.qt.io/qt-5/qeventloop.html). `QSignalSpy` is more appropriate for our GUI test's as it is purpose-built for testing emission of signals and sets up its own `QEventLoop` when the `wait` function is called. ACKs for top commit: hebasto: ACK 7eea659, tested on Linux Mint 20.1 (Qt 5.12.8). promag: Code review ACK 7eea659. Tree-SHA512: 3adddbcc5efd726302b606980c9923025c44bb8ee16cb8a183e633e423179c0822db66de9ccba20dc5124fff34af4151a379c9cd18130625c60789ce809ee6fd
2 parents 710c8ba + 7eea659 commit e2b55cd

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

src/qt/test/apptests.cpp

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@
2020
#endif
2121

2222
#include <QAction>
23-
#include <QEventLoop>
2423
#include <QLineEdit>
2524
#include <QScopedPointer>
25+
#include <QSignalSpy>
2626
#include <QTest>
2727
#include <QTextEdit>
2828
#include <QtGlobal>
@@ -33,13 +33,14 @@ namespace {
3333
//! Call getblockchaininfo RPC and check first field of JSON output.
3434
void TestRpcCommand(RPCConsole* console)
3535
{
36-
QEventLoop loop;
3736
QTextEdit* messagesWidget = console->findChild<QTextEdit*>("messagesWidget");
38-
QObject::connect(messagesWidget, &QTextEdit::textChanged, &loop, &QEventLoop::quit);
3937
QLineEdit* lineEdit = console->findChild<QLineEdit*>("lineEdit");
38+
QSignalSpy mw_spy(messagesWidget, &QTextEdit::textChanged);
39+
QVERIFY(mw_spy.isValid());
4040
QTest::keyClicks(lineEdit, "getblockchaininfo");
4141
QTest::keyClick(lineEdit, Qt::Key_Return);
42-
loop.exec();
42+
QVERIFY(mw_spy.wait(1000));
43+
QCOMPARE(mw_spy.count(), 2);
4344
QString output = messagesWidget->toPlainText();
4445
UniValue value;
4546
value.read(output.right(output.size() - output.lastIndexOf(QChar::ObjectReplacementCharacter) - 1).toStdString());

0 commit comments

Comments
 (0)