[prev in list] [next in list] [prev in thread] [next in thread] 

List:       busybox
Subject:    Re: [PATCH] testsuite: typo in tr.tests
From:       Bernhard Reutner-Fischer <rep.dot.nop () gmail ! com>
Date:       2010-07-29 19:25:41
Message-ID: 20100729192541.GD29814 () mx ! loc
[Download RAW message or body]

On Thu, Jul 29, 2010 at 02:20:29PM +0200, Denys Vlasenko wrote:
>On Thu, Jul 29, 2010 at 10:27 AM, Leonid Lisovskiy <lly.dev@gmail.com> wrote:
>> As I can see, there were a lot of scripts (expand.tests for example)
>> which uses old scheme:
>>
>> test -f "$bindir/.config" && . "$bindir/.config"
>> ...
>> test x"$CONFIG_UNICODE_SUPPORT" = x"y" \
>> && test x"$CONFIG_UNICODE_USING_LOCALE" != x"y" \
>>
>> probably, it should be converted to new scheme with "optional" clause,
>> but I'm not sure.
>
>I wonder how would you express that UNICODE_USING_LOCALE should NOT be on
>with "optional".
>
>Also, "optional" uses bashism ${var/foo/bar}:
>
>test x"${OPTIONFLAGS/*:$1:*/y}" != x"y"
>
>which was VERY SLOW in ash (it had CUBIC run time growth relative
>OPTIONFLAGS length). I fixed it in ash.
>
>hush does not even support ${var/foo/bar} yet.
>
>I don't like "optional" thing because of these problems.

my initial impl of the formerly "config_is_set" didn't use bashism, but
whatever.

What about the attached that does away with bashism (but taking the
penalty in runtime due to several subshell-spawning) and supports
!SOMETHING ?

HTH && cheers,

["0001-testsuite-fix-bashism-and-support-thing.patch" (text/x-diff)]

>From 0b412b0c40111ecd28e4d524e96c39f23c5954fa Mon Sep 17 00:00:00 2001
From: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Date: Thu, 29 Jul 2010 21:22:12 +0200
Subject: [PATCH] testsuite: fix bashism and support !thing

Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
---
 testsuite/testing.sh |   23 ++++++++++++++++++-----
 1 files changed, 18 insertions(+), 5 deletions(-)

diff --git a/testsuite/testing.sh b/testsuite/testing.sh
index f907dea..6e90a23 100644
--- a/testsuite/testing.sh
+++ b/testsuite/testing.sh
@@ -51,17 +51,30 @@ test x"$ECHO" != x"" || {
 }
 
 # Helper functions
+# optional REQUIREDOPTION !NOTTHISOPTION BUTTHATOPTION
+# turn off previous optionals:
+# optional
+# change requirements:
+# optional REQUIREDOPTION2 !NOTTHISOPTION BUTTHATOPTION
 
 optional()
 {
-	SKIP=
+	NUMSKIPS=0
+	NUMTESTS=$#
 	while test "$1"; do
-		if test x"${OPTIONFLAGS/*:$1:*/y}" != x"y"; then
-			SKIP=1
-			return
-		fi
+		OP=$(echo "x"${1} | grep -q "x!" && echo "!")
+		test "x"${OP} = "x" && FLAG=${1} || \
+			FLAG=$(printf "\b%s" ${1})
+		# XXX: undo damage of 'export OPTIONFLAGS' mangling
+		FLAG=$(echo $FLAG | sed -e 's/^CONFIG_//')
+		SET=$(echo ${OPTIONFLAGS} | grep -q ":${FLAG}:" && echo y)
+		case "${SET}${OP}" in
+		""|"y!") ;;
+		*) NUMSKIPS=$(expr $NUMSKIPS + 1) ;;
+		esac
 		shift
 	done
+	test $NUMSKIPS -eq $NUMTESTS && SKIP= || SKIP=1
 }
 
 # The testing function
-- 
1.7.1



_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic