Date: Mon, 19 Aug 2013 13:49:59 GMT From: mattbw@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r256143 - soc2013/mattbw/backend/query Message-ID: <201308191349.r7JDnx64006640@socsvn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: mattbw Date: Mon Aug 19 13:49:59 2013 New Revision: 256143 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=256143 Log: Added more tests and fixed a logical error. Query IDs from names would fail, due to the return value of 'query_id_from_name' being inverted. In addition, there was no testing to ensure that empty names would be assigned to NULL. Modified: soc2013/mattbw/backend/query/id.c soc2013/mattbw/backend/query/id_test.c Modified: soc2013/mattbw/backend/query/id.c ============================================================================== --- soc2013/mattbw/backend/query/id.c Mon Aug 19 12:37:13 2013 (r256142) +++ soc2013/mattbw/backend/query/id.c Mon Aug 19 13:49:59 2013 (r256143) @@ -29,7 +29,7 @@ typedef bool (*id_from_string_ptr) (const char *, struct query_id *); static char *join_namever(const char *name, const char *version); -static char *strdup_null_if_empty(char *in); +static char *strdup_null_if_empty(const char *in); static struct query_id *query_id_array_alloc(unsigned int count); static struct query_id *query_id_array_from_strings(char **strings, unsigned int package_count, id_from_string_ptr id_from_string); static void query_id_array_free(struct query_id **query_ids_p, unsigned int count); @@ -100,11 +100,11 @@ assert(name != NULL); assert(query_id != NULL); - query_id->namever = strdup(name); + query_id->namever = strdup_null_if_empty(name); query_id->arch = NULL; query_id->repo = NULL; - return (query_id->namever == NULL); + return (query_id->namever != NULL); } /* @@ -195,7 +195,7 @@ * string otherwise. */ static char * -strdup_null_if_empty(char *in) +strdup_null_if_empty(const char *in) { return (in == NULL || in[0] == '\0') ? NULL : strdup(in); Modified: soc2013/mattbw/backend/query/id_test.c ============================================================================== --- soc2013/mattbw/backend/query/id_test.c Mon Aug 19 12:37:13 2013 (r256142) +++ soc2013/mattbw/backend/query/id_test.c Mon Aug 19 13:49:59 2013 (r256143) @@ -26,6 +26,10 @@ /* ATF/kyua tests for 'id.c'. */ +/* + * SINGLE PACKAGE IDS + */ + ATF_TC(query_id_from_package_id_single_valid); ATF_TC_HEAD(query_id_from_package_id_single_valid, tc) { @@ -105,12 +109,121 @@ ATF_CHECK_EQ(result.repo, NULL); } +ATF_TC(query_id_from_package_id_single_no_repo); +ATF_TC_HEAD(query_id_from_package_id_single_no_repo, tc) +{ + + atf_tc_set_md_var(tc, "descr", + "Ensure PackageIDs with no repo properly convert to query IDs."); +} +ATF_TC_BODY(query_id_from_package_id_single_no_repo, tc) +{ + bool success; + struct query_id result; + const char *no_version = "pkg;1.1.4;freebsd:9:x86:32;"; + + result.namever = NULL; + result.arch = NULL; + result.repo = NULL; + + success = query_id_from_package_id(no_version, &result); + ATF_CHECK(success); + + ATF_CHECK_STREQ(result.namever, "pkg-1.1.4"); + ATF_CHECK_STREQ(result.arch, "freebsd:9:x86:32"); + ATF_CHECK_EQ(result.repo, NULL); +} + +ATF_TC(query_id_from_package_id_single_no_arch); +ATF_TC_HEAD(query_id_from_package_id_single_no_arch, tc) +{ + + atf_tc_set_md_var(tc, "descr", + "Ensure PackageIDs with no arch properly convert to query IDs."); +} +ATF_TC_BODY(query_id_from_package_id_single_no_arch, tc) +{ + bool success; + struct query_id result; + const char *no_version = "pkg;1.1.4;;packagesite"; + + result.namever = NULL; + result.arch = NULL; + result.repo = NULL; + + success = query_id_from_package_id(no_version, &result); + ATF_CHECK(success); + + ATF_CHECK_STREQ(result.namever, "pkg-1.1.4"); + ATF_CHECK_EQ(result.arch, NULL); + ATF_CHECK_STREQ(result.repo, "packagesite"); +} + +ATF_TC(query_id_from_name_single_valid); +ATF_TC_HEAD(query_id_from_name_single_valid, tc) +{ + + atf_tc_set_md_var(tc, "descr", + "Ensure valid package names properly convert to query IDs."); +} +ATF_TC_BODY(query_id_from_name_single_valid, tc) +{ + bool success; + struct query_id result; + const char *valid_name = "pkg-1.1.4"; + + result.namever = NULL; + result.arch = NULL; + result.repo = NULL; + + success = query_id_from_name(valid_name, &result); + ATF_CHECK(success); + + ATF_CHECK_STREQ(result.namever, "pkg-1.1.4"); + ATF_CHECK_EQ(result.arch, NULL); + ATF_CHECK_EQ(result.repo, NULL); +} + +ATF_TC(query_id_from_name_single_empty); +ATF_TC_HEAD(query_id_from_name_single_empty, tc) +{ + + atf_tc_set_md_var(tc, "descr", + "Ensure empty package names fail to convert to query IDs."); +} +ATF_TC_BODY(query_id_from_name_single_empty, tc) +{ + bool success; + struct query_id result; + const char *empty_name = ""; + + result.namever = NULL; + result.arch = NULL; + result.repo = NULL; + + success = query_id_from_name(empty_name, &result); + ATF_CHECK(!success); + + ATF_CHECK_EQ(result.namever, NULL); + ATF_CHECK_EQ(result.arch, NULL); + ATF_CHECK_EQ(result.repo, NULL); +} + +/* + * SINGLE NAMES + */ + ATF_TP_ADD_TCS(tp) { ATF_TP_ADD_TC(tp, query_id_from_package_id_single_valid); ATF_TP_ADD_TC(tp, query_id_from_package_id_single_no_name); ATF_TP_ADD_TC(tp, query_id_from_package_id_single_no_version); + ATF_TP_ADD_TC(tp, query_id_from_package_id_single_no_repo); + ATF_TP_ADD_TC(tp, query_id_from_package_id_single_no_arch); + + ATF_TP_ADD_TC(tp, query_id_from_name_single_valid); + ATF_TP_ADD_TC(tp, query_id_from_name_single_empty); return atf_no_error(); }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201308191349.r7JDnx64006640>