From: Stefano Lattarini Date: Sat, 18 Jun 2011 15:57:53 +0000 (+0200) Subject: tests: avoid extra forks in the testsuite X-Git-Tag: v8.13~103 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2f60384d6abc787f5c4dfb5e9bffa328265b3028;p=platform%2Fupstream%2Fcoreutils.git tests: avoid extra forks in the testsuite * tests/shell-or-perl: Prefer the `read' builtin over `grep' to look at the shebang line of test scripts. Since `read' is a special builtin, it might abort the whole program upon failures, so add extra sanity checks, verifying that the test script exists and is readable, before trying to read from it. --- diff --git a/tests/shell-or-perl b/tests/shell-or-perl index 08604eb..accb37a 100644 --- a/tests/shell-or-perl +++ b/tests/shell-or-perl @@ -84,12 +84,19 @@ test -z "$test_name" && test_name=$test_script # Run the test script # # --------------------- # -if grep '^#!/usr/bin/perl' "$test_script" >/dev/null; then +test -f "$test_script" && test -r "$test_script" \ + || error_ "test script '$test_script' does not exist, or isn't readable" + +read shebang_line < "$test_script" \ + || error_ "cannot read from the test script '$test_script'" + +case $shebang_line in +'#!/usr/bin/perl'*) # The test is a perl script. if $cu_PERL -e 'use warnings' > /dev/null 2>&1; then # Perl is available, see if we must run the test with taint # mode on or not. - grep '^#!/usr/bin/perl -T' "$test_script" >/dev/null && T_=T || T_= + case $shebang_line in *\ -T*) T_=T;; *) T_=;; esac # Now run it. exec $cu_PERL -w$T_ -I"$srcdir" -MCoreutils -MCuSkip \ -M"CuTmpdir qw($test_name)" \ @@ -99,10 +106,11 @@ if grep '^#!/usr/bin/perl' "$test_script" >/dev/null; then echo "$test_name: skip: no usable version of Perl found" exit 77 fi -else + ;; +*) # Assume the test is a shell script. exec $cu_SHELL "$test_script" ${1+"$@"} -fi +esac # ------------- # # Not reached #