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:
From 5364cb676c1d2f79362270ede0e66099943521e7 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 (TESTS_ENVIRONMENT): Use it.
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