[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