src/test-driver.c
changeset 289 dc69c55cf462
parent 258 29d5002bd17f
child 300 455eaa569767
     1.1 --- a/src/test-driver.c	Fri Jun 20 19:04:47 2008 -0400
     1.2 +++ b/src/test-driver.c	Thu Jun 26 18:15:59 2008 -0400
     1.3 @@ -88,17 +88,17 @@
     1.4  	va_end(ap);
     1.5  }
     1.6  
     1.7 -static enum razor_version_relation
     1.8 +static enum razor_property_flags
     1.9  parse_relation (const char *rel_str)
    1.10  {
    1.11  	if (!rel_str)
    1.12  		return -1;
    1.13  	if (rel_str[0] == 'L')
    1.14 -		return rel_str[1] == 'E' ? RAZOR_VERSION_LESS_OR_EQUAL : RAZOR_VERSION_LESS;
    1.15 +		return rel_str[1] == 'E' ? RAZOR_PROPERTY_LESS | RAZOR_PROPERTY_EQUAL : RAZOR_PROPERTY_LESS;
    1.16  	else if (rel_str[0] == 'G')
    1.17 -		return rel_str[1] == 'E' ? RAZOR_VERSION_GREATER_OR_EQUAL : RAZOR_VERSION_GREATER;
    1.18 +		return rel_str[1] == 'E' ? RAZOR_PROPERTY_GREATER | RAZOR_PROPERTY_EQUAL : RAZOR_PROPERTY_GREATER;
    1.19  	else if (rel_str[0] == 'E' || rel_str[1] == 'Q')
    1.20 -		return RAZOR_VERSION_EQUAL;
    1.21 +		return RAZOR_PROPERTY_EQUAL;
    1.22  	else
    1.23  		return -1;
    1.24  }
    1.25 @@ -142,7 +142,7 @@
    1.26  {
    1.27  	const char *name = NULL;
    1.28  
    1.29 -	ctx->importer = razor_importer_new();
    1.30 +	ctx->importer = razor_importer_create();
    1.31  	get_atts(atts, "name", &name, NULL);
    1.32  	if (!name)
    1.33  		ctx->importer_set = &ctx->result_set;
    1.34 @@ -180,8 +180,8 @@
    1.35  
    1.36  	razor_importer_begin_package(ctx->importer, name, version, arch);
    1.37  	razor_importer_add_property(ctx->importer, name,
    1.38 -				    RAZOR_VERSION_EQUAL, version,
    1.39 -				    RAZOR_PROPERTY_PROVIDES);
    1.40 +				    RAZOR_PROPERTY_EQUAL | RAZOR_PROPERTY_PROVIDES,
    1.41 +				    version);
    1.42  }
    1.43  
    1.44  static void
    1.45 @@ -191,38 +191,53 @@
    1.46  }
    1.47  
    1.48  static void
    1.49 -add_property(struct test_context *ctx, enum razor_property_type type, const char *name, enum razor_version_relation rel, const char *version)
    1.50 +add_property(struct test_context *ctx, enum razor_property_flags type, const char *name, enum razor_property_flags rel, const char *version)
    1.51  {
    1.52  	razor_importer_add_property(ctx->importer, name,
    1.53 -				    rel, version, type);
    1.54 +				    rel | type, version);
    1.55 +}
    1.56 +
    1.57 +static const char*
    1.58 +razor_property_flags_relation_to_string(enum razor_property_flags rel)
    1.59 +{
    1.60 +	if (rel == RAZOR_PROPERTY_LESS)
    1.61 +		return "<";
    1.62 +	if (rel == (RAZOR_PROPERTY_EQUAL | RAZOR_PROPERTY_LESS))
    1.63 +		return "<=";
    1.64 +	if (rel == RAZOR_PROPERTY_EQUAL)
    1.65 +		return "=";
    1.66 +	if (rel == (RAZOR_PROPERTY_EQUAL | RAZOR_PROPERTY_GREATER))
    1.67 +		return ">=";
    1.68 +	if (rel == RAZOR_PROPERTY_GREATER)
    1.69 +		return ">";
    1.70 +
    1.71 +	return "";
    1.72  }
    1.73  
    1.74  static void
    1.75  check_unsatisfiable_property(struct test_context *ctx,
    1.76 -			     enum razor_property_type type,
    1.77 +			     enum razor_property_flags type,
    1.78  			     const char *name,
    1.79 -			     enum razor_version_relation rel,
    1.80 +			     enum razor_property_flags rel,
    1.81  			     const char *version)
    1.82  {
    1.83 -	static const char *relation_string[] = { "<", "<=", "=", ">=", ">" };
    1.84 -
    1.85  	if (!version)
    1.86  		version = "";
    1.87  
    1.88  	if (razor_transaction_unsatisfied_property(ctx->trans,
    1.89 -						   name, rel, version, type))
    1.90 +						   name, rel | type, version))
    1.91  		return;
    1.92  
    1.93  	fprintf(stderr, "  didn't get unsatisfiable '%s %s %s'\n",
    1.94 -		name, relation_string[rel], version);
    1.95 +		name, razor_property_flags_relation_to_string(rel), version);
    1.96  	ctx->errors++;
    1.97  }
    1.98  
    1.99  static void
   1.100 -start_property(struct test_context *ctx, enum razor_property_type type, const char **atts)
   1.101 +start_property(struct test_context *ctx, enum razor_property_flags type, const char **atts)
   1.102  {
   1.103  	const char *name = NULL, *rel_str = NULL, *version = NULL;
   1.104 -	enum razor_version_relation rel;
   1.105 +	enum razor_property_flags rel;
   1.106  
   1.107  	get_atts(atts, "name", &name, "relation", &rel_str, "version", &version, NULL);
   1.108  	if (name == NULL) {
   1.109 @@ -236,7 +251,7 @@
   1.110  			exit(1);
   1.111  		}
   1.112  	} else
   1.113 -		rel = RAZOR_VERSION_EQUAL;
   1.114 +		rel = RAZOR_PROPERTY_EQUAL;
   1.115  
   1.116  	if (ctx->unsat)
   1.117  		check_unsatisfiable_property(ctx, type, name, rel, version);
   1.118 @@ -273,7 +288,8 @@
   1.119  		razor_transaction_remove_package(ctx->trans, pkg);
   1.120  	}
   1.121  
   1.122 -	errors = razor_transaction_resolve(ctx->trans);
   1.123 +	razor_transaction_resolve(ctx->trans);
   1.124 +	errors = razor_transaction_describe(ctx->trans);
   1.125  	printf("\n");
   1.126  
   1.127  	while (ctx->n_install_pkgs--)
   1.128 @@ -324,21 +340,22 @@
   1.129  }
   1.130  
   1.131  static void
   1.132 -diff_callback(const char *name,
   1.133 -	      const char *old_version,
   1.134 -	      const char *new_version,
   1.135 +diff_callback(enum razor_diff_action action,
   1.136 +	      struct razor_package *package,
   1.137 +	      const char *name,
   1.138 +	      const char *version,
   1.139  	      const char *arch,
   1.140  	      void *data)
   1.141  {
   1.142  	struct test_context *ctx = data;
   1.143  
   1.144  	ctx->errors++;
   1.145 -	if (old_version) {
   1.146 +	if (action == RAZOR_DIFF_ACTION_REMOVE) {
   1.147  		fprintf(stderr, "  result set should not contain %s %s\n",
   1.148 -			name, old_version);
   1.149 +			name, version);
   1.150  	} else {
   1.151  		fprintf(stderr, "  result set should contain %s %s\n",
   1.152 -			name, new_version);
   1.153 +			name, version);
   1.154  	}
   1.155  }
   1.156