LCOV - code coverage report
Current view: top level - src/libs/tools/tests - testtool_plugindatabase.cpp (source / functions) Hit Total Coverage
Test: coverage-filtered.info Lines: 36 36 100.0 %
Date: 2019-09-12 12:28:41 Functions: 8 11 72.7 %

          Line data    Source code
       1             : /**
       2             :  * @file
       3             :  *
       4             :  * @brief Tests for the plugindatabase class and implementations of it
       5             :  *
       6             :  * @copyright BSD License (see LICENSE.md or https://www.libelektra.org)
       7             :  *
       8             :  */
       9             : 
      10             : #include <algorithm>
      11             : #include <iostream>
      12             : 
      13             : #include <kdbconfig.h>
      14             : #include <plugindatabase.hpp>
      15             : 
      16             : #include <gtest/gtest.h>
      17             : 
      18             : 
      19          20 : TEST (PluginVariantsDatabase, listAllPlugins)
      20             : {
      21             :         using namespace kdb;
      22             :         using namespace kdb::tools;
      23             : 
      24           4 :         KeySet conf (0, KS_END);
      25           4 :         PluginVariantDatabase db (conf);
      26           4 :         std::vector<std::string> plugins (db.listAllPlugins ());
      27             : 
      28           4 :         ModulesPluginDatabase refDb;
      29           4 :         std::vector<std::string> allPlugins (refDb.listAllPlugins ());
      30             : 
      31          10 :         ASSERT_EQ (allPlugins.size (), plugins.size ());
      32             : 
      33         222 :         for (auto & elem : allPlugins)
      34             :         {
      35        1284 :                 ASSERT_TRUE (std::find (plugins.begin (), plugins.end (), elem) != plugins.end ());
      36             :         }
      37             : 
      38         222 :         for (auto & elem : plugins)
      39             :         {
      40        1284 :                 ASSERT_TRUE (std::find (allPlugins.begin (), allPlugins.end (), elem) != allPlugins.end ());
      41             :         }
      42             : }
      43             : 
      44          20 : TEST (PluginVariantsDatabase, listAllPluginsWithDisabled)
      45             : {
      46             :         using namespace kdb;
      47             :         using namespace kdb::tools;
      48             : 
      49           4 :         KeySet conf (2, *Key ("system/elektra/plugins/dump/disable", KEY_VALUE, "1", KEY_END),
      50          10 :                      *Key ("system/elektra/plugins/simpleini/disable", KEY_VALUE, "1", KEY_END), KS_END);
      51           4 :         PluginVariantDatabase db (conf);
      52           4 :         std::vector<std::string> plugins (db.listAllPlugins ());
      53             : 
      54           4 :         ModulesPluginDatabase refDb;
      55           4 :         std::vector<std::string> allPlugins (refDb.listAllPlugins ());
      56             : 
      57             :         // only execute if plugins dump & simpleini is available
      58          16 :         if (std::find (allPlugins.begin (), allPlugins.end (), "dump") != allPlugins.end () &&
      59           8 :             std::find (allPlugins.begin (), allPlugins.end (), "simpleini") != allPlugins.end ())
      60             :         {
      61          10 :                 ASSERT_EQ (allPlugins.size () - 2, plugins.size ());
      62          12 :                 ASSERT_TRUE (std::find (plugins.begin (), plugins.end (), "dump") == plugins.end ());
      63          12 :                 ASSERT_TRUE (std::find (plugins.begin (), plugins.end (), "simpleini") == plugins.end ());
      64             :         }
      65             : }
      66             : 
      67          20 : TEST (PluginVariantsDatabase, getPluginVariants)
      68             : {
      69             :         using namespace kdb;
      70             :         using namespace kdb::tools;
      71             : 
      72           4 :         KeySet conf (0, KS_END);
      73           4 :         PluginVariantDatabase db (conf);
      74           4 :         std::vector<std::string> allPlugins (db.listAllPlugins ());
      75             : 
      76           8 :         if (std::find (allPlugins.begin (), allPlugins.end (), "dump") != allPlugins.end ())
      77             :         {
      78          12 :                 PluginSpec dump ("dump");
      79           4 :                 std::vector<PluginSpec> dump_variants (db.getPluginVariants (dump));
      80           8 :                 ASSERT_EQ (0, dump_variants.size ());
      81             :         }
      82             : 
      83             : #ifndef ENABLE_ASAN
      84             :         // ASAN reports memory leaks for the Augeas plugin on macOS: https://travis-ci.org/sanssecours/elektra/jobs/418524229
      85           8 :         if (std::find (allPlugins.begin (), allPlugins.end (), "augeas") != allPlugins.end ())
      86             :         {
      87          12 :                 PluginSpec augeas ("augeas");
      88           4 :                 std::vector<PluginSpec> augeas_variants (db.getPluginVariants (augeas));
      89           8 :                 ASSERT_TRUE (augeas_variants.size () > 0);
      90             :         }
      91             : #endif
      92           6 : }

Generated by: LCOV version 1.13