From 51b8738ed8a0e0ac4304188712949756dce04d63 Mon Sep 17 00:00:00 2001 From: Aline Gondim Santos <aline.gondimsantos@savoirfairelinux.com> Date: Tue, 5 Sep 2023 08:32:32 -0300 Subject: [PATCH] ut_plugins: fix reparsing manifest Change-Id: Id199f9210d0b05981fa9345b4ae689a3fd155041 --- src/plugin/jamipluginmanager.cpp | 6 ++++-- src/plugin/jamipluginmanager.h | 5 ++++- test/unitTest/plugins/plugins.cpp | 12 +++++++----- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/plugin/jamipluginmanager.cpp b/src/plugin/jamipluginmanager.cpp index fdba70d874..72ddf46f6a 100644 --- a/src/plugin/jamipluginmanager.cpp +++ b/src/plugin/jamipluginmanager.cpp @@ -67,11 +67,13 @@ JamiPluginManager::getPluginAuthor(const std::string& rootPath, const std::strin } std::map<std::string, std::string> -JamiPluginManager::getPluginDetails(const std::string& rootPath) +JamiPluginManager::getPluginDetails(const std::string& rootPath, bool reset) { auto detailsIt = pluginDetailsMap_.find(rootPath); if (detailsIt != pluginDetailsMap_.end()) { - return detailsIt->second; + if (!reset) + return detailsIt->second; + pluginDetailsMap_.erase(detailsIt); } std::map<std::string, std::string> details = PluginUtils::parseManifestFile( diff --git a/src/plugin/jamipluginmanager.h b/src/plugin/jamipluginmanager.h index a1c8001e98..aac8054b1b 100644 --- a/src/plugin/jamipluginmanager.h +++ b/src/plugin/jamipluginmanager.h @@ -67,9 +67,12 @@ public: * @brief Parses a manifest file and return its content * along with other internally added values. * @param rootPath installation path + * @param reset If true, overrides previous details values + * Reset is only used in the UT for now, but it can be useful + * if we want to reset plugins language without restarting the application * @return Map where the keyset is {"id", "name", "description", "version", "iconPath", "imagePath","soPath"} */ - std::map<std::string, std::string> getPluginDetails(const std::string& rootPath); + std::map<std::string, std::string> getPluginDetails(const std::string& rootPath, bool reset = false); /** * @brief Returns a vector with installed plugins diff --git a/test/unitTest/plugins/plugins.cpp b/test/unitTest/plugins/plugins.cpp index 25ab6d9941..6dc24e2c34 100644 --- a/test/unitTest/plugins/plugins.cpp +++ b/test/unitTest/plugins/plugins.cpp @@ -507,20 +507,22 @@ PluginsTest::testTranslations() Manager::instance().pluginPreferences.setPluginsEnabled(true); setenv("JAMI_LANG", "en", true); Manager::instance().getJamiPluginManager().installPlugin(jplPath_, true); - auto preferences = Manager::instance().getJamiPluginManager().getPluginPreferences(installationPath_, ""); - CPPUNIT_ASSERT(!preferences.empty()); + auto preferencesValuesEN = Manager::instance().getJamiPluginManager().getPluginPreferencesValuesMap(installationPath_, ""); - auto detailsValuesEN = Manager::instance().getJamiPluginManager().getPluginDetails(installationPath_); + auto detailsValuesEN = Manager::instance().getJamiPluginManager().getPluginDetails(installationPath_, true); + + CPPUNIT_ASSERT(!preferencesValuesEN.empty()); + CPPUNIT_ASSERT(!detailsValuesEN.empty()); setenv("JAMI_LANG", "fr", true); CPPUNIT_ASSERT(Manager::instance().getJamiPluginManager().getPluginPreferencesValuesMap(installationPath_, "") != preferencesValuesEN); - CPPUNIT_ASSERT(Manager::instance().getJamiPluginManager().getPluginDetails(installationPath_) != detailsValuesEN); + CPPUNIT_ASSERT(Manager::instance().getJamiPluginManager().getPluginDetails(installationPath_, true) != detailsValuesEN); setenv("JAMI_LANG", "en", true); CPPUNIT_ASSERT(Manager::instance().getJamiPluginManager().getPluginPreferencesValuesMap(installationPath_, "") == preferencesValuesEN); - CPPUNIT_ASSERT(Manager::instance().getJamiPluginManager().getPluginDetails(installationPath_) == detailsValuesEN); + CPPUNIT_ASSERT(Manager::instance().getJamiPluginManager().getPluginDetails(installationPath_, true) == detailsValuesEN); CPPUNIT_ASSERT(!Manager::instance().getJamiPluginManager().uninstallPlugin(installationPath_)); } -- GitLab