From e2dbc33ac0e39ddbe45caea227dbe65874dbef4f Mon Sep 17 00:00:00 2001 From: Ming Rui Zhang <mingrui.zhang@savoirfairelinux.com> Date: Mon, 26 Jul 2021 10:46:47 -0400 Subject: [PATCH] test: enhance the google unit tests of the client 1. Move JAMI_DATA_HOME, JAMI_CONFIG_HOME, JAMI_CACHE_HOME setup into individual test main entry 2. Use google test assertion macros instead of Qt 3. Add QT_QPA_FONTDIR to avoid QFont warnings 4. Tests will now fail if the env variables cannot be set Change-Id: I63f6498d26b646d8ebc60799d8797fd5f13b54f9 --- make-client.py | 11 +++------- tests/qml/main.cpp | 13 ++++++++++- tests/unittests/account_unittest.cpp | 20 ++++++++--------- tests/unittests/contact_unittest.cpp | 33 +++++++++++++++------------- tests/unittests/main_unittest.cpp | 14 ++++++++++-- 5 files changed, 55 insertions(+), 36 deletions(-) diff --git a/make-client.py b/make-client.py index af2478432..d512fe1a3 100644 --- a/make-client.py +++ b/make-client.py @@ -32,10 +32,7 @@ qml_test_project = build_dir + '\\tests\\qml_tests.vcxproj' qml_test_exe = this_dir + '\\x64\\test\\qml_tests.exe -input ' + this_dir + '\\tests\\qml' unit_test_exe = this_dir + '\\x64\\test\\unittests.exe' -# test env path -test_data_dir = temp_path + '\\jami_test\\jami' -test_config_dir = temp_path + '\\jami_test\\.config' -test_cache_dir = temp_path + '\\jami_test\\.cache' +windows_font_dir = 'C:\\Windows\\Fonts' class TestBuilding(Enum): NoTests = 0 @@ -320,10 +317,8 @@ def run_tests(mute_jamid, output_to_files): os.environ["QT_QPA_PLATFORM"] = 'offscreen' os.environ["QT_QUICK_BACKEND"] = 'software' - # set test env variables - os.environ["JAMI_DATA_HOME"] = test_data_dir - os.environ["JAMI_CONFIG_HOME"] = test_config_dir - os.environ["JAMI_CACHE_HOME"] = test_cache_dir + # provide font dir + os.environ["QT_QPA_FONTDIR"] = windows_font_dir for test_exe_command in test_exe_command_list: if (execute_cmd(test_exe_command, True)): diff --git a/tests/qml/main.cpp b/tests/qml/main.cpp index 671a5b58f..86ad4856a 100644 --- a/tests/qml/main.cpp +++ b/tests/qml/main.cpp @@ -124,6 +124,18 @@ private: int main(int argc, char** argv) { + QDir tempDir(QStandardPaths::writableLocation(QStandardPaths::TempLocation)); + + auto jamiDataDir = tempDir.absolutePath() + "\\jami_test\\jami"; + auto jamiConfigDir = tempDir.absolutePath() + "\\jami_test\\.config"; + auto jamiCacheDir = tempDir.absolutePath() + "\\jami_test\\.cache"; + + bool envSet = qputenv("JAMI_DATA_HOME", jamiDataDir.toLocal8Bit()); + envSet &= qputenv("JAMI_CONFIG_HOME", jamiConfigDir.toLocal8Bit()); + envSet &= qputenv("JAMI_CACHE_HOME", jamiCacheDir.toLocal8Bit()); + if (!envSet) + return 1; + bool muteDring {false}; // Remove "-mutejamid" from argv, as quick_test_main_with_setup() will @@ -139,7 +151,6 @@ main(int argc, char** argv) argc = std::distance(argv, end); } - QStandardPaths::setTestModeEnabled(true); QtWebEngine::initialize(); QTEST_SET_MAIN_SOURCE_PATH diff --git a/tests/unittests/account_unittest.cpp b/tests/unittests/account_unittest.cpp index 685aaf837..51b8e60ed 100644 --- a/tests/unittests/account_unittest.cpp +++ b/tests/unittests/account_unittest.cpp @@ -60,11 +60,11 @@ TEST_F(AccountFixture, CreateSIPAccountTest) // Create SIP Acc globalEnv.accountAdapter->createSIPAccount(QVariantMap()); - QVERIFY(accountAddedSpy.wait()); - QCOMPARE(accountAddedSpy.count(), 1); + accountAddedSpy.wait(); + EXPECT_EQ(accountAddedSpy.count(), 1); QList<QVariant> accountAddedArguments = accountAddedSpy.takeFirst(); - QVERIFY(accountAddedArguments.at(0).type() == QVariant::String); + EXPECT_TRUE(accountAddedArguments.at(0).type() == QVariant::String); // Select the created account globalEnv.lrcInstance->set_currentAccountId(accountAddedArguments.at(0).toString()); @@ -76,18 +76,18 @@ TEST_F(AccountFixture, CreateSIPAccountTest) QSignalSpy accountStatusChangedSpy(&globalEnv.lrcInstance->accountModel(), &NewAccountModel::accountStatusChanged); - QVERIFY(accountStatusChangedSpy.wait()); - QCOMPARE(accountStatusChangedSpy.count(), 1); + accountStatusChangedSpy.wait(); + EXPECT_GE(accountStatusChangedSpy.count(), 1); // Remove the account - globalEnv.lrcInstance->accountModel().removeAccount( - globalEnv.lrcInstance->get_currentAccountId()); - QSignalSpy accountRemovedSpy(&globalEnv.lrcInstance->accountModel(), &NewAccountModel::accountRemoved); - QVERIFY(accountRemovedSpy.wait()); - QCOMPARE(accountRemovedSpy.count(), 1); + globalEnv.lrcInstance->accountModel().removeAccount( + globalEnv.lrcInstance->get_currentAccountId()); + + accountRemovedSpy.wait(); + EXPECT_EQ(accountRemovedSpy.count(), 1); accountListSize = globalEnv.lrcInstance->accountModel().getAccountList().size(); ASSERT_EQ(accountListSize, 0); diff --git a/tests/unittests/contact_unittest.cpp b/tests/unittests/contact_unittest.cpp index cd7ff6265..6a0fbf2f6 100644 --- a/tests/unittests/contact_unittest.cpp +++ b/tests/unittests/contact_unittest.cpp @@ -48,11 +48,11 @@ TEST_F(ContactFixture, AddSIPContactTest) // Create SIP Acc globalEnv.accountAdapter->createSIPAccount(QVariantMap()); - QVERIFY(accountAddedSpy.wait()); - QCOMPARE(accountAddedSpy.count(), 1); + accountAddedSpy.wait(); + EXPECT_EQ(accountAddedSpy.count(), 1); QList<QVariant> accountAddedArguments = accountAddedSpy.takeFirst(); - QVERIFY(accountAddedArguments.at(0).type() == QVariant::String); + EXPECT_TRUE(accountAddedArguments.at(0).type() == QVariant::String); // Select the created account globalEnv.lrcInstance->set_currentAccountId(accountAddedArguments.at(0).toString()); @@ -61,8 +61,8 @@ TEST_F(ContactFixture, AddSIPContactTest) QSignalSpy accountStatusChangedSpy(&globalEnv.lrcInstance->accountModel(), &lrc::api::NewAccountModel::accountStatusChanged); - QVERIFY(accountStatusChangedSpy.wait()); - QCOMPARE(accountStatusChangedSpy.count(), 1); + accountStatusChangedSpy.wait(); + EXPECT_GE(accountStatusChangedSpy.count(), 1); // ModelUpdated signal spy QSignalSpy modelUpdatedSpy(globalEnv.lrcInstance->getCurrentContactModel(), @@ -71,11 +71,11 @@ TEST_F(ContactFixture, AddSIPContactTest) // Add temp contact test globalEnv.lrcInstance->getCurrentConversationModel()->setFilter("test"); - QVERIFY(modelUpdatedSpy.wait()); - QCOMPARE(modelUpdatedSpy.count(), 1); + modelUpdatedSpy.wait(); + EXPECT_EQ(modelUpdatedSpy.count(), 1); QList<QVariant> modelUpdatedArguments = modelUpdatedSpy.takeFirst(); - QVERIFY(modelUpdatedArguments.at(0).type() == QVariant::String); + EXPECT_TRUE(modelUpdatedArguments.at(0).type() == QVariant::String); // Get conversation id auto convId = globalEnv.lrcInstance @@ -89,16 +89,19 @@ TEST_F(ContactFixture, AddSIPContactTest) globalEnv.lrcInstance->getCurrentConversationModel()->makePermanent(convId); - QVERIFY(contactAddedSpy.wait()); - QCOMPARE(contactAddedSpy.count(), 1); + contactAddedSpy.wait(); + EXPECT_EQ(contactAddedSpy.count(), 1); // Remove the account + QSignalSpy accountRemovedSpy(&globalEnv.lrcInstance->accountModel(), + &lrc::api::NewAccountModel::accountRemoved); + globalEnv.lrcInstance->accountModel().removeAccount( globalEnv.lrcInstance->get_currentAccountId()); - QSignalSpy accountRemovedSpy(&globalEnv.lrcInstance->accountModel(), - &lrc::api::NewAccountModel::accountRemoved); + accountRemovedSpy.wait(); + EXPECT_EQ(accountRemovedSpy.count(), 1); - QVERIFY(accountRemovedSpy.wait()); - QCOMPARE(accountRemovedSpy.count(), 1); -} \ No newline at end of file + auto accountListSize = globalEnv.lrcInstance->accountModel().getAccountList().size(); + ASSERT_EQ(accountListSize, 0); +} diff --git a/tests/unittests/main_unittest.cpp b/tests/unittests/main_unittest.cpp index 86b748831..72d3b5e6f 100644 --- a/tests/unittests/main_unittest.cpp +++ b/tests/unittests/main_unittest.cpp @@ -27,6 +27,18 @@ TestEnvironment globalEnv; int main(int argc, char* argv[]) { + QDir tempDir(QStandardPaths::writableLocation(QStandardPaths::TempLocation)); + + auto jamiDataDir = tempDir.absolutePath() + "\\jami_test\\jami"; + auto jamiConfigDir = tempDir.absolutePath() + "\\jami_test\\.config"; + auto jamiCacheDir = tempDir.absolutePath() + "\\jami_test\\.cache"; + + bool envSet = qputenv("JAMI_DATA_HOME", jamiDataDir.toLocal8Bit()); + envSet &= qputenv("JAMI_CONFIG_HOME", jamiConfigDir.toLocal8Bit()); + envSet &= qputenv("JAMI_CACHE_HOME", jamiCacheDir.toLocal8Bit()); + if (!envSet) + return 1; + // Remove "-mutejamid" from argv, as quick_test_main_with_setup() will // fail if given an invalid command-line argument. auto end = std::remove_if(argv + 1, argv + argc, [](char* argv) { @@ -40,8 +52,6 @@ main(int argc, char* argv[]) argc = std::distance(argv, end); } - QStandardPaths::setTestModeEnabled(true); - QApplication a(argc, argv); a.processEvents(); -- GitLab