diff --git a/src/plugin/jamipluginmanager.cpp b/src/plugin/jamipluginmanager.cpp index fdba70d874f2751cfd0eceea28ca7aa5757c4dcb..72ddf46f6ae9ff9923e4a283898f8305fa849ffd 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 a1c8001e98cb0c69f58b1b2328c4ce949b1cd5f8..aac8054b1b469511368fd9484861b7e078ff0ae1 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 25ab6d9941dd8377d99bd131d6e216a6833bf245..6dc24e2c341875cd4128c5d84bf4147f279fbd10 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_)); }