have pg_regress fall back on testing with the canonical results file if an

alternative test is specified but none succeeds.
This commit is contained in:
Andrew Dunstan 2006-08-01 14:56:29 +00:00
parent 8d5f3c8d89
commit a3bae60813
1 changed files with 31 additions and 1 deletions

View File

@ -11,7 +11,7 @@
* Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
* $PostgreSQL: pgsql/src/test/regress/pg_regress.c,v 1.17 2006/07/30 01:45:21 momjian Exp $
* $PostgreSQL: pgsql/src/test/regress/pg_regress.c,v 1.18 2006/08/01 14:56:29 adunstan Exp $
*
*-------------------------------------------------------------------------
*/
@ -913,6 +913,36 @@ results_differ(const char *testname)
}
}
/*
* fall back on the canonical results file if we haven't tried it yet
* and haven't found a complete match yet.
*/
if (strcmp(expectname, testname) != 0)
{
snprintf(expectfile, sizeof(expectfile), "%s/expected/%s.out",
inputdir, testname, i);
snprintf(cmd, sizeof(cmd),
SYSTEMQUOTE "diff %s \"%s\" \"%s\" > \"%s\"" SYSTEMQUOTE,
basic_diff_opts, expectfile, resultsfile, diff);
if (run_diff(cmd, diff) == 0)
{
/* No diff = no changes = good */
unlink(diff);
return false;
}
l = file_line_count(diff);
if (l < best_line_count)
{
/* This diff was a better match than the last one */
best_line_count = l;
strcpy(best_expect_file, expectfile);
}
}
/*
* Use the best comparison file to generate the "pretty" diff, which
* we append to the diffs summary file.