#! /bin/sh # OSSP rc - Run-command processor # Copyright (c) 2002 Ralf S. Engelschall # Copyright (c) 2002 Cable & Wireless Deutschland GmbH # Copyright (c) 2002 The OSSP Project # # This file is part of OSSP rc, a portable Run-command processor # which can be found at http://www.ossp.org/pkg/lib/rc/ # # Permission to use, copy, modify, and distribute this software for # any purpose with or without fee is hereby granted, provided that # the above copyright notice and this permission notice appear in all # copies. # # THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. # IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR # CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # # test_rc.sh: Run-command processor test script if [ -d $MOPKG/etc ]; then RCBASE=$MOPKG/etc else RCBASE=/usr/opkg/etc fi # Test short options, should fail for false combination usage #echo "./rc -dvef ./rc_test/rcfuncs -hilpsrvxLcqt samba start sleep=2 restart" #./rc -dVef ./rc_test/rcfuncs -hilpsrvxLcqt samba start sleep=2 restart # Test short options, should succeed #echo; echo "./rc -derv -L ./rc_test/rc.%{RCFILE:s/^all$/*/} -c ./rc.conf -f ./rc_test/rcfuncs -t /tmp openssh stop sleep=4 start daily minsize=2097152" #./rc -derv -L ./rc_test/rc.d/rc.%{RCFILE:s/^all$/*/} -c ./rc.conf -f ./rc_test/rcfuncs -t /tmp openssh stop sleep=4 start daily minsize=2097152 # Test some long options, should fail for false combination usage echo; echo "./rc --verbose --silent --NameConfig config --ParseSectionDef \"^%(\w+).*?\n(.*?)^$\" uucp stop sleep=6 start" ./rc --verbose --silent --NameConfig config --ParseSectionDef "^%(\w+).*?\n(.*?)^$" uucp stop sleep=6 start echo; echo "./rc --query myvar --silent --NameConfig config --ParseSectionDef \"^%(\w+).*?\n(.*?)^$\" zebra bing bang" ./rc --query myvar --silent --NameConfig config --ParseSectionDef "^%(\w+).*?\n(.*?)^$" zebra bing bang echo; echo "./rc --conf ./rc.conf --NameConfig config --ParseSectionDef \"^<(.+?)\s*.*?>\n*(.*?)^<\/\1>\" --locate ./rc_test/ --query this barf test" ./rc --conf ./rc.conf --NameConfig config --ParseSectionDef "^<(.+?)\s*.*?>\n*(.*?)^<\/\1>" --locate ./rc_test/ --query this barf test # Test minimal set of long options, should succeed echo; echo "./rc --debug --version --NameConfig config --ParseSectionDef \"^<(.+?)\s*.*?>\n*(.*?)^<\/\1>\" rsyncd nothing matters but the version" ./rc --debug --version --NameConfig config --ParseSectionDef "^<(.+?)\s*.*?>\n*(.*?)^<\/\1>" rsyncd nothing matters but the version echo; echo "./rc --conf $RCBASE/rc.conf --NameConfig config --ParseSectionDef \"^%(\w+).*?\n(.*?)^$\" --locate $RCBASE/rc.d:./rc_test:/etc/rc --query all barf test" ./rc --conf $RCBASE/rc.conf --NameConfig config --ParseSectionDef "^%(\w+).*?\n(.*?)^$" --locate $RCBASE/rc.d:./rc_test:/etc/rc --query all barf test # FIXME these cases are not handled yet by our configuration FIXME # #echo; echo "./rc --debug --version" #./rc --debug --version #echo; echo "./rc --debug --help" #./rc --debug --help #echo; echo "./rc --debug --info --verbose" #./rc --debug --info --verbose #echo; echo "./rc --conf /etc/rc.conf --debug --info --raw" #./rc --conf /etc/rc.conf --debug --info --raw #echo; echo "./rc --conf $RCBASE/rc.conf --tmp /tmp --debug --labels rsyncd" #./rc --conf $RCBASE/rc.conf --tmp /tmp --debug --labels rsyncd # FIXME these cases are not handled yet by our configuration FIXME # echo; echo "./rc --func rc_test/rcfuncs --print --NameConfig config --ParseSectionDef \"^%(\w+).*?\n(.*?)^$\" --verbose openssh stop sleep=4 start" ./rc --func rc_test/rcfuncs --print --NameConfig config --ParseSectionDef "^%(\w+).*?\n(.*?)^$" --verbose openssh stop sleep=4 start echo; echo "./rc --func ./rc_test/rcfuncs --info --eval uucp restart" ./rc --func ./rc_test/rcfuncs --info --eval uucp restart echo; echo "./rc --conf rc_test/myrc.conf --func ./rc_test/rcfuncs --tmp /tmp --NameConfig config --ParseSectionDef \"^<(.+?)\s*.*?>\n*(.*?)^<\/\1>\" --print uucp start" ./rc --conf rc_test/myrc.conf --func ./rc_test/rcfuncs --tmp /tmp --NameConfig config --ParseSectionDef "^<(.+?)\s*.*?>\n*(.*?)^<\/\1>" --print uucp start echo; echo "./rc --conf ./rc_test/myrc.conf --func ./rc_test/rcfuncs --tmp /tmp --debug --NameConfig config --ParseSectionDef \"^<(.+?)\s*.*?>\n*(.*?)^<\/\1>\" --print ntp sync" ./rc --conf ./rc_test/myrc.conf --func ./rc_test/rcfuncs --tmp /tmp --debug --NameConfig config --ParseSectionDef "^<(.+?)\s*.*?>\n*(.*?)^<\/\1>" --print ntp sync echo; echo "./rc --conf ./rc_test/myrc.conf --func ./rc_test/rcfuncs --tmp /tmp --debug --silent --NameConfig config --ParseSectionDef \"^<(.+?)\s*.*?>\n*(.*?)^<\/\1>\" --print ralf feed suppe" ./rc --conf ./rc_test/myrc.conf --func ./rc_test/rcfuncs --tmp /tmp --debug --silent --NameConfig config --ParseSectionDef "^<(.+?)\s*.*?>\n*(.*?)^<\/\1>" --print ralf feed suppe echo; echo "./rc --conf ./rc_test/myrc.conf --func ./rc_test/rcfuncs -L rc_test --NameConfig config --ParseSectionDef \"^%(\w+).*?\n(.*?)^$\" --tmp /tmp --silent --print samba search finish destroy" ./rc --conf ./rc_test/myrc.conf --func ./rc_test/rcfuncs -L rc_test --NameConfig config --ParseSectionDef "^%(\w+).*?\n(.*?)^$" --tmp /tmp --silent --print samba search finish destroy echo; echo "./rc --conf ./rc_test/myrc.conf --func ./rc_test/rcfuncs -L ./rc_test --NameConfig config --ParseSectionDef \"^%(\w+).*?\n(.*?)^$\" --tmp /tmp --silent --print all feed suppe" ./rc --conf ./rc_test/myrc.conf --func ./rc_test/rcfuncs -L ./rc_test --NameConfig config --ParseSectionDef "^%(\w+).*?\n(.*?)^$" --tmp /tmp --silent --print all feed suppe echo; echo "./rc --conf ./rc_test/myrc.conf --func ./rc_test/rcfuncs -L $RCBASE/rc.d --NameConfig config --ParseSectionDef \"^%(\w+).*?\n(.*?)^$\" --tmp /tmp --silent --debug --print all config barf gag" ./rc --conf ./rc_test/myrc.conf --func ./rc_test/rcfuncs -L $RCBASE/rc.d --NameConfig config --ParseSectionDef "^%(\w+).*?\n(.*?)^$" --tmp /tmp --silent --debug --print all config barf gag echo; echo "./rc --conf ./rc_test/myrc.conf --func ./rc_test/rcfuncs -L $RCBASE/rc.d --NameConfig config --ParseSectionDef \"^%(\w+).*?\n(.*?)^$\" --tmp /tmp --silent --debug --eval all config start" ./rc --conf ./rc_test/myrc.conf --func ./rc_test/rcfuncs -L $RCBASE/rc.d --NameConfig config --ParseSectionDef "^%(\w+).*?\n(.*?)^$" --tmp /tmp --silent --debug --eval all config start echo; echo "./rc --conf ./rc_test/myrc.conf --func ./rc_test/rcfuncs -L $RCBASE/rc.d --NameConfig config --ParseSectionDef \"^%(\w+).*?\n(.*?)^$\" --tmp /tmp --silent --debug --exec all config start" ./rc --conf ./rc_test/myrc.conf --func ./rc_test/rcfuncs -L $RCBASE/rc.d --NameConfig config --ParseSectionDef "^%(\w+).*?\n(.*?)^$" --tmp /tmp --silent --debug --exec all config start echo; echo "./rc --conf ./rc_test/myrc.conf --func ./rc_test/rcfuncs -L $RCBASE/rc.d --NameConfig config --ParseSectionDef \"%(.+)\" --tmp /tmp --silent --debug --print pam info" ./rc --conf ./rc_test/myrc.conf --func ./rc_test/rcfuncs -L $RCBASE/rc.d --NameConfig config --ParseSectionDef "%(.+)" --tmp /tmp --silent --debug --print pam info echo; echo "./rc --conf ./rc_test/myrc.conf --func ./rc_test/rcfuncs -L $RCBASE/rc.d --NameConfig config --ParseSectionDef \"%(.+)\" --tmp /tmp --silent --debug --print apache config start" ./rc --conf ./rc_test/myrc.conf --func ./rc_test/rcfuncs -L $RCBASE/rc.d --NameConfig config --ParseSectionDef "%(.+)" --tmp /tmp --silent --debug --print apache config start echo; echo "./rc --conf ./rc_test/myrc.conf --func ./rc_test/rcfuncs -L ./rc_test/ --NameConfig config --ParseSectionDef \"^<(.+?)\s*.*?>\n*(.*?)^<\/\1>\" --tmp /tmp --silent --debug --print all config start" ./rc --conf ./rc_test/myrc.conf --func ./rc_test/rcfuncs -L ./rc_test/ --NameConfig config --ParseSectionDef "^<(.+?)\s*.*?>\n*(.*?)^<\/\1>" --tmp /tmp --silent --debug --print all config start echo; echo "./rc --conf ./rc_test/myrc.conf --func ./rc_test/rcfuncs -L ./rc_test/ --NameConfig config --ParseSectionDef \"^<(.+?)\s*.*?>\n*(.*?)^<\/\1>\" --tmp /tmp --silent --debug --print pam info" ./rc --conf ./rc_test/myrc.conf --func ./rc_test/rcfuncs -L ./rc_test/ --NameConfig config --ParseSectionDef "^<(.+?)\s*.*?>\n*(.*?)^<\/\1>" --tmp /tmp --silent --debug --print pam info echo; echo "./rc --conf ./rc_test/myrc.conf --func $RCBASE/rc.func -L $RCBASE/rc.d/ --NameConfig config --ParseSectionDef \"^%(\w+).*?\n(.*?)^$\" --tmp /tmp --silent --debug --print dhcpd start" ./rc --conf ./rc_test/myrc.conf --func $RCBASE/rc.func -L $RCBASE/rc.d/ --NameConfig config --ParseSectionDef "^%(\w+).*?\n(.*?)^$" --tmp /tmp --silent --debug --print dhcpd start # Next milestone #RequireOwner #RequireGroup #RequireUmask #ParseEnvAss #ParseSectionDef #ParseSectionRef #ParseSectionParam #ParseTerminal #NameConfig #NameCommon #NameDefault #NameError