Skip to content

Commit 129b52d

Browse files
committed
Add tests for change updates from SIGUSR*
These tests ensure that PropertiesChanged signals are sent when the pause and unpause signals are handled. Signal handler functions are called directly instead of emitting real signals, as doing this might not be safe inside of a testing environment.
1 parent 81ff5bf commit 129b52d

File tree

2 files changed

+72
-0
lines changed

2 files changed

+72
-0
lines changed

src/dunst.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ int dunst_main(int argc, char *argv[]);
4747
void usage(int exit_status);
4848
void print_version(void);
4949

50+
gboolean pause_signal(gpointer data);
51+
gboolean unpause_signal(gpointer data);
5052
gboolean quit_signal(gpointer data);
5153

5254
#endif

test/dbus.c

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1382,6 +1382,74 @@ TEST test_signal_length_propertieschanged(void)
13821382
PASS();
13831383
}
13841384

1385+
TEST test_signal_paused_propertieschanged_pause(void)
1386+
{
1387+
struct signal_propertieschanged sig = {NULL, NULL, NULL, -1};
1388+
1389+
dbus_signal_subscribe_propertieschanged(&sig);
1390+
1391+
pause_signal(NULL);
1392+
1393+
uint waiting = 0;
1394+
1395+
while(!sig.interface && waiting < 2000) {
1396+
usleep(500);
1397+
waiting++;
1398+
}
1399+
1400+
ASSERT_STR_EQ(sig.interface, DUNST_IFAC);
1401+
1402+
gboolean paused;
1403+
g_variant_lookup(sig.array_dict_sv_data, "paused", "b", &paused);
1404+
1405+
ASSERT_EQ(paused, TRUE);
1406+
1407+
guint32 pause_level;
1408+
g_variant_lookup(sig.array_dict_sv_data, "pauseLevel", "u", &pause_level);
1409+
1410+
ASSERT_EQ(pause_level, 100);
1411+
1412+
g_free(sig.interface);
1413+
g_variant_unref(sig.array_dict_sv_data);
1414+
g_variant_unref(sig.array_s_data);
1415+
dbus_signal_unsubscribe_propertieschanged(&sig);
1416+
PASS();
1417+
}
1418+
1419+
TEST test_signal_paused_propertieschanged_unpause(void)
1420+
{
1421+
struct signal_propertieschanged sig = {NULL, NULL, NULL, -1};
1422+
1423+
dbus_signal_subscribe_propertieschanged(&sig);
1424+
1425+
unpause_signal(NULL);
1426+
1427+
uint waiting = 0;
1428+
1429+
while(!sig.interface && waiting < 2000) {
1430+
usleep(500);
1431+
waiting++;
1432+
}
1433+
1434+
ASSERT_STR_EQ(sig.interface, DUNST_IFAC);
1435+
1436+
gboolean paused;
1437+
g_variant_lookup(sig.array_dict_sv_data, "paused", "b", &paused);
1438+
1439+
ASSERT_EQ(paused, FALSE);
1440+
1441+
guint32 pause_level;
1442+
g_variant_lookup(sig.array_dict_sv_data, "pauseLevel", "u", &pause_level);
1443+
1444+
ASSERT_EQ(pause_level, 0);
1445+
1446+
g_free(sig.interface);
1447+
g_variant_unref(sig.array_dict_sv_data);
1448+
g_variant_unref(sig.array_s_data);
1449+
dbus_signal_unsubscribe_propertieschanged(&sig);
1450+
PASS();
1451+
}
1452+
13851453
TEST test_close_and_signal(void)
13861454
{
13871455
GVariant *data, *ret;
@@ -1660,6 +1728,8 @@ gpointer run_threaded_tests(gpointer data)
16601728
RUN_TEST(test_close_and_signal);
16611729
RUN_TEST(test_signal_actioninvoked);
16621730
RUN_TEST(test_signal_length_propertieschanged);
1731+
RUN_TEST(test_signal_paused_propertieschanged_pause);
1732+
RUN_TEST(test_signal_paused_propertieschanged_unpause);
16631733
RUN_TEST(test_timeout_overflow);
16641734
RUN_TEST(test_override_dbus_timeout);
16651735
RUN_TEST(test_match_dbus_timeout);

0 commit comments

Comments
 (0)