summaryrefslogtreecommitdiff
path: root/autoopts/test/rc.test
diff options
context:
space:
mode:
Diffstat (limited to 'autoopts/test/rc.test')
-rwxr-xr-xautoopts/test/rc.test240
1 files changed, 240 insertions, 0 deletions
diff --git a/autoopts/test/rc.test b/autoopts/test/rc.test
new file mode 100755
index 0000000..18e005d
--- /dev/null
+++ b/autoopts/test/rc.test
@@ -0,0 +1,240 @@
+#! /bin/sh
+# -*- Mode: Shell-script -*-
+
+# rc.test --- test loading and saving of rc files
+#
+# Time-stamp: "2012-05-13 13:21:58 bkorb"
+# Author: Bruce Korb <bkorb@gnu.org>
+##
+## This file is part of AutoOpts, a companion to AutoGen.
+## AutoOpts is free software.
+## AutoOpts is Copyright (c) 1992-2012 by Bruce Korb - all rights reserved
+##
+## AutoOpts is available under any one of two licenses. The license
+## in use must be one of these two and the choice is under the control
+## of the user of the license.
+##
+## The GNU Lesser General Public License, version 3 or later
+## See the files "COPYING.lgplv3" and "COPYING.gplv3"
+##
+## The Modified Berkeley Software Distribution License
+## See the file "COPYING.mbsd"
+##
+## These files have the following md5sums:
+##
+## 43b91e8ca915626ed3818ffb1b71248b pkg/libopts/COPYING.gplv3
+## 06a1a2e4760c90ea5e1dad8dfaac4d39 pkg/libopts/COPYING.lgplv3
+## 66a5cedaf62c4b2637025f049f9b826f pkg/libopts/COPYING.mbsd
+
+. ./defs
+
+AUTOOPTS_TRACE=every
+AUTOOPTS_TRACE_OUT=">>`pwd`/${testname}-ag-trace.txt"
+export AUTOOPTS_TRACE AUTOOPTS_TRACE_OUT
+
+# # # # # # # # # # DEFINITIONS FILE # # # # # # # # #
+
+: "creating ${testname}.def in `pwd`"
+
+TESTNAME=RC
+export TESTNAME
+
+test_main="yes" \
+argument="mumble" long_opts="yes" \
+${SHELLX} ${stdopts} option second:init third: || \
+ failure "Could not run stdopts.def"
+
+cat >> ${testname}.def <<_EOF_
+homerc = "\$\$/${testname}.rc";
+rcfile = ${testname}.file;
+environrc;
+_EOF_
+
+${AG_L} ${testname}.def || \
+ failure AutoGen could not process A
+
+# # # # # # # # # # VALIDATE HELP # # # # # # # # #
+
+clean_help > ${testname}-base1.help <<_EOF_
+test_rc - Test AutoOpts for rc
+USAGE: rc [ -<flag> [<val>] | --<name>[{=| }<val>] ]... mumble
+ Flg Arg Option-Name Description
+ -o no option The option option descrip
+ -s Str second The second option descrip
+ -t Str third The third option descrip
+ -? no help Display extended usage information and exit
+ -! no more-help Extended usage information passed thru pager
+ -> opt save-opts Save the option state to a config file
+ -< Str load-opts Load options from a config file
+ - disabled as --no-load-opts
+ - may appear multiple times
+
+Options are specified by doubled hyphens and their name or by a single
+hyphen and the flag character.
+
+The following option preset mechanisms are supported:
+ - reading file ..../${testname}.rc/rc.file
+ - examining environment variables named TEST_RC_*
+_EOF_
+
+mkdir ${testname}.rc ${testname}.run
+compile "--help"
+${SED} 's@\( - reading file \).*\(/'${testname}.rc/rc.file'\)@\1....\2@' \
+ ${testname}.help > ${testname}-res1.help
+cmp ${testname}-*1.help || \
+ failure "`diff ${testname}-*.help`"
+
+# # # # # # # # # # DO THE REAL TEST # # # # # # # # #
+
+# Install an initialization for the "second" option.
+# That goes into the ${testname}.rc directory.
+# We change into the ${testname}.run directory and run the program.
+# It should pick up the value saved into the ${testname}.rc dir.
+#
+./${testname} --second=third '->'${testname}.rc/${testname}.file
+
+cd ${testname}.run
+../${testname} -t xxx MUMBLE > ${testname}.cmds
+
+# This is what the output should be:
+#
+cat > ${testname}.test <<'_EOF_'
+OPTION_CT=2
+export OPTION_CT
+TEST_RC_SECOND='third'
+export TEST_RC_SECOND
+TEST_RC_THIRD='xxx'
+export TEST_RC_THIRD
+_EOF_
+
+
+cmp ${testname}.cmds ${testname}.test || {
+ df="`diff -c ${testname}.test ${testname}.cmds`"
+ cd ..
+ failure "${df}"
+}
+
+# # # # #
+
+TEST_RC=--no-load ../${testname} -t xxx MUMBLE > ${testname}-2.cmds
+
+# This is what the output should be:
+#
+cat > ${testname}-2.test <<'_EOF_'
+OPTION_CT=2
+export OPTION_CT
+TEST_RC_THIRD='xxx'
+export TEST_RC_THIRD
+_EOF_
+
+cmp ${testname}-2.cmds ${testname}-2.test || {
+ df="`diff -c ${testname}-2.test ${testname}-2.cmds`"
+ cd ..
+ failure "${df}"
+}
+
+# # # # # # # # # # SECOND TEST OUTPUT FILE # # # # # # # # #
+
+cat >> ../${testname}.rc/${testname}.file <<_EOF_
+[TEST_MUMBLE]
+second fourth
+<!-- This is a comment
+ and it should have no effect -->
+[TEST_${TESTNAME}]
+second = fifth
+
+# this is another comment
+#
+[TEST_STUMBLE]
+second : sixth
+_EOF_
+
+../${testname} -t yyy MUMBLE > ${testname}.cmds
+
+# This is what the output should be:
+#
+cat > ${testname}.test <<'_EOF_'
+OPTION_CT=2
+export OPTION_CT
+TEST_RC_SECOND='fifth'
+export TEST_RC_SECOND
+TEST_RC_THIRD='yyy'
+export TEST_RC_THIRD
+_EOF_
+
+cmp ${testname}.cmds ${testname}.test || {
+ df="`diff -c ${testname}.test ${testname}.cmds`"
+ cd ..
+ failure "${df}"
+}
+
+mv ../${testname}.rc/${testname}.file ../${testname}.rc/${testname}.save
+( ${SED} '/^[TEST_MUMBLE]/,$d' ../${testname}.rc/${testname}.save
+ cat <<- _EOF_
+ <?program test-mumble>
+ second fourth
+ <!-- This is a comment
+ and it should have no effect -->
+ <?program test-${testname}>
+ <second cooked>
+ fifth
+ </second>
+ # this is another comment
+ #
+ <?program test-stumble>
+ second : sixth
+ _EOF_
+) > ../${testname}.rc/${testname}.file
+
+../${testname} -t yyy MUMBLE > ${testname}.cmds
+
+cmp ${testname}.cmds ${testname}.test || {
+ df="USING <?program>: `diff -c ${testname}.test ${testname}.cmds`"
+ cd ..
+ failure "${df}"
+}
+
+# # # # # # # # # # THIRD TEST OUTPUT FILE # # # # # # # # #
+
+cd ${testsubdir}
+
+echo 'disable-save;' >> ${testname}.def
+
+${AG_L} ${testname}.def || \
+ failure AutoGen could not process B
+
+compile "--help"
+${SED} 's@\( - reading file \).*\(/'${testname}.rc/rc.file'\)@\1....\2@' \
+ ${testname}.help > ${testname}-res2.help
+egrep -v ' save-opts +Save ' ${testname}-base1.help > ${testname}-base2.help
+
+cmp ${testname}-*2.help || \
+ failure "`diff ${testname}-*2.help`"
+
+echo 'disable-load;' >> ${testname}.def
+
+${AG_L} ${testname}.def || \
+ failure AutoGen could not process B
+
+compile "--help"
+${SED} 's@\( - reading file \).*\(/'${testname}.rc/rc.file'\)@\1....\2@' \
+ ${testname}.help > ${testname}-res3.help
+
+${SED} -e '/ load-opts *Load /,/multiple times$/d' \
+ -e '/ save-opts *Save /d' \
+ ${testname}-base1.help > ${testname}-base3.help
+
+cmp ${testname}-*3.help || \
+ failure "`diff ${testname}-*3.help`"
+
+# # # # # # # # # # HELP OUTPUT FILE # # # # # # # # #
+
+cleanup
+
+## Local Variables:
+## mode: shell-script
+## indent-tabs-mode: nil
+## sh-indentation: 2
+## End:
+
+# end of rc.test