34
//GLogFunc realLogHandler;
38
std::map<GLogLevelFlags,int> logCounts;
40
void testLogCount(GLogLevelFlags log_level, int /*expected*/)
34
GLogFunc realLogHandler;
36
std::map<GLogLevelFlags,size_t> expected_log;
37
std::map<GLogLevelFlags,std::vector<std::string>> log;
39
void test_log_counts()
43
EXPECT_EQ(expected, logCounts[log_level]);
46
logCounts.erase(log_level);
41
const GLogLevelFlags levels_to_test[] = { G_LOG_LEVEL_ERROR,
44
G_LOG_LEVEL_WARNING };
46
for(const auto& level : levels_to_test)
48
const auto& v = log[level];
49
const auto n = v.size();
51
EXPECT_EQ(expected_log[level], n);
53
if (expected_log[level] != n)
54
for (size_t i=0; i<n; ++i)
55
g_message("%d %s", (n+1), v[i].c_str());
51
62
static void default_log_handler(const gchar * log_domain,
52
63
GLogLevelFlags log_level,
53
64
const gchar * message,
56
g_print("%s - %d - %s\n", log_domain, (int)log_level, message);
57
static_cast<GlibFixture*>(self)->logCounts[log_level]++;
67
auto tmp = g_strdup_printf ("%s:%d \"%s\"", log_domain, (int)log_level, message);
68
static_cast<GlibFixture*>(self)->log[log_level].push_back(tmp);
74
void increment_expected_errors(GLogLevelFlags level, int n=1)
76
expected_log[level] += n;
62
79
virtual void SetUp()
64
81
setlocale(LC_ALL, "C.UTF-8");
66
83
loop = g_main_loop_new(nullptr, false);
68
//g_log_set_default_handler(default_log_handler, this);
70
// only use local, temporary settings
71
//g_assert(g_setenv("GSETTINGS_SCHEMA_DIR", SCHEMA_DIR, true));
72
g_assert(g_setenv("GSETTINGS_BACKEND", "memory", true));
73
//g_debug("SCHEMA_DIR is %s", SCHEMA_DIR);
85
g_log_set_default_handler(default_log_handler, this);
75
87
g_unsetenv("DISPLAY");
79
90
virtual void TearDown()
82
// confirm there aren't any unexpected log messages
83
EXPECT_EQ(0, logCounts[G_LOG_LEVEL_ERROR]);
84
EXPECT_EQ(0, logCounts[G_LOG_LEVEL_CRITICAL]);
85
EXPECT_EQ(0, logCounts[G_LOG_LEVEL_WARNING]);
86
EXPECT_EQ(0, logCounts[G_LOG_LEVEL_MESSAGE]);
87
EXPECT_EQ(0, logCounts[G_LOG_LEVEL_INFO]);
90
// revert to glib's log handler
91
//g_log_set_default_handler(realLogHandler, this);
94
g_log_set_default_handler(realLogHandler, this);
93
96
g_clear_pointer(&loop, g_main_loop_unref);