From 42fd80de532fb02676a7f26d5de0a31f35e8794b Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Tue, 27 Nov 2007 19:13:30 +0000 Subject: [PATCH] Fix pg_regress to check the directory it is actually reading files from, not the image that (theoretically) should exist in the current directory. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Jørgen Austvik --- src/test/regress/pg_regress.c | 32 +++++++++++++++++++------------- 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/src/test/regress/pg_regress.c b/src/test/regress/pg_regress.c index e6a70c7d8f..55bd778e32 100644 --- a/src/test/regress/pg_regress.c +++ b/src/test/regress/pg_regress.c @@ -11,7 +11,7 @@ * Portions Copyright (c) 1996-2007, PostgreSQL Global Development Group * Portions Copyright (c) 1994, Regents of the University of California * - * $PostgreSQL: pgsql/src/test/regress/pg_regress.c,v 1.38 2007/11/15 21:14:46 momjian Exp $ + * $PostgreSQL: pgsql/src/test/regress/pg_regress.c,v 1.39 2007/11/27 19:13:30 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -399,6 +399,8 @@ convert_sourcefiles_in(char *source, char *dest, char *suffix) char abs_builddir[MAXPGPATH]; char testtablespace[MAXPGPATH]; char indir[MAXPGPATH]; + struct stat st; + int ret; char **name; char **names; int count = 0; @@ -419,11 +421,23 @@ convert_sourcefiles_in(char *source, char *dest, char *suffix) * current directory. */ if (srcdir) - strcpy(abs_srcdir, srcdir); + strlcpy(abs_srcdir, srcdir, MAXPGPATH); else - strcpy(abs_srcdir, abs_builddir); + strlcpy(abs_srcdir, abs_builddir, MAXPGPATH); snprintf(indir, MAXPGPATH, "%s/%s", abs_srcdir, source); + + /* Check that indir actually exists and is a directory */ + ret = stat(indir, &st); + if (ret != 0 || !S_ISDIR(st.st_mode)) + { + /* + * No warning, to avoid noise in tests that do not have + * these directories; for example, ecpg, contrib and src/pl. + */ + return; + } + names = pgfnames(indir); if (!names) /* Error logged in pgfnames */ @@ -512,16 +526,8 @@ convert_sourcefiles_in(char *source, char *dest, char *suffix) static void convert_sourcefiles(void) { - struct stat st; - int ret; - - ret = stat("input", &st); - if (ret == 0 && S_ISDIR(st.st_mode)) - convert_sourcefiles_in("input", "sql", "sql"); - - ret = stat("output", &st); - if (ret == 0 && S_ISDIR(st.st_mode)) - convert_sourcefiles_in("output", "expected", "out"); + convert_sourcefiles_in("input", "sql", "sql"); + convert_sourcefiles_in("output", "expected", "out"); } /*