]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
have pg_regress fall back on testing with the canonical results file if an
authorAndrew Dunstan <andrew@dunslane.net>
Tue, 1 Aug 2006 14:56:29 +0000 (14:56 +0000)
committerAndrew Dunstan <andrew@dunslane.net>
Tue, 1 Aug 2006 14:56:29 +0000 (14:56 +0000)
alternative test is specified but none succeeds.

src/test/regress/pg_regress.c

index fb8c7d8dee33b82702ab1f609a9996e8f9238130..335e4d7de610650bd3cd7b6db9c44b4a3dcb85b1 100644 (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.