Re: testsuite and bashisms
10.11.2013 19:25, Michael Tokarev wrpte: Another question/issue with the testsuite. ' The testsuite uses ${var/search/replace} construct heavily. It is implemented in bash and in busybox ash, but not, for example, in dash, and it is not in POSIX either. So when the system /bin/sh does not implement this construct, los of tests fails like this: Actually there are just 2 places which are trivial to fix, and the following patch does just that. Signed-off-by: Michael Tokarev m...@tls.msk.ru Thanks, /mjt From: Michael Tokarev m...@tls.msk.ru Subject: fix bashisms in testsuite/testing.sh and testsuite/hostid/hostid-works These places use ${var/search/replace} construct which is non-standard. Replace it with equivalent constructs. Signed-off-by: Michael Tokarev m...@tls.msk.ru diff --git a/testsuite/hostid/hostid-works b/testsuite/hostid/hostid-works index bcfd717..8c20bdf 100644 --- a/testsuite/hostid/hostid-works +++ b/testsuite/hostid/hostid-works @@ -1,8 +1,6 @@ h=x$(busybox hostid) # Is $h a sequence of hex numbers? -x=${h//[0123456789abcdef]/x} -x=${x//xxx/x} -x=${x//xxx/x} -x=${x//xxx/x} -x=${x//xx/x} -test x$x = xx +case $h in + x*[!0-9a-f]*) false;; + *) true;; +esac diff --git a/testsuite/testing.sh b/testsuite/testing.sh index e7e64e5..84e00d1 100644 --- a/testsuite/testing.sh +++ b/testsuite/testing.sh @@ -56,10 +56,9 @@ optional() { SKIP= while test $1; do - if test x${OPTIONFLAGS/*:$1:*/y} != xy; then - SKIP=1 - return - fi + case ${OPTIONFLAGS} in + *:$1:*) SKIP=1; return;; + esac shift done } ___ busybox mailing list busybox@busybox.net http://lists.busybox.net/mailman/listinfo/busybox
Re: testsuite and bashisms
10.11.2013 19:39, Michael Tokarev wrote: 10.11.2013 19:25, Michael Tokarev wrpte: Another question/issue with the testsuite. ' The testsuite uses ${var/search/replace} construct heavily. It is implemented in bash and in busybox ash, but not, for example, in dash, and it is not in POSIX either. So when the system /bin/sh does not implement this construct, los of tests fails like this: Actually there are just 2 places which are trivial to fix, and the following patch does just that. Actually there are more of these, and the original patch was wrong. Applied is another version which actually works (and tested) and fixes more places, together with $((n++) and `type -p'. With these changes, I can now run the testsuite on default debian install. Thanks, /mjt ___ busybox mailing list busybox@busybox.net http://lists.busybox.net/mailman/listinfo/busybox
Re: testsuite and bashisms
10.11.2013 20:09, Michael Tokarev wrote: 10.11.2013 19:39, Michael Tokarev wrote: 10.11.2013 19:25, Michael Tokarev wrpte: Another question/issue with the testsuite. ' The testsuite uses ${var/search/replace} construct heavily. It is implemented in bash and in busybox ash, but not, for example, in dash, and it is not in POSIX either. So when the system /bin/sh does not implement this construct, los of tests fails like this: Actually there are just 2 places which are trivial to fix, and the following patch does just that. Actually there are more of these, and the original patch was wrong. Applied is another version which actually works (and tested) and fixes more places, together with $((n++) and `type -p'. Attached, not applied. Actually attached now :) With these changes, I can now run the testsuite on default debian install. Thanks, /mjt From: Michael Tokarev m...@tls.msk.ru Subject: fix bashisms in testsuite/ These places use ${var/search/replace}, $((n++) and `type -p' constructs which are not-so-standard. Replace with equivalent constructs. Signed-off-by: Michael Tokarev m...@tls.msk.ru diff --git a/testsuite/hostid/hostid-works b/testsuite/hostid/hostid-works index bcfd717..8c20bdf 100644 --- a/testsuite/hostid/hostid-works +++ b/testsuite/hostid/hostid-works @@ -1,8 +1,6 @@ h=x$(busybox hostid) # Is $h a sequence of hex numbers? -x=${h//[0123456789abcdef]/x} -x=${x//xxx/x} -x=${x//xxx/x} -x=${x//xxx/x} -x=${x//xx/x} -test x$x = xx +case $h in + x*[!0-9a-f]*) false;; + *) true;; +esac diff --git a/testsuite/md5sum.tests b/testsuite/md5sum.tests index 1068b08..1680cf4 100755 --- a/testsuite/md5sum.tests +++ b/testsuite/md5sum.tests @@ -30,7 +30,7 @@ result=`( n=0 while test $n -le 999; do echo $text | head -c $n | $sum - : $((n++)) + n=$(($n+1)) done | $sum )` diff --git a/testsuite/testing.sh b/testsuite/testing.sh index e7e64e5..f5b7569 100644 --- a/testsuite/testing.sh +++ b/testsuite/testing.sh @@ -56,10 +56,10 @@ optional() { SKIP= while test $1; do - if test x${OPTIONFLAGS/*:$1:*/y} != xy; then - SKIP=1 - return - fi + case ${OPTIONFLAGS} in + *:$1:*) ;; + *) SKIP=1; return ;; + esac shift done } diff --git a/testsuite/which/which-uses-default-path b/testsuite/which/which-uses-default-path index 63ceb9f..1b3ac66 100644 --- a/testsuite/which/which-uses-default-path +++ b/testsuite/which/which-uses-default-path @@ -1,4 +1,4 @@ -BUSYBOX=$(type -p busybox) +BUSYBOX=$(command -pv busybox) SAVED_PATH=$PATH unset PATH $BUSYBOX which ls ___ busybox mailing list busybox@busybox.net http://lists.busybox.net/mailman/listinfo/busybox
Re: testsuite and bashisms
On 10 November 2013 17:19, Michael Tokarev m...@tls.msk.ru wrote: 10.11.2013 20:09, Michael Tokarev wrote: 10.11.2013 19:39, Michael Tokarev wrote: 10.11.2013 19:25, Michael Tokarev wrpte: Another question/issue with the testsuite. ' The testsuite uses ${var/search/replace} construct heavily. It is implemented in bash and in busybox ash, but not, for example, in dash, and it is not in POSIX either. So when the system /bin/sh does not implement this construct, los of tests fails like this: Actually there are just 2 places which are trivial to fix, and the following patch does just that. Actually there are more of these, and the original patch was wrong. Applied is another version which actually works (and tested) and fixes more places, together with $((n++) and `type -p'. Attached, not applied. Actually attached now :) With these changes, I can now run the testsuite on default debian install. Thanks, LGTM, applied. thanks, ___ busybox mailing list busybox@busybox.net http://lists.busybox.net/mailman/listinfo/busybox