From 49cf63522e202caf326bad161ff6fa05d1076566 Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Tue, 5 Mar 2024 07:02:54 +0000 Subject: [PATCH 1/2] qt, test: Set organization name If `setOrganizationName()` and `setApplicationName()` has not been previously called, the `QSettings` object will not be able to read or write any settings. --- src/qt/test/optiontests.cpp | 11 +++++++++++ src/qt/test/test_main.cpp | 5 ++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/qt/test/optiontests.cpp b/src/qt/test/optiontests.cpp index b76e9ef499f21..5f9f2cb4491e4 100644 --- a/src/qt/test/optiontests.cpp +++ b/src/qt/test/optiontests.cpp @@ -50,6 +50,17 @@ void OptionTests::migrateSettings() settings.sync(); + QVERIFY(settings.contains("nDatabaseCache")); + QVERIFY(settings.contains("nThreadsScriptVerif")); + QVERIFY(settings.contains("fUseUPnP")); + QVERIFY(settings.contains("fListen")); + QVERIFY(settings.contains("bPrune")); + QVERIFY(settings.contains("nPruneSize")); + QVERIFY(settings.contains("fUseProxy")); + QVERIFY(settings.contains("addrProxy")); + QVERIFY(settings.contains("fUseSeparateProxyTor")); + QVERIFY(settings.contains("addrSeparateProxyTor")); + OptionsModel options{m_node}; bilingual_str error; QVERIFY(options.Init(error)); diff --git a/src/qt/test/test_main.cpp b/src/qt/test/test_main.cpp index e45fc1ced8451..b764d4e7bac2f 100644 --- a/src/qt/test/test_main.cpp +++ b/src/qt/test/test_main.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include @@ -24,6 +25,7 @@ #include #include #include +#include #include #include @@ -84,7 +86,8 @@ int main(int argc, char* argv[]) #endif BitcoinApplication app; - app.setApplicationName("Bitcoin-Qt-test"); + app.setOrganizationName(QAPP_ORG_NAME); + app.setApplicationName(QAPP_APP_NAME_DEFAULT "-test"); app.createNode(*init); int num_test_failures{0}; From 0dcbad341b0a8420a899c6dce0db56dd0deaa036 Mon Sep 17 00:00:00 2001 From: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com> Date: Tue, 5 Mar 2024 07:39:48 +0000 Subject: [PATCH 2/2] qt, test: Clean settings after tests A test suite should not leave any artifacts except for those explicitly expected. This change is easy to review with `git diff --ignore-all-space` command. --- src/qt/test/test_main.cpp | 48 +++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 20 deletions(-) diff --git a/src/qt/test/test_main.cpp b/src/qt/test/test_main.cpp index b764d4e7bac2f..8decc27bd7751 100644 --- a/src/qt/test/test_main.cpp +++ b/src/qt/test/test_main.cpp @@ -85,37 +85,45 @@ int main(int argc, char* argv[]) setenv("QT_QPA_PLATFORM", "minimal", 0 /* overwrite */); #endif - BitcoinApplication app; - app.setOrganizationName(QAPP_ORG_NAME); - app.setApplicationName(QAPP_APP_NAME_DEFAULT "-test"); - app.createNode(*init); + + QCoreApplication::setOrganizationName(QAPP_ORG_NAME); + QCoreApplication::setApplicationName(QAPP_APP_NAME_DEFAULT "-test"); int num_test_failures{0}; - AppTests app_tests(app); - num_test_failures += QTest::qExec(&app_tests); + { + BitcoinApplication app; + app.createNode(*init); + + AppTests app_tests(app); + num_test_failures += QTest::qExec(&app_tests); - OptionTests options_tests(app.node()); - num_test_failures += QTest::qExec(&options_tests); + OptionTests options_tests(app.node()); + num_test_failures += QTest::qExec(&options_tests); - URITests test1; - num_test_failures += QTest::qExec(&test1); + URITests test1; + num_test_failures += QTest::qExec(&test1); - RPCNestedTests test3(app.node()); - num_test_failures += QTest::qExec(&test3); + RPCNestedTests test3(app.node()); + num_test_failures += QTest::qExec(&test3); #ifdef ENABLE_WALLET - WalletTests test5(app.node()); - num_test_failures += QTest::qExec(&test5); + WalletTests test5(app.node()); + num_test_failures += QTest::qExec(&test5); - AddressBookTests test6(app.node()); - num_test_failures += QTest::qExec(&test6); + AddressBookTests test6(app.node()); + num_test_failures += QTest::qExec(&test6); #endif - if (num_test_failures) { - qWarning("\nFailed tests: %d\n", num_test_failures); - } else { - qDebug("\nAll tests passed.\n"); + if (num_test_failures) { + qWarning("\nFailed tests: %d\n", num_test_failures); + } else { + qDebug("\nAll tests passed.\n"); + } } + + QSettings settings; + settings.clear(); + return num_test_failures; }