socsvn commit: r256143 - soc2013/mattbw/backend/query
mattbw at FreeBSD.org
mattbw at FreeBSD.org
Mon Aug 19 13:50:00 UTC 2013
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();
}
More information about the svn-soc-all
mailing list