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