From: Teemu Toivola Date: Wed, 11 Sep 2019 17:21:06 +0000 (+0300) Subject: improve test coverage X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9c87df33ecdf98f3aca3dc88dcf8688b143b24dd;p=vnstat improve test coverage --- diff --git a/src/vnstat_func.c b/src/vnstat_func.c index 00f25b2..5c66990 100644 --- a/src/vnstat_func.c +++ b/src/vnstat_func.c @@ -506,15 +506,18 @@ void handleremoveinterface(PARAMS *p) exit(EXIT_FAILURE); } +#ifndef CHECK_VNSTAT if (!db_close() || !db_open_rw(0)) { printf("Error: Handling database \"%s/%s\" failing: %s\n", cfg.dbdir, DATABASEFILE, strerror(errno)); exit(EXIT_FAILURE); } +#endif if (db_removeinterface(p->interface)) { printf("Interface \"%s\" removed from database.\n", p->interface); printf("The interface will no longer be monitored. Use --add\n"); printf("if monitoring the interface is again needed.\n"); + db_close(); exit(EXIT_SUCCESS); } else { printf("Error: Removing interface \"%s\" from database failed.\n", p->interface); @@ -554,13 +557,16 @@ void handlerenameinterface(PARAMS *p) exit(EXIT_FAILURE); } +#ifndef CHECK_VNSTAT if (!db_close() || !db_open_rw(0)) { printf("Error: Handling database \"%s/%s\" failing: %s\n", cfg.dbdir, DATABASEFILE, strerror(errno)); exit(EXIT_FAILURE); } +#endif if (db_renameinterface(p->interface, p->newifname)) { printf("Interface \"%s\" has been renamed \"%s\".\n", p->interface, p->newifname); + db_close(); exit(EXIT_SUCCESS); } else { printf("Error: Renaming interface \"%s\" -> \"%s\" failed.\n", p->interface, p->newifname); @@ -601,14 +607,17 @@ void handleaddinterface(PARAMS *p) exit(EXIT_FAILURE); } +#ifndef CHECK_VNSTAT if (!db_close() || !db_open_rw(0)) { printf("Error: Handling database \"%s/%s\" failing: %s\n", cfg.dbdir, DATABASEFILE, strerror(errno)); exit(EXIT_FAILURE); } +#endif printf("Adding interface \"%s\" for monitoring to database...\n", p->interface); if (db_addinterface(p->interface)) { printf("\nRestart the vnStat daemon if it is currently running in order to start monitoring \"%s\".\n", p->interface); + db_close(); exit(EXIT_SUCCESS); } else { printf("Error: Adding interface \"%s\" to database failed.\n", p->interface); @@ -632,13 +641,16 @@ void handlesetalias(PARAMS *p) exit(EXIT_FAILURE); } +#ifndef CHECK_VNSTAT if (!db_close() || !db_open_rw(0)) { printf("Error: Handling database \"%s/%s\" failing: %s\n", cfg.dbdir, DATABASEFILE, strerror(errno)); exit(EXIT_FAILURE); } +#endif if (db_setalias(p->interface, p->alias)) { printf("Alias of interface \"%s\" set to \"%s\".\n", p->interface, p->alias); + db_close(); exit(EXIT_SUCCESS); } else { printf("Error: Setting interface \"%s\" alias failed.\n", p->interface); diff --git a/tests/cli_tests.c b/tests/cli_tests.c index 71b3c98..1731348 100644 --- a/tests/cli_tests.c +++ b/tests/cli_tests.c @@ -2,6 +2,7 @@ #include "vnstat_tests.h" #include "vnstat_func.h" #include "cfg.h" +#include "dbsql.h" #include "cli_tests.h" START_TEST(vnstat_can_init_params) @@ -398,6 +399,90 @@ START_TEST(vnstat_parseargs_rename_requires_parameter) } END_TEST +START_TEST(vnstat_handleremoveinterface_does_nothing_when_nothing_needs_to_be_removed) +{ + PARAMS p; + initparams(&p); + + handleremoveinterface(&p); +} +END_TEST + +START_TEST(vnstat_handleremoveinterface_exits_if_no_interface_has_been_specified) +{ + PARAMS p; + initparams(&p); + p.removeiface = 1; + + handleremoveinterface(&p); +} +END_TEST + +START_TEST(vnstat_handleremoveinterface_exits_if_given_interface_does_not_exist) +{ + int ret; + PARAMS p; + + defaultcfg(); + initparams(&p); + p.removeiface = 1; + p.defaultiface = 0; + strncpy_nt(p.interface, "unknown", 32); + + ret = db_open_rw(1); + ck_assert_int_eq(ret, 1); + + ret = db_addinterface("known"); + ck_assert_int_eq(ret, 1); + + handleremoveinterface(&p); +} +END_TEST + +START_TEST(vnstat_handleremoveinterface_exits_if_force_is_not_used) +{ + int ret; + PARAMS p; + + defaultcfg(); + initparams(&p); + p.removeiface = 1; + p.defaultiface = 0; + p.force = 0; + strncpy_nt(p.interface, "known", 32); + + ret = db_open_rw(1); + ck_assert_int_eq(ret, 1); + + ret = db_addinterface("known"); + ck_assert_int_eq(ret, 1); + + handleremoveinterface(&p); +} +END_TEST + +START_TEST(vnstat_handleremoveinterface_exits_after_interface_removal) +{ + int ret; + PARAMS p; + + defaultcfg(); + initparams(&p); + p.removeiface = 1; + p.defaultiface = 0; + p.force = 1; + strncpy_nt(p.interface, "known", 32); + + ret = db_open_rw(1); + ck_assert_int_eq(ret, 1); + + ret = db_addinterface("known"); + ck_assert_int_eq(ret, 1); + + handleremoveinterface(&p); +} +END_TEST + void add_cli_tests(Suite *s) { TCase *tc_cli = tcase_create("CLI"); @@ -433,5 +518,10 @@ void add_cli_tests(Suite *s) tcase_add_exit_test(tc_cli, vnstat_parseargs_locale_requires_parameter, 1); tcase_add_exit_test(tc_cli, vnstat_parseargs_setalias_requires_parameter, 1); tcase_add_exit_test(tc_cli, vnstat_parseargs_rename_requires_parameter, 1); + tcase_add_test(tc_cli, vnstat_handleremoveinterface_does_nothing_when_nothing_needs_to_be_removed); + tcase_add_exit_test(tc_cli, vnstat_handleremoveinterface_exits_if_no_interface_has_been_specified, 1); + tcase_add_exit_test(tc_cli, vnstat_handleremoveinterface_exits_if_given_interface_does_not_exist, 1); + tcase_add_exit_test(tc_cli, vnstat_handleremoveinterface_exits_if_force_is_not_used, 1); + tcase_add_exit_test(tc_cli, vnstat_handleremoveinterface_exits_after_interface_removal, 0); suite_add_tcase(s, tc_cli); }