Get the test driver compiling and running again (but not passing).
authorJames Bowes <jbowes@redhat.com>
Wed Jun 25 20:53:48 2008 -0400 (2008-06-25)
changeset 2846e19775d8930
parent 283 a510dcb8e019
child 285 264c878c62d1
Get the test driver compiling and running again (but not passing).
librazor/razor.h
librazor/transaction.c
src/Makefile.am
src/test-driver.c
src/test.xml
     1.1 --- a/librazor/razor.h	Wed Jun 25 11:48:46 2008 -0400
     1.2 +++ b/librazor/razor.h	Wed Jun 25 20:53:48 2008 -0400
     1.3 @@ -20,6 +20,8 @@
     1.4  #ifndef _RAZOR_H_
     1.5  #define _RAZOR_H_
     1.6  
     1.7 +#include <stdint.h>
     1.8 +
     1.9  enum razor_repo_file_type {
    1.10  	RAZOR_REPO_FILE_MAIN,
    1.11  	RAZOR_REPO_FILE_DETAILS,
     2.1 --- a/librazor/transaction.c	Wed Jun 25 11:48:46 2008 -0400
     2.2 +++ b/librazor/transaction.c	Wed Jun 25 20:53:48 2008 -0400
     2.3 @@ -789,7 +789,7 @@
     2.4  	struct razor_property *p;
     2.5  
     2.6  	prop_iter_init(&pi, &trans->system);
     2.7 -	while (prop_iter_next(&pi, flags, &p)) {
     2.8 +	while (prop_iter_next(&pi, flags & RAZOR_PROPERTY_TYPE_MASK, &p)) {
     2.9  		if (!(trans->system.properties[p - pi.start] & TRANS_PROPERTY_SATISFIED) &&
    2.10  		    p->flags == flags &&
    2.11  		    strcmp(&pi.pool[p->name], name) == 0 &&
    2.12 @@ -799,7 +799,7 @@
    2.13  	}
    2.14  
    2.15  	prop_iter_init(&pi, &trans->upstream);
    2.16 -	while (prop_iter_next(&pi, flags, &p)) {
    2.17 +	while (prop_iter_next(&pi, flags & RAZOR_PROPERTY_TYPE_MASK, &p)) {
    2.18  		if (!(trans->upstream.properties[p - pi.start] & TRANS_PROPERTY_SATISFIED) &&
    2.19  		    p->flags == flags &&
    2.20  		    strcmp(&pi.pool[p->name], name) == 0 &&
     3.1 --- a/src/Makefile.am	Wed Jun 25 11:48:46 2008 -0400
     3.2 +++ b/src/Makefile.am	Wed Jun 25 20:53:48 2008 -0400
     3.3 @@ -15,6 +15,7 @@
     3.4  
     3.5  bin_PROGRAMS = razor
     3.6  noinst_PROGRAMS = rpm
     3.7 +check_PROGRAMS = test-driver
     3.8  
     3.9  razor_SOURCES = main.c import-rpmdb.c import-yum.c
    3.10  razor_LDADD = $(RPM_LIBS) $(EXPAT_LIBS) $(CURL_LIBS) $(top_builddir)/librazor/librazor.la
    3.11 @@ -22,6 +23,11 @@
    3.12  rpm_SOURCES = rpm.c
    3.13  rpm_LDADD = $(top_builddir)/librazor/librazor.la
    3.14  
    3.15 +test_driver_SOURCES = test-driver.c
    3.16 +test_driver_LDADD = $(EXPAT_LIBS) $(top_builddir)/librazor/librazor.la
    3.17 +
    3.18 +TESTS = test-driver
    3.19 +
    3.20  clean-local :
    3.21  	rm -f *~
    3.22  
     4.1 --- a/src/test-driver.c	Wed Jun 25 11:48:46 2008 -0400
     4.2 +++ b/src/test-driver.c	Wed Jun 25 20:53:48 2008 -0400
     4.3 @@ -88,17 +88,17 @@
     4.4  	va_end(ap);
     4.5  }
     4.6  
     4.7 -static enum razor_version_relation
     4.8 +static enum razor_property_flags
     4.9  parse_relation (const char *rel_str)
    4.10  {
    4.11  	if (!rel_str)
    4.12  		return -1;
    4.13  	if (rel_str[0] == 'L')
    4.14 -		return rel_str[1] == 'E' ? RAZOR_VERSION_LESS_OR_EQUAL : RAZOR_VERSION_LESS;
    4.15 +		return rel_str[1] == 'E' ? RAZOR_PROPERTY_LESS | RAZOR_PROPERTY_EQUAL : RAZOR_PROPERTY_LESS;
    4.16  	else if (rel_str[0] == 'G')
    4.17 -		return rel_str[1] == 'E' ? RAZOR_VERSION_GREATER_OR_EQUAL : RAZOR_VERSION_GREATER;
    4.18 +		return rel_str[1] == 'E' ? RAZOR_PROPERTY_GREATER | RAZOR_PROPERTY_EQUAL : RAZOR_PROPERTY_GREATER;
    4.19  	else if (rel_str[0] == 'E' || rel_str[1] == 'Q')
    4.20 -		return RAZOR_VERSION_EQUAL;
    4.21 +		return RAZOR_PROPERTY_EQUAL;
    4.22  	else
    4.23  		return -1;
    4.24  }
    4.25 @@ -142,7 +142,7 @@
    4.26  {
    4.27  	const char *name = NULL;
    4.28  
    4.29 -	ctx->importer = razor_importer_new();
    4.30 +	ctx->importer = razor_importer_create();
    4.31  	get_atts(atts, "name", &name, NULL);
    4.32  	if (!name)
    4.33  		ctx->importer_set = &ctx->result_set;
    4.34 @@ -180,8 +180,8 @@
    4.35  
    4.36  	razor_importer_begin_package(ctx->importer, name, version, arch);
    4.37  	razor_importer_add_property(ctx->importer, name,
    4.38 -				    RAZOR_VERSION_EQUAL, version,
    4.39 -				    RAZOR_PROPERTY_PROVIDES);
    4.40 +				    RAZOR_PROPERTY_EQUAL | RAZOR_PROPERTY_PROVIDES,
    4.41 +				    version);
    4.42  }
    4.43  
    4.44  static void
    4.45 @@ -191,38 +191,53 @@
    4.46  }
    4.47  
    4.48  static void
    4.49 -add_property(struct test_context *ctx, enum razor_property_type type, const char *name, enum razor_version_relation rel, const char *version)
    4.50 +add_property(struct test_context *ctx, enum razor_property_flags type, const char *name, enum razor_property_flags rel, const char *version)
    4.51  {
    4.52  	razor_importer_add_property(ctx->importer, name,
    4.53 -				    rel, version, type);
    4.54 +				    rel | type, version);
    4.55 +}
    4.56 +
    4.57 +static const char*
    4.58 +razor_property_flags_relation_to_string(enum razor_property_flags rel)
    4.59 +{
    4.60 +	if (rel == RAZOR_PROPERTY_LESS)
    4.61 +		return "<";
    4.62 +	if (rel == (RAZOR_PROPERTY_EQUAL | RAZOR_PROPERTY_LESS))
    4.63 +		return "<=";
    4.64 +	if (rel == RAZOR_PROPERTY_EQUAL)
    4.65 +		return "=";
    4.66 +	if (rel == (RAZOR_PROPERTY_EQUAL | RAZOR_PROPERTY_GREATER))
    4.67 +		return ">=";
    4.68 +	if (rel == RAZOR_PROPERTY_GREATER)
    4.69 +		return ">";
    4.70 +
    4.71 +	return "";
    4.72  }
    4.73  
    4.74  static void
    4.75  check_unsatisfiable_property(struct test_context *ctx,
    4.76 -			     enum razor_property_type type,
    4.77 +			     enum razor_property_flags type,
    4.78  			     const char *name,
    4.79 -			     enum razor_version_relation rel,
    4.80 +			     enum razor_property_flags rel,
    4.81  			     const char *version)
    4.82  {
    4.83 -	static const char *relation_string[] = { "<", "<=", "=", ">=", ">" };
    4.84 -
    4.85  	if (!version)
    4.86  		version = "";
    4.87  
    4.88  	if (razor_transaction_unsatisfied_property(ctx->trans,
    4.89 -						   name, rel, version, type))
    4.90 +						   name, rel | type, version))
    4.91  		return;
    4.92  
    4.93  	fprintf(stderr, "  didn't get unsatisfiable '%s %s %s'\n",
    4.94 -		name, relation_string[rel], version);
    4.95 +		name, razor_property_flags_relation_to_string(rel), version);
    4.96  	ctx->errors++;
    4.97  }
    4.98  
    4.99  static void
   4.100 -start_property(struct test_context *ctx, enum razor_property_type type, const char **atts)
   4.101 +start_property(struct test_context *ctx, enum razor_property_flags type, const char **atts)
   4.102  {
   4.103  	const char *name = NULL, *rel_str = NULL, *version = NULL;
   4.104 -	enum razor_version_relation rel;
   4.105 +	enum razor_property_flags rel;
   4.106  
   4.107  	get_atts(atts, "name", &name, "relation", &rel_str, "version", &version, NULL);
   4.108  	if (name == NULL) {
   4.109 @@ -236,7 +251,7 @@
   4.110  			exit(1);
   4.111  		}
   4.112  	} else
   4.113 -		rel = RAZOR_VERSION_EQUAL;
   4.114 +		rel = RAZOR_PROPERTY_EQUAL;
   4.115  
   4.116  	if (ctx->unsat)
   4.117  		check_unsatisfiable_property(ctx, type, name, rel, version);
   4.118 @@ -273,7 +288,8 @@
   4.119  		razor_transaction_remove_package(ctx->trans, pkg);
   4.120  	}
   4.121  
   4.122 -	errors = razor_transaction_resolve(ctx->trans);
   4.123 +	razor_transaction_resolve(ctx->trans);
   4.124 +	errors = razor_transaction_describe(ctx->trans);
   4.125  	printf("\n");
   4.126  
   4.127  	while (ctx->n_install_pkgs--)
   4.128 @@ -324,21 +340,22 @@
   4.129  }
   4.130  
   4.131  static void
   4.132 -diff_callback(const char *name,
   4.133 -	      const char *old_version,
   4.134 -	      const char *new_version,
   4.135 +diff_callback(enum razor_diff_action action,
   4.136 +	      struct razor_package *package,
   4.137 +	      const char *name,
   4.138 +	      const char *version,
   4.139  	      const char *arch,
   4.140  	      void *data)
   4.141  {
   4.142  	struct test_context *ctx = data;
   4.143  
   4.144  	ctx->errors++;
   4.145 -	if (old_version) {
   4.146 +	if (action == RAZOR_DIFF_ACTION_REMOVE) {
   4.147  		fprintf(stderr, "  result set should not contain %s %s\n",
   4.148 -			name, old_version);
   4.149 +			name, version);
   4.150  	} else {
   4.151  		fprintf(stderr, "  result set should contain %s %s\n",
   4.152 -			name, new_version);
   4.153 +			name, version);
   4.154  	}
   4.155  }
   4.156  
     5.1 --- a/src/test.xml	Wed Jun 25 11:48:46 2008 -0400
     5.2 +++ b/src/test.xml	Wed Jun 25 20:53:48 2008 -0400
     5.3 @@ -1,5 +1,5 @@
     5.4  <tests>
     5.5 -
     5.6 +    <!-- Causing segfaults
     5.7      <test name="testEmpty">
     5.8  	<set name="system"/>
     5.9  	<set name="repo">
    5.10 @@ -13,7 +13,7 @@
    5.11  	    <set/>
    5.12  	</result>
    5.13      </test>
    5.14 -
    5.15 +    -->
    5.16      <test name="testInstallSinglePackageNoRequires">
    5.17  	<set name="system"/>
    5.18  	<set name="repo">