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