avoid check failure on glibc 2.22
glibc 2.22 introduces two extra stat() calls per opendir(), which induces a false failure in a test counting stat() calls.
This commit is contained in:
parent
7b7a0554fb
commit
cfbfd8c490
@ -30,6 +30,8 @@ Patch104: coreutils-df-direct.patch
|
||||
Patch107: coreutils-8.4-mkdir-modenote.patch
|
||||
# Don't run the currently failing test-update-copyright.sh test
|
||||
Patch108: coreutils-remove-test-update-copyright.patch
|
||||
#avoid false failure due to extra stat() calls done by opendir() in glibc 2.22
|
||||
Patch109: glibc-2.22-test-fix.patch
|
||||
|
||||
# sh-utils
|
||||
#add info about TZ envvar to date manpage
|
||||
@ -132,6 +134,7 @@ the old GNU fileutils, sh-utils, and textutils packages.
|
||||
%patch104 -p1 -b .dfdirect
|
||||
%patch107 -p1 -b .mkdirmode
|
||||
%patch108 -p1 -b .crtest
|
||||
%patch109 -p1 -b .opendir_stat
|
||||
|
||||
# sh-utils
|
||||
%patch703 -p1 -b .dateman
|
||||
|
83
glibc-2.22-test-fix.patch
Normal file
83
glibc-2.22-test-fix.patch
Normal file
@ -0,0 +1,83 @@
|
||||
From fd5f2b1569e2e0b31be755e14e236a7a02478fc0 Mon Sep 17 00:00:00 2001
|
||||
From: Bernhard Voelker <mail@bernhard-voelker.de>
|
||||
Date: Sun, 30 Aug 2015 22:49:35 +0200
|
||||
Subject: [PATCH] tests: avoid FP of ls/stat-free-color.sh with newer glibc
|
||||
|
||||
Since glibc-2.22, specifically commit [0], the opendir() implementation
|
||||
implicitly makes an additional stat call thus leading to a FP.
|
||||
Seen on openSUSE:Tumbleweed since snapshot 20150821.
|
||||
|
||||
[0]
|
||||
https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=46f894d8c60a
|
||||
|
||||
* tests/ls/stat-free-color.sh: Change the test to verify that ls(1)
|
||||
needs the same number of stat-like calls for a single, empty directory
|
||||
argument as for one with a few directory entries (sub-directory,
|
||||
regular file, symlink, etc.).
|
||||
---
|
||||
tests/ls/stat-free-color.sh | 39 ++++++++++++++++++++++++---------------
|
||||
1 file changed, 24 insertions(+), 15 deletions(-)
|
||||
|
||||
diff --git a/tests/ls/stat-free-color.sh b/tests/ls/stat-free-color.sh
|
||||
index fb2ee8b..35816a3 100755
|
||||
--- a/tests/ls/stat-free-color.sh
|
||||
+++ b/tests/ls/stat-free-color.sh
|
||||
@@ -27,8 +27,6 @@ stats='stat,lstat,stat64,lstat64,newfstatat'
|
||||
require_strace_ $stats
|
||||
require_dirent_d_type_
|
||||
|
||||
-ln -s nowhere dangle || framework_failure_
|
||||
-
|
||||
# Disable enough features via LS_COLORS so that ls --color
|
||||
# can do its job without calling stat (other than the obligatory
|
||||
# one-call-per-command-line argument).
|
||||
@@ -54,22 +52,33 @@ EOF
|
||||
eval $(dircolors -b color-without-stat)
|
||||
|
||||
# The system may perform additional stat-like calls before main.
|
||||
-# To avoid counting those, first get a baseline count by running
|
||||
-# ls with only the --help option. Then, compare that with the
|
||||
+# Furthermore, underlying library functions may also implicitly
|
||||
+# add an extra stat call, e.g. opendir since glibc-2.21-360-g46f894d.
|
||||
+# To avoid counting those, first get a baseline count for running
|
||||
+# ls with one empty directory argument. Then, compare that with the
|
||||
# invocation under test.
|
||||
-strace -o log-help -e $stats ls --help >/dev/null || fail=1
|
||||
-n_lines_help=$(wc -l < log-help)
|
||||
+mkdir d || framework_failure_
|
||||
+
|
||||
+strace -o log1 -e $stats ls --color=always d || fail=1
|
||||
+n_stat1=$(wc -l < log1) || framework_failure_
|
||||
+
|
||||
+test $n_stat1 = 0 \
|
||||
+ && skip_ 'No stat calls recognized on this platform'
|
||||
|
||||
-strace -o log -e $stats ls --color=always . || fail=1
|
||||
-n_lines=$(wc -l < log)
|
||||
+# Populate the test directory.
|
||||
+mkdir d/subdir \
|
||||
+ && touch d/regf \
|
||||
+ && ln d/regf d/hlink \
|
||||
+ && ln -s regf d/slink \
|
||||
+ && ln -s nowhere d/dangle \
|
||||
+ || framework_failure_
|
||||
|
||||
-n_stat=$(expr $n_lines - $n_lines_help)
|
||||
+# Invocation under test.
|
||||
+strace -o log2 -e $stats ls --color=always d || fail=1
|
||||
+n_stat2=$(wc -l < log2) || framework_failure_
|
||||
|
||||
-# Expect one stat call.
|
||||
-case $n_stat in
|
||||
- 0) skip_ 'No stat calls recognized on this platform' ;;
|
||||
- 1) ;; # Corresponding to stat(".")
|
||||
- *) fail=1; head -n30 log* ;;
|
||||
-esac
|
||||
+# Expect the same number of stat calls.
|
||||
+test $n_stat1 = $n_stat2 \
|
||||
+ || { fail=1; head -n30 log*; }
|
||||
|
||||
Exit $fail
|
||||
--
|
||||
2.4.1
|
||||
|
Loading…
Reference in New Issue
Block a user