{ TESTCASE_RESULT_ORPHANED, "orphaned" },
{ TESTCASE_RESULT_RECOMMENDED, "recommended" },
{ TESTCASE_RESULT_UNNEEDED, "unneeded" },
+ { TESTCASE_RESULT_ALTERNATIVES, "alternatives" },
+ { TESTCASE_RESULT_RULES, "rules" },
+ { TESTCASE_RESULT_GENID, "genid" },
{ 0, 0 }
};
static void
-usage(ex)
+usage(int ex)
{
fprintf(ex ? stderr : stdout, "Usage: testsolv <testcase>\n");
exit(ex);
int resultflags = 0;
int debuglevel = 0;
int writeresult = 0;
+ char *writetestcase = 0;
int multijob = 0;
int rescallback = 0;
int c;
const char *p;
queue_init(&solq);
- while ((c = getopt(argc, argv, "vmrhl:s:")) >= 0)
+ while ((c = getopt(argc, argv, "vmrhl:s:T:")) >= 0)
{
switch (c)
{
else
queue_push2(&solq, 1, atoi(optarg));
break;
+ case 'T':
+ writetestcase = optarg;
+ break;
default:
usage(1);
break;
if (!solv)
{
pool_free(pool);
- exit(1);
+ exit(resultflags == 77 ? 77 : 1);
}
if (!multijob && !feof(fp))
printf("test %d:\n", multijob++);
if (list)
{
+ int selflags = SELECTION_NAME|SELECTION_PROVIDES|SELECTION_CANON|SELECTION_DOTARCH|SELECTION_REL|SELECTION_GLOB|SELECTION_FLAT;
+ if (*list == '/')
+ selflags |= SELECTION_FILELIST;
queue_empty(&job);
- selection_make(pool, &job, list, SELECTION_NAME|SELECTION_PROVIDES|SELECTION_FILELIST|SELECTION_CANON|SELECTION_DOTARCH|SELECTION_REL|SELECTION_GLOB|SELECTION_FLAT);
+ selection_make(pool, &job, list, selflags);
if (!job.elements)
printf("No match\n");
else
else
{
int pcnt = solver_solve(solv, &job);
+ if (writetestcase)
+ testcase_write(solv, writetestcase, resultflags, 0, 0);
if (pcnt && solq.count)
{
int i, taken = 0;