[Initscripts-ng-commits] r601 - /trunk/src/insserv/debian/testsuite-common

pere at users.alioth.debian.org pere at users.alioth.debian.org
Mon Feb 11 14:37:25 UTC 2008


Author: pere
Date: Mon Feb 11 14:37:25 2008
New Revision: 601

URL: http://svn.debian.org/wsvn/initscripts-ng/?sc=1&rev=601
Log:
New testsuite version from Werner.

Modified:
    trunk/src/insserv/debian/testsuite-common

Modified: trunk/src/insserv/debian/testsuite-common
URL: http://svn.debian.org/wsvn/initscripts-ng/trunk/src/insserv/debian/testsuite-common?rev=601&op=diff
==============================================================================
--- trunk/src/insserv/debian/testsuite-common (original)
+++ trunk/src/insserv/debian/testsuite-common Mon Feb 11 14:37:25 2008
@@ -2,6 +2,9 @@
 # Common test suite definitions, declarations, and functions
 #
 set -eC
+set +o posix
+unset ${!LC@}
+export LANG=POSIX
 
 : ${insserv:=${PWD}/insserv}
 : ${tmpdir:=${PWD}/root}
@@ -11,48 +14,37 @@
 : ${issuse=""}
 : ${debug:=""}
 
-trap 'rm -rf ${tmpdir}' EXIT
 declare -i retval=0
+finish_test ()
+{
+    if test 0 -ne $retval ; then
+        echo "error: one or more test failed."
+    else
+        echo "success: no test failed."
+    fi
+    rm -rf ${tmpdir}
+    return $retval
+}
+trap 'finish_test' EXIT
+
+mkdir -p $initddir
 
 if test -n "${issuse}" ; then
     runlevel_path ()
     {
-	local rc=$1
-	case "$rc" in
-	[bB]*)	echo -n ${initddir}/boot.d/ ;;
-	*)	echo -n ${initddir}/rc${rc}.d/ ;;
-	esac
+	local -a level=($@)
+	level=(${level[@]/%s/S})
+	level=(${level[@]/#/rc})
+	level=(${level[@]/rc[bB]*/boot})
+	printf "${initddir}/%s.d\n" ${level[@]}
     }
     list_rclinks()
     {
 	pushd $initddir/ &> /dev/null
 	echo ${initddir##*/}:
-	ls *
+	ls ${1+"$@"} *
 	popd &> /dev/null
     }
-else
-    runlevel_path ()
-    {
-	local runlevel=$1
-	echo -n ${initddir}/../rc${runlevel}.d/
-    }
-    list_rclinks()
-    {
-	pushd $initddir/../ &> /dev/null
-	ls *
-	popd &> /dev/null
-    }
-fi
-
-insserv_reg ()
-{
-    script=$(printf "${initddir}/%s\n" ${1+"$@"})
-    $insserv $debug -c $insconf -p $initddir -o $overridedir $script
-}
-
-mkdir -p $initddir
-
-if test -n "${issuse}" ; then
     cat <<-'EOF' > $insconf
 	$local_fs	boot.localfs +boot.crypto
 	$network	network
@@ -64,6 +56,16 @@
 	<interactive>	boot.crypto boot.clock boot.localfs boot.rootfsck apache apache2 kdump ntp
 	EOF
 else
+    runlevel_path ()
+    {
+	printf "${initddir}/../rc%s.d\n" ${1+"$@"}
+    }
+    list_rclinks()
+    {
+	pushd $initddir/../ &> /dev/null
+	ls ${1+"$@"} *
+	popd &> /dev/null
+    }
     cat <<-'EOF' > $insconf
 	$local_fs	+mountall +umountfs
 	$network	+networking +ifupdown
@@ -77,6 +79,93 @@
 fi
 chmod u+w,a+r $insconf
 
+insserv_reg ()
+{
+    script=$(printf "${initddir}/%s\n" ${1+"$@"})
+    $insserv $debug -c $insconf -p $initddir -o $overridedir $script
+}
+
+relpath ()
+{
+    local OLDIFS IFS
+    local -a orgwords
+    local -a locwords
+    local -i relp=0
+    local -i deep=0
+    local p l
+    local path=""
+
+    OLDIFS="$IFS"; IFS=/
+    eval orgwords=(${1// /\\\\ }) ; shift
+    eval locwords=(${1// /\\\\ }) ; shift
+    IFS="$OLDIFS"
+    unset OLDIFS
+
+    deep=0
+    relp=0
+    for l in "${locwords[@]}" ; do
+        if test "$l" = ".." ; then
+	    ((deep++))
+	    continue
+	elif test $deep -gt 0 ; then
+	    while ((deep-- > 0)) ; do
+		unset locwords[$((relp+deep))]
+		(((relp-1)-deep < 0)) || unset locwords[$(((relp-1)-deep))]
+	    done
+	    continue
+        fi
+	((relp++))
+    done
+    locwords=(${locwords[@]})
+
+    deep=0
+    relp=0
+    for p in "${orgwords[@]}" ; do
+	if test "$p" = ".." ; then
+	    ((deep++))
+	    continue
+	elif test $deep -gt 0 ; then
+	    while ((deep-- > 0)) ; do
+		unset orgwords[$((relp+deep))]
+		(((relp-1)-deep < 0)) || unset orgwords[$(((relp-1)-deep))]
+	    done
+	    continue
+	fi
+	((relp++))
+    done
+    orgwords=(${orgwords[@]})
+
+    deep=0
+    relp=0
+    for p in "${orgwords[@]}" ; do
+	eval l="\${locwords[$((deep++))]}"
+	if test "$l" != "$p" -o $relp -ne 0 ; then
+	    ((relp++))
+	    path="${path}/$p"
+	    test -n "$l" || continue
+		if test $relp -eq 1 ; then
+		    path="..${path}"
+		else
+		    path="../${path}"
+		fi
+	 fi
+    done
+    unset orgwords p l
+
+    if test $deep -lt ${#locwords[@]} ; then
+	relp=0
+	while test $relp -lt $deep; do
+	    unset locwords[$((relp++))]
+	done
+	while test ${#locwords[@]} -gt 0  ; do
+	    path="../${path}"
+	    unset locwords[$((relp++))]
+	done
+    fi
+
+    echo "$path"
+}
+
 error ()
 {
     echo error: $@
@@ -105,10 +194,10 @@
 
 present_ok ()
 {
-    local runlevel=$1; shift
+    local rcdpath=$(runlevel_path $1); shift
     local script=$1;   shift
     local ret=0
-    test -L $(runlevel_path $runlevel)/[KS][0-9][0-9]$script || ret=1
+    test -L ${rcdpath}/[KS][0-9][0-9]$script || ret=1
     return $ret
 }
 
@@ -155,10 +244,25 @@
     local script2=$1;  shift
     local ret=0 scr order=""
     pushd $rcdpath &> /dev/null
-    for scr in [SK][0-9][0-9]${script1} [SK][0-9][0-9]${script2}; do
-	test -L "${scr}" || continue
-	order="${order:+$order }${scr#[SK][0-9][0-9]}"
-    done
+    if test -n "${issuse}" ; then
+	for scr in S[0-9][0-9]* ; do
+	    test -e "${scr}" || continue
+	    test -L "${scr}" || continue
+	    case "${scr#S[0-9][0-9]}" in
+	    ${script1}) order="${order:+$order }${script1}" ;;
+	    ${script2}) order="${order:+$order }${script2}" ;;
+	    esac
+	done
+    else
+	for scr in [SK][0-9][0-9]* ; do
+	    test -e "${scr}" || continue
+	    test -L "${scr}" || continue
+	    case "${scr#[SK][0-9][0-9]}" in
+	    ${script1}) order="${order:+$order }${script1}" ;;
+	    ${script2}) order="${order:+$order }${script2}" ;;
+	    esac
+	done
+    fi
     popd &> /dev/null
     test "$order" = "$script1 $script2" || ret=1
     return $ret
@@ -170,7 +274,7 @@
     local runlevel=$1
     local script1=$2
     local script2=$3
-    order_ok ${1+"$@"} || error   "incorrect $runlevel sequence $script1 not before $script2" || true
+    order_ok ${1+"$@"} && error   "incorrect $runlevel sequence $script1 not before $script2" || true
 }
 
 # Non-fatal check
@@ -179,15 +283,6 @@
     local runlevel=$1
     local script1=$2
     local script2=$3
-    order_ok ${1+"$@"} || warning "incorrect $runlevel sequence $script1 not before $script2" || true
-}
-
-finish_test ()
-{
-    if test 0 -ne $retval ; then
-        echo "error: one or more test failed."
-    else
-        echo "success: no test failed."
-    fi
-    exit $retval
-}
+    order_ok ${1+"$@"} && warning "incorrect $runlevel sequence $script1 not before $script2" || true
+}
+




More information about the Initscripts-ng-commits mailing list