From e50461a897d225a60b08e928074753230fc4ede6 Mon Sep 17 00:00:00 2001 From: James Booth Date: Sat, 13 Jun 2015 23:59:33 +0100 Subject: [PATCH] Set columns when running functional tests --- src/command/commands.c | 69 ++++++++++++++++++------ tests/functionaltests/proftest.c | 27 ++++++---- tests/functionaltests/start_profanity.sh | 2 + tests/unittests/test_cmd_roster.c | 3 +- 4 files changed, 76 insertions(+), 25 deletions(-) create mode 100755 tests/functionaltests/start_profanity.sh diff --git a/src/command/commands.c b/src/command/commands.c index 35e424b9..5d0f7a16 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -1483,13 +1483,13 @@ cmd_roster(gchar **args, struct cmd_help_t help) { jabber_conn_status_t conn_status = jabber_get_connection_status(); - if (conn_status != JABBER_CONNECTED) { - cons_show("You are not currently connected."); - return TRUE; - } - // show roster if (args[0] == NULL) { + if (conn_status != JABBER_CONNECTED) { + cons_show("You are not currently connected."); + return TRUE; + } + GSList *list = roster_get_contacts(); cons_show_roster(list); g_slist_free(list); @@ -1497,6 +1497,11 @@ cmd_roster(gchar **args, struct cmd_help_t help) // show roster, only online contacts } else if(g_strcmp0(args[0], "online") == 0){ + if (conn_status != JABBER_CONNECTED) { + cons_show("You are not currently connected."); + return TRUE; + } + GSList *list = roster_get_contacts_online(); cons_show_roster(list); g_slist_free(list); @@ -1514,7 +1519,7 @@ cmd_roster(gchar **args, struct cmd_help_t help) if (res) { prefs_set_roster_size(intval); cons_show("Roster screen size set to: %d%%", intval); - if (prefs_get_boolean(PREF_ROSTER)) { + if (conn_status == JABBER_CONNECTED && prefs_get_boolean(PREF_ROSTER)) { wins_resize_all(); } return TRUE; @@ -1529,17 +1534,23 @@ cmd_roster(gchar **args, struct cmd_help_t help) if (args[1] == NULL) { cons_show("Roster enabled."); prefs_set_boolean(PREF_ROSTER, TRUE); - ui_show_roster(); + if (conn_status == JABBER_CONNECTED) { + ui_show_roster(); + } return TRUE; } else if (g_strcmp0(args[1], "offline") == 0) { cons_show("Roster offline enabled"); prefs_set_boolean(PREF_ROSTER_OFFLINE, TRUE); - rosterwin_roster(); + if (conn_status == JABBER_CONNECTED) { + rosterwin_roster(); + } return TRUE; } else if (g_strcmp0(args[1], "resource") == 0) { cons_show("Roster resource enabled"); prefs_set_boolean(PREF_ROSTER_RESOURCE, TRUE); - rosterwin_roster(); + if (conn_status == JABBER_CONNECTED) { + rosterwin_roster(); + } return TRUE; } else { cons_show("Usage: %s", help.usage); @@ -1549,17 +1560,23 @@ cmd_roster(gchar **args, struct cmd_help_t help) if (args[1] == NULL) { cons_show("Roster disabled."); prefs_set_boolean(PREF_ROSTER, FALSE); - ui_hide_roster(); + if (conn_status == JABBER_CONNECTED) { + ui_hide_roster(); + } return TRUE; } else if (g_strcmp0(args[1], "offline") == 0) { cons_show("Roster offline disabled"); prefs_set_boolean(PREF_ROSTER_OFFLINE, FALSE); - rosterwin_roster(); + if (conn_status == JABBER_CONNECTED) { + rosterwin_roster(); + } return TRUE; } else if (g_strcmp0(args[1], "resource") == 0) { cons_show("Roster resource disabled"); prefs_set_boolean(PREF_ROSTER_RESOURCE, FALSE); - rosterwin_roster(); + if (conn_status == JABBER_CONNECTED) { + rosterwin_roster(); + } return TRUE; } else { cons_show("Usage: %s", help.usage); @@ -1570,17 +1587,23 @@ cmd_roster(gchar **args, struct cmd_help_t help) if (g_strcmp0(args[1], "group") == 0) { cons_show("Grouping roster by roster group"); prefs_set_string(PREF_ROSTER_BY, "group"); - rosterwin_roster(); + if (conn_status == JABBER_CONNECTED) { + rosterwin_roster(); + } return TRUE; } else if (g_strcmp0(args[1], "presence") == 0) { cons_show("Grouping roster by presence"); prefs_set_string(PREF_ROSTER_BY, "presence"); - rosterwin_roster(); + if (conn_status == JABBER_CONNECTED) { + rosterwin_roster(); + } return TRUE; } else if (g_strcmp0(args[1], "none") == 0) { cons_show("Roster grouping disabled"); prefs_set_string(PREF_ROSTER_BY, "none"); - rosterwin_roster(); + if (conn_status == JABBER_CONNECTED) { + rosterwin_roster(); + } return TRUE; } else { cons_show("Usage: %s", help.usage); @@ -1588,6 +1611,10 @@ cmd_roster(gchar **args, struct cmd_help_t help) } // add contact } else if (strcmp(args[0], "add") == 0) { + if (conn_status != JABBER_CONNECTED) { + cons_show("You are not currently connected."); + return TRUE; + } char *jid = args[1]; if (jid == NULL) { cons_show("Usage: %s", help.usage); @@ -1599,6 +1626,10 @@ cmd_roster(gchar **args, struct cmd_help_t help) // remove contact } else if (strcmp(args[0], "remove") == 0) { + if (conn_status != JABBER_CONNECTED) { + cons_show("You are not currently connected."); + return TRUE; + } char *jid = args[1]; if (jid == NULL) { cons_show("Usage: %s", help.usage); @@ -1609,6 +1640,10 @@ cmd_roster(gchar **args, struct cmd_help_t help) // change nickname } else if (strcmp(args[0], "nick") == 0) { + if (conn_status != JABBER_CONNECTED) { + cons_show("You are not currently connected."); + return TRUE; + } char *jid = args[1]; if (jid == NULL) { cons_show("Usage: %s", help.usage); @@ -1639,6 +1674,10 @@ cmd_roster(gchar **args, struct cmd_help_t help) // remove nickname } else if (strcmp(args[0], "clearnick") == 0) { + if (conn_status != JABBER_CONNECTED) { + cons_show("You are not currently connected."); + return TRUE; + } char *jid = args[1]; if (jid == NULL) { cons_show("Usage: %s", help.usage); diff --git a/tests/functionaltests/proftest.c b/tests/functionaltests/proftest.c index 78a82c11..613c2c7a 100644 --- a/tests/functionaltests/proftest.c +++ b/tests/functionaltests/proftest.c @@ -123,12 +123,16 @@ _cleanup_dirs(void) void prof_start(void) { - fd = exp_spawnl("./profanity", "./profanity", "-l", "DEBUG", NULL); + // helper script sets terminal columns, avoids assertions failing + // based on the test runner terminal size + fd = exp_spawnl("sh", + "sh", + "-c", + "./tests/functionaltests/start_profanity.sh", + NULL); FILE *fp = fdopen(fd, "r+"); - if (fp == NULL) { - assert_true(FALSE); - } + assert_true(fp != NULL); setbuf(fp, (char *)0); } @@ -155,15 +159,20 @@ init_prof_test(void **state) _create_logs_dir(); prof_start(); - prof_output_exact("Profanity"); + assert_true(prof_output_exact("Profanity")); + // set UI options to make expect assertions faster and more reliable prof_input("/inpblock timeout 5"); - prof_output_exact("Input blocking set to 5 milliseconds"); + assert_true(prof_output_exact("Input blocking set to 5 milliseconds")); prof_input("/inpblock dynamic off"); - prof_output_exact("Dynamic input blocking disabled"); - + assert_true(prof_output_exact("Dynamic input blocking disabled")); prof_input("/notify message off"); - prof_output_exact("Message notifications disabled"); + assert_true(prof_output_exact("Message notifications disabled")); + prof_input("/wrap off"); + assert_true(prof_output_exact("Word wrap disabled")); + prof_input("/roster hide"); + assert_true(prof_output_exact("Roster disabled")); + prof_input("/time off"); } void diff --git a/tests/functionaltests/start_profanity.sh b/tests/functionaltests/start_profanity.sh new file mode 100755 index 00000000..58ceadd7 --- /dev/null +++ b/tests/functionaltests/start_profanity.sh @@ -0,0 +1,2 @@ +export COLUMNS=300 +./profanity -l DEBUG diff --git a/tests/unittests/test_cmd_roster.c b/tests/unittests/test_cmd_roster.c index a7160cf5..dc1b612e 100644 --- a/tests/unittests/test_cmd_roster.c +++ b/tests/unittests/test_cmd_roster.c @@ -16,12 +16,13 @@ static void test_with_connection_status(jabber_conn_status_t status) { CommandHelp *help = malloc(sizeof(CommandHelp)); + gchar *args[] = { NULL }; will_return(jabber_get_connection_status, status); expect_cons_show("You are not currently connected."); - gboolean result = cmd_roster(NULL, *help); + gboolean result = cmd_roster(args, *help); assert_true(result); free(help);