On Fri, May 13, 2016 at 8:48 AM, Jim Meyering <j...@meyering.net> wrote:
> On Fri, May 13, 2016 at 4:23 AM, Benno Schulenberg
> <bensb...@justemail.net> wrote:
>> Hi,
>>
>> Running 'make check' in a grep-2.25 source tree ends with one
>> unexpected failure, in the encoding-error test, when LANGUAGE
>> is set to something other than "en".
>>
>> ============================================================================
>> Testsuite summary for GNU grep 2.25
>> ============================================================================
>> # TOTAL: 102
>> # PASS:  66
>> # SKIP:  33
>> # XFAIL: 2
>> # FAIL:  1
>> # XPASS: 0
>> # ERROR: 0
>>
>>
>> The essential difference seems to be:
>>
>> --- exp 2016-05-13 13:05:26.000000000 +0200
>> +++ out 2016-05-13 13:05:26.000000000 +0200
>> @@ -1 +1 @@
>> -Binary file in matches
>> +Duuma dosiero in kongruas
>>
>>
>> When I run 'LANGUAGE=en make check', there are no failures:
>
> Hi Benno,
> Thank you for the report.
> Here's a barely-tested patch:

Here it is again, with a better commit log:
From c7526623f458084cbe947f0e1b43f328481b2ca3 Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyer...@fb.com>
Date: Fri, 13 May 2016 08:43:53 -0700
Subject: [PATCH] maint: do not let a LANGUAGE envvar setting perturb tests

E.g., running "LANGUAGE=eo make check" would provoke a failure
of the encoding-error test, on systems that mistakenly let that
envvar trump the setting of LC_ALL.
* tests/envvar-check: New file, copied from coreutils.
* tests/Makefile.am (EXTRA_DIST): Add it.
(TESTS_ENVIRONMENT): Source it.
Also select TMPDIR as we do for coreutils tests.
Reported by Benno Schulenberg in http://bugs.gnu.org/23527.
---
 tests/Makefile.am  |  5 ++++-
 tests/envvar-check | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 67 insertions(+), 1 deletion(-)
 create mode 100644 tests/envvar-check

diff --git a/tests/Makefile.am b/tests/Makefile.am
index 7effa57..38b0e32 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -151,6 +151,7 @@ EXTRA_DIST =					\
   $(TESTS)					\
   bre.awk					\
   bre.tests					\
+  envvar-check					\
   ere.awk					\
   ere.tests					\
   init.cfg					\
@@ -166,7 +167,9 @@ EXTRA_DIST =					\
 MALLOC_PERTURB_ = 1

 TESTS_ENVIRONMENT =				\
-  tmp__=$$TMPDIR; test -d "$$tmp__" || tmp__=.;	\
+  tmp__=$${TMPDIR-/tmp};			\
+  test -d "$$tmp__" && test -w "$$tmp__" || tmp__=.;	\
+  . $(srcdir)/envvar-check;			\
   TMPDIR=$$tmp__; export TMPDIR;		\
 						\
   if test -n "$$BASH_VERSION" || (eval "export v=x") 2>/dev/null; then \
diff --git a/tests/envvar-check b/tests/envvar-check
new file mode 100644
index 0000000..16d7069
--- /dev/null
+++ b/tests/envvar-check
@@ -0,0 +1,63 @@
+# -*- sh -*-
+# Check environment variables for sane values while testing.
+
+# Copyright (C) 2000-2016 Free Software Foundation, Inc.
+
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+if (FOO=FOO; unset FOO) >/dev/null 2>&1; then
+  as_unset=unset
+else
+  as_unset=false
+fi
+
+envvar_check_fail=0
+vars='
+  _POSIX2_VERSION
+  _STDBUF_E
+  _STDBUF_I
+  _STDBUF_O
+  BASH_ENV
+  BLOCKSIZE
+  BLOCK_SIZE
+  CDPATH
+  COLUMNS
+  DF_BLOCK_SIZE
+  DU_BLOCK_SIZE
+  ENV
+  LANGUAGE
+  LS_BLOCK_SIZE
+  LS_COLORS
+  OMP_NUM_THREADS
+  POSIXLY_CORRECT
+  QUOTING_STYLE
+  SIMPLE_BACKUP_SUFFIX
+  TABSIZE
+  TERM
+  COLORTERM
+  TIME_STYLE
+  TMPDIR
+  VERSION_CONTROL
+'
+for var in $vars
+do
+  $as_unset $var
+  if eval test \"\${$var+set}\" = set; then
+    echo "$0: the $var environment variable is set --" \
+      ' unset it and rerun this test' >&2
+    envvar_check_fail=1
+  fi
+done
+
+test "$envvar_check_fail" = 1 && exit 1
-- 
2.8.0-rc2

Reply via email to