From e089ffb15ca3918b456e05c6198fc0cd122d08a2 Mon Sep 17 00:00:00 2001 From: James Booth Date: Thu, 23 Jan 2014 22:38:12 +0000 Subject: [PATCH] Show message when alias already exists in /alias add --- src/command/commands.c | 7 +++++-- src/config/preferences.c | 11 ++++++++--- src/config/preferences.h | 2 +- tests/test_cmd_alias.c | 16 ++++++++++++++++ tests/test_cmd_alias.h | 1 + tests/testsuite.c | 3 +++ 6 files changed, 34 insertions(+), 6 deletions(-) diff --git a/src/command/commands.c b/src/command/commands.c index c4390966..5d30d183 100644 --- a/src/command/commands.c +++ b/src/command/commands.c @@ -1834,8 +1834,11 @@ cmd_alias(gchar **args, struct cmd_help_t help) cons_show("Usage: %s", help.usage); return TRUE; } else { - prefs_add_alias(alias, value); - cons_show("Command alias added /%s -> %s", alias, value); + if (prefs_add_alias(alias, value) == TRUE) { + cons_show("Command alias added /%s -> %s", alias, value); + } else { + cons_show("Command alias /%s already exists.", alias); + } return TRUE; } } diff --git a/src/config/preferences.c b/src/config/preferences.c index 88e267f4..3107f303 100644 --- a/src/config/preferences.c +++ b/src/config/preferences.c @@ -260,11 +260,16 @@ prefs_set_autoaway_time(gint value) _save_prefs(); } -void +gboolean prefs_add_alias(const char * const name, const char * const value) { - g_key_file_set_string(prefs, PREF_GROUP_ALIAS, name, value); - _save_prefs(); + if (g_key_file_has_key(prefs, PREF_GROUP_ALIAS, name, NULL)) { + return FALSE; + } else { + g_key_file_set_string(prefs, PREF_GROUP_ALIAS, name, value); + _save_prefs(); + return TRUE; + } } char * diff --git a/src/config/preferences.h b/src/config/preferences.h index 22a175d4..e79137ed 100644 --- a/src/config/preferences.h +++ b/src/config/preferences.h @@ -97,7 +97,7 @@ void prefs_set_autoaway_time(gint value); void prefs_add_login(const char *jid); -void prefs_add_alias(const char * const name, const char * const value); +gboolean prefs_add_alias(const char * const name, const char * const value); gboolean prefs_remove_alias(const char * const name); char* prefs_get_alias(const char * const name); GList* prefs_get_aliases(void); diff --git a/tests/test_cmd_alias.c b/tests/test_cmd_alias.c index bdb16ede..b337b49a 100644 --- a/tests/test_cmd_alias.c +++ b/tests/test_cmd_alias.c @@ -94,6 +94,22 @@ void cmd_alias_add_adds_alias(void **state) free(help); } +void cmd_alias_add_shows_message_when_exists(void **state) +{ + mock_cons_show(); + CommandHelp *help = malloc(sizeof(CommandHelp)); + gchar *args[] = { "add", "hc", "/help commands", NULL }; + + prefs_add_alias("hc", "/help commands"); + + expect_cons_show("Command alias /hc already exists."); + + gboolean result = cmd_alias(args, *help); + assert_true(result); + + free(help); +} + void cmd_alias_remove_removes_alias(void **state) { mock_cons_show(); diff --git a/tests/test_cmd_alias.h b/tests/test_cmd_alias.h index 1f2df5cd..bd93ef1a 100644 --- a/tests/test_cmd_alias.h +++ b/tests/test_cmd_alias.h @@ -3,6 +3,7 @@ void cmd_alias_add_shows_usage_when_no_value(void **state); void cmd_alias_remove_shows_usage_when_no_args(void **state); void cmd_alias_show_usage_when_invalid_subcmd(void **state); void cmd_alias_add_adds_alias(void **state); +void cmd_alias_add_shows_message_when_exists(void **state); void cmd_alias_remove_removes_alias(void **state); void cmd_alias_remove_shows_message_when_no_alias(void **state); void cmd_alias_list_shows_all_aliases(void **state); diff --git a/tests/testsuite.c b/tests/testsuite.c index af42fe7c..1e847716 100644 --- a/tests/testsuite.c +++ b/tests/testsuite.c @@ -399,6 +399,9 @@ int main(int argc, char* argv[]) { unit_test_setup_teardown(cmd_alias_add_adds_alias, create_config_file, delete_config_file), + unit_test_setup_teardown(cmd_alias_add_shows_message_when_exists, + create_config_file, + delete_config_file), unit_test_setup_teardown(cmd_alias_remove_removes_alias, create_config_file, delete_config_file),