From 8891166382bb3ccfbdfd60996a5bfc9776e3667b 2017-01-19 12:43:21 From: Vitaly Takmazov Date: 2017-01-19 12:43:21 Subject: [PATCH] libpurple: read boolean values from config as bool. Fixes #166 and #177 --- diff --git a/backends/libpurple/main.cpp b/backends/libpurple/main.cpp index 6189e46104284ce623fac266b1ab501b72c375ab..b931c3adf096c9ee710b08ba28965ed1b1f44332 100644 --- a/backends/libpurple/main.cpp +++ b/backends/libpurple/main.cpp @@ -278,7 +278,7 @@ class SpectrumNetworkPlugin : public NetworkPlugin { found = true; switch (type) { case PURPLE_PREF_BOOLEAN: - purple_account_set_bool_wrapped(account, strippedKey.c_str(), fromString(keyItem.second.as())); + purple_account_set_bool_wrapped(account, strippedKey.c_str(), keyItem.second.as()); break; case PURPLE_PREF_INT: diff --git a/libtransport/Config.cpp b/libtransport/Config.cpp index f9324113f1613aaf026ddc09ba6a3c81e74363d1..c18b5f777e798987ddc637c7b9e5529e9bc28c50 100644 --- a/libtransport/Config.cpp +++ b/libtransport/Config.cpp @@ -222,7 +222,7 @@ bool Config::load(std::istream &ifs, boost::program_options::options_description if (opt.value[0] == "true" || opt.value[0] == "1") { m_unregistered[opt.string_key] = variable_value(true, false); } - else if (opt.value[0] == "true" || opt.value[0] == "1") { + else if (opt.value[0] == "false" || opt.value[0] == "0") { m_unregistered[opt.string_key] = variable_value(false, false); } else { diff --git a/tests/libtransport/config.cpp b/tests/libtransport/config.cpp index 8062b6e5829de3cd96853d9610abb22d3e2407db..13d7c1f9292195f0af017820527d5249fb7e1724 100644 --- a/tests/libtransport/config.cpp +++ b/tests/libtransport/config.cpp @@ -17,6 +17,7 @@ class ConfigTest : public CPPUNIT_NS :: TestFixture{ CPPUNIT_TEST_SUITE(ConfigTest); CPPUNIT_TEST(setStringTwice); CPPUNIT_TEST(setUnknownBool); + CPPUNIT_TEST(enumerateConfigSection); CPPUNIT_TEST(updateBackendConfig); CPPUNIT_TEST(updateBackendConfigJIDEscaping); CPPUNIT_TEST(unregisteredList); @@ -44,9 +45,21 @@ class ConfigTest : public CPPUNIT_NS :: TestFixture{ void setUnknownBool() { char *argv[3] = {"binary", "--service.jids=localhost", NULL}; Config cfg(2, argv); - std::istringstream ifs("service.irc_send_pass = 1\n"); + std::istringstream ifs("service.irc_send_pass = 1\npurple.group-chat-open=0\n"); cfg.load(ifs); CPPUNIT_ASSERT_EQUAL(true, CONFIG_BOOL_DEFAULTED(&cfg, "service.irc_send_pass", false)); + CPPUNIT_ASSERT_EQUAL(false, CONFIG_BOOL_DEFAULTED(&cfg, "purple.group-chat-open", true)); + } + + void enumerateConfigSection() { + char *argv[3] = {"binary", "--service.jids=localhost", NULL}; + Config cfg(2, argv); + std::istringstream ifs("purple.irc_send_pass=1\npurple.group-chat-open=false\npurple.test=passed"); + cfg.load(ifs); + Config::SectionValuesCont purpleConfigValues = cfg.getSectionValues("purple"); + CPPUNIT_ASSERT_EQUAL(true, purpleConfigValues["purple.irc_send_pass"].as()); + CPPUNIT_ASSERT_EQUAL(false, purpleConfigValues["purple.group-chat-open"].as()); + CPPUNIT_ASSERT_EQUAL(std::string("passed"), purpleConfigValues["purple.test"].as()); } void updateBackendConfig() {