socsvn commit: r256201 - soc2013/mattbw/backend/query

mattbw at FreeBSD.org mattbw at FreeBSD.org
Tue Aug 20 14:26:24 UTC 2013


Author: mattbw
Date: Tue Aug 20 14:26:23 2013
New Revision: 256201
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=256201

Log:
  Add more ATF tests for ID/name conversion.
  
  I realise I'm spending too much time on this, so the next commit should be
  adapting the query mechanism.
  

Modified:
  soc2013/mattbw/backend/query/id.c
  soc2013/mattbw/backend/query/id.h
  soc2013/mattbw/backend/query/id_test.c

Modified: soc2013/mattbw/backend/query/id.c
==============================================================================
--- soc2013/mattbw/backend/query/id.c	Tue Aug 20 13:55:49 2013	(r256200)
+++ soc2013/mattbw/backend/query/id.c	Tue Aug 20 14:26:23 2013	(r256201)
@@ -31,13 +31,13 @@
 static char    *join_namever(const char *name, const char *version);
 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 struct query_id *query_id_array_from_strings(const 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);
 static void	query_id_free_contents(struct query_id *query_id);
 
 /* Converts an array of PackageIDs to query IDs. */
 struct query_id *
-query_id_array_from_package_ids(gchar **package_ids,
+query_id_array_from_package_ids(const gchar **package_ids,
     unsigned int package_count)
 {
 
@@ -47,7 +47,7 @@
 
 /* Converts an array of names (or name-version strings) to query IDs. */
 struct query_id *
-query_id_array_from_names(gchar **package_names, unsigned int package_count)
+query_id_array_from_names(const gchar **package_names, unsigned int package_count)
 {
 
 	return query_id_array_from_strings(package_names, package_count,
@@ -59,7 +59,7 @@
  * function.
  */
 static struct query_id *
-query_id_array_from_strings(char **strings, unsigned int package_count,
+query_id_array_from_strings(const char **strings, unsigned int package_count,
     id_from_string_ptr id_from_string)
 {
 	struct query_id *query_ids;
@@ -69,19 +69,19 @@
 
 	query_ids = query_id_array_alloc(package_count);
 	if (query_ids != NULL) {
-		bool		error;
+		bool		success;
 		unsigned int	i;
 
-		error = false;
+		success = true;
 		for (i = 0; i < package_count; i++) {
-			error = id_from_string(strings[i], query_ids + i);
-			if (error) {
+			success = id_from_string(strings[i], query_ids + i);
+			if (!success) {
 				query_id_array_free(&query_ids, package_count);
 				break;
 			}
 		}
 
-		if (error) {
+		if (!success) {
 			query_id_array_free(&query_ids, package_count);
 		}
 	}
@@ -207,14 +207,15 @@
 	unsigned int	i;
 
 	assert(query_ids_p != NULL);
-	assert(*query_ids_p != NULL);
 
-	for (i = 0; i < count; i++) {
-		query_id_free_contents((*query_ids_p) + i);
-	}
+	if (*query_ids_p != NULL) {
+		for (i = 0; i < count; i++) {
+			query_id_free_contents((*query_ids_p) + i);
+		}
 
-	free(*query_ids_p);
-	*query_ids_p = NULL;
+		free(*query_ids_p);
+		*query_ids_p = NULL;
+	}
 }
 
 static void

Modified: soc2013/mattbw/backend/query/id.h
==============================================================================
--- soc2013/mattbw/backend/query/id.h	Tue Aug 20 13:55:49 2013	(r256200)
+++ soc2013/mattbw/backend/query/id.h	Tue Aug 20 14:26:23 2013	(r256201)
@@ -33,7 +33,7 @@
 
 bool		query_id_from_name(const char *name, struct query_id *query_id);
 bool 		query_id_from_package_id(const gchar *package_id, struct query_id *query_id);
-struct query_id *query_id_array_from_names(gchar **package_names, unsigned int package_count);
-struct query_id *query_id_array_from_package_ids(gchar **package_ids, unsigned int package_count);
+struct query_id *query_id_array_from_names(const gchar **package_names, unsigned int package_count);
+struct query_id *query_id_array_from_package_ids(const gchar **package_ids, unsigned int package_count);
 
 #endif				/* !_PKGNG_BACKEND_QUERY_ID_H_ */

Modified: soc2013/mattbw/backend/query/id_test.c
==============================================================================
--- soc2013/mattbw/backend/query/id_test.c	Tue Aug 20 13:55:49 2013	(r256200)
+++ soc2013/mattbw/backend/query/id_test.c	Tue Aug 20 14:26:23 2013	(r256201)
@@ -159,6 +159,10 @@
 	ATF_CHECK_STREQ(result.repo, "packagesite");
 }
 
+/*
+ * SINGLE NAMES
+ */
+
 ATF_TC(query_id_from_name_single_valid);
 ATF_TC_HEAD(query_id_from_name_single_valid, tc)
 {
@@ -184,6 +188,10 @@
 	ATF_CHECK_EQ(result.repo, NULL);
 }
 
+/*
+ * SINGLE NAMES
+ */
+
 ATF_TC(query_id_from_name_single_empty);
 ATF_TC_HEAD(query_id_from_name_single_empty, tc)
 {
@@ -210,7 +218,103 @@
 }
 
 /*
- * SINGLE NAMES
+ * MULTIPLE ID FUNCTIONS
+ */
+
+ATF_TC(query_id_from_name_multiple_valid);
+ATF_TC_HEAD(query_id_from_name_multiple_valid, tc)
+{
+
+	atf_tc_set_md_var(tc, "descr",
+	    "Ensure valid arrays of package names convert to query IDs.");
+}
+ATF_TC_BODY(query_id_from_name_multiple_valid, tc)
+{
+	unsigned int	i;
+	struct query_id	*results;
+	const char     *valid_names[3];
+	const char     *valid_1 = "pkg-1.1.4";
+	const char     *valid_2 = "brasero-1.2";
+	const char     *valid_3 = "PackageKit";
+
+	valid_names[0] = valid_1;
+	valid_names[1] = valid_2;
+	valid_names[2] = valid_3;
+
+	results = query_id_array_from_names(valid_names, 3);
+	ATF_CHECK(results != NULL);
+
+	if (results != NULL) {
+		for (i = 0; i < 3; i++) {
+			ATF_CHECK_STREQ(results[i].namever, valid_names[i]);
+			ATF_CHECK_EQ(results[i].arch, NULL);
+			ATF_CHECK_EQ(results[i].repo, NULL);
+		}
+	}
+}
+
+ATF_TC(query_id_from_name_multiple_empty);
+ATF_TC_HEAD(query_id_from_name_multiple_empty, tc)
+{
+
+	atf_tc_set_md_var(tc, "descr",
+	    "Ensure package name arrays with empty members fail to convert.");
+}
+ATF_TC_BODY(query_id_from_name_multiple_empty, tc)
+{
+	struct query_id	*results;
+	const char     *invalid_names[3];
+	const char     *invalid_1 = "pkg-1.1.4";
+	const char     *invalid_2 = "";
+	const char     *invalid_3 = "PackageKit";
+
+	invalid_names[0] = invalid_1;
+	invalid_names[1] = invalid_2;
+	invalid_names[2] = invalid_3;
+
+	results = query_id_array_from_names(invalid_names, 3);
+	ATF_CHECK_EQ(results, NULL);
+}
+
+ATF_TC(query_id_from_package_id_multiple_valid);
+ATF_TC_HEAD(query_id_from_package_id_multiple_valid, tc)
+{
+
+	atf_tc_set_md_var(tc, "descr",
+	    "Ensure package ID arrays with all valid members convert.");
+}
+ATF_TC_BODY(query_id_from_package_id_multiple_valid, tc)
+{
+	struct query_id	*results;
+	const char     *valid_package_ids[3];
+	const char     *valid_1 = "pkg;1.1.4;freebsd:9:x86:32;packagesite";
+	const char     *valid_2 = "brasero;1.2;freebsd:9:x86:64;elsewhere";
+	const char     *valid_3 = "PackageKit;0.6;freebsd:10:x86:32;installed";
+
+	valid_package_ids[0] = valid_1;
+	valid_package_ids[1] = valid_2;
+	valid_package_ids[2] = valid_3;
+
+	results = query_id_array_from_package_ids(valid_package_ids, 3);
+	ATF_CHECK(results != NULL);
+
+	if (results != NULL) {
+		ATF_CHECK_STREQ(results[0].namever, "pkg-1.1.4");
+		ATF_CHECK_STREQ(results[0].arch, "freebsd:9:x86:32");
+		ATF_CHECK_STREQ(results[0].repo, "packagesite");
+
+		ATF_CHECK_STREQ(results[1].namever, "brasero-1.2");
+		ATF_CHECK_STREQ(results[1].arch, "freebsd:9:x86:64");
+		ATF_CHECK_STREQ(results[1].repo, "elsewhere");
+
+		ATF_CHECK_STREQ(results[2].namever, "PackageKit-0.6");
+		ATF_CHECK_STREQ(results[2].arch, "freebsd:10:x86:32");
+		ATF_CHECK_STREQ(results[2].repo, "installed");
+	}
+}
+
+/*
+ * TEST PACK
  */
 
 ATF_TP_ADD_TCS(tp)
@@ -225,5 +329,10 @@
 	ATF_TP_ADD_TC(tp, query_id_from_name_single_valid);
 	ATF_TP_ADD_TC(tp, query_id_from_name_single_empty);
 
+	ATF_TP_ADD_TC(tp, query_id_from_name_multiple_valid);
+	ATF_TP_ADD_TC(tp, query_id_from_name_multiple_empty);
+
+	ATF_TP_ADD_TC(tp, query_id_from_package_id_multiple_valid);
+
 	return atf_no_error();
 }


More information about the svn-soc-all mailing list