From 38eeac41e44846bdcd3bf0cc6bfa6ec3eda5b28e Mon Sep 17 00:00:00 2001 From: Xavier Delaruelle Date: Sun, 19 May 2019 22:48:16 +0200 Subject: [PATCH] ts: test 'config' sub-command --- site.exp.in | 2 + testsuite/modulefiles/modbad/config | 28 ++ testsuite/modules.00-init/071-args.exp | 1 + .../modules.50-cmds/151-module-onlytop.exp | 2 +- testsuite/modules.70-maint/220-config.exp | 269 ++++++++++++++++++ testsuite/modules.90-avail/070-full.exp | 173 +++++------ 6 files changed, 388 insertions(+), 87 deletions(-) create mode 100644 testsuite/modulefiles/modbad/config create mode 100644 testsuite/modules.70-maint/220-config.exp diff --git a/site.exp.in b/site.exp.in index 3ddd6c90..e9ccf651 100644 --- a/site.exp.in +++ b/site.exp.in @@ -4,6 +4,7 @@ set install_bindir "@bindir@" set install_mandir "@mandir@" set install_etcdir "@etcdir@" set install_initdir "@initdir@" +set install_libdir "@libdir@" set install_libexecdir "@libexecdir@" set install_modulefilesdir "@modulefilesdir@" @@ -21,6 +22,7 @@ set install_quarantinevars "@quarantinevars@" set install_compatversion "@compatversion@" set install_libtclenvmodules "@libtclenvmodules@" +set install_shlib_suffix "@SHLIB_SUFFIX@" set install_setmanpath "@setmanpath@" set install_setbinpath "@setbinpath@" diff --git a/testsuite/modulefiles/modbad/config b/testsuite/modulefiles/modbad/config new file mode 100644 index 00000000..024df107 --- /dev/null +++ b/testsuite/modulefiles/modbad/config @@ -0,0 +1,28 @@ +#%Module1.0 + +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: modbad/%M% +# Revision: %I% +# First Edition: 2019/05/16 +# Last Mod.: %U%, %G% +# +# Authors: Xavier Delaruelle, xavier.delaruelle@cea.fr +# +# Description: Testuite modulefile +# Command: +# +# Invocation: +# Result: %R{ +# }R% +# Comment: %C{ +# test behavior against a modulefile using module sub-commands +# only reachable from command line +# }C% +# +############################################################################## + +module config +module help diff --git a/testsuite/modules.00-init/071-args.exp b/testsuite/modules.00-init/071-args.exp index ba6de83d..a992396f 100644 --- a/testsuite/modules.00-init/071-args.exp +++ b/testsuite/modules.00-init/071-args.exp @@ -83,6 +83,7 @@ testouterr_cmd "sh" "prepend-path" "ERR" "${bad_arg1}prepend-path${bad_arg2}\n$e testouterr_cmd "sh" "remove-path" "ERR" "${bad_arg1}remove-path${bad_arg2}\n$err_typehelp" testouterr_cmd "sh" "is-avail" "ERR" "${bad_arg1}is-avail${bad_arg2}\n$err_typehelp" testouterr_cmd "sh" "info-loaded" "ERR" "${bad_arg1}info-loaded${bad_arg2}\n$err_typehelp" +testouterr_cmd "sh" "config foo bar foo" "ERR" "${bad_arg1}config${bad_arg2}\n$err_typehelp" # diff --git a/testsuite/modules.50-cmds/151-module-onlytop.exp b/testsuite/modules.50-cmds/151-module-onlytop.exp index 1945d6a4..92fe37f1 100644 --- a/testsuite/modules.50-cmds/151-module-onlytop.exp +++ b/testsuite/modules.50-cmds/151-module-onlytop.exp @@ -21,7 +21,7 @@ # ############################################################################## -foreach subcmd [list append-path prepend-path remove-path autoinit help is-loaded is-saved is-used is-avail path paths info-loaded clear] { +foreach subcmd [list append-path prepend-path remove-path autoinit help is-loaded is-saved is-used is-avail path paths info-loaded clear config] { set module "modbad/$subcmd" set modulefile "$modpath/$module" set modulefilere "$modpathre/$module" diff --git a/testsuite/modules.70-maint/220-config.exp b/testsuite/modules.70-maint/220-config.exp new file mode 100644 index 00000000..012cb144 --- /dev/null +++ b/testsuite/modules.70-maint/220-config.exp @@ -0,0 +1,269 @@ +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: modules.50-cmds/%M% +# Revision: %I% +# First Edition: 2019/05/19 +# Last Mod.: %U%, %G% +# +# Authors: Xavier Delaruelle, xavier.delaruelle@cea.fr +# +# Description: Testuite testsequence +# Command: config +# Modulefiles: +# Sub-Command: +# +# Comment: %C{ +# Test of the 'config' command +# }C% +# +############################################################################## + +# set default configuration +unsetenv_var MODULES_COLOR +unsetenv_var MODULERCFILE + +set version_report "Modules Release \[0-9a-zA-Z\.\+\\-\]+ \\(\[0-9\-\]{10}\\)" +set config_header "- Config. name $modlin.- Value \\(set by if default overridden\\) $modlin" +set state_header "- State name $modlin.- Value $modlin" +set envvar_header "- Env. variable $modlin.- Value $modlin" + +array set configdfl [list\ + allow_extra_siteconfig [expr {$install_extrasiteconfig eq {y}}]\ + auto_handling [expr {$install_autohandling eq {y}}]\ + avail_indepth [expr {$install_availindepth eq {y}}]\ + avail_report_dir_sym 1\ + avail_report_mfile_sym 1\ + collection_pin_version 0\ + collection_target \ + color never\ + colors [expr {$install_termbg eq {dark} ? $install_darkbgcolors : $install_lightbgcolors}]\ + contact root@localhost\ + extra_siteconfig \ + ignored_dirs {CVS RCS SCCS .svn .git .SYNC .sos}\ + pager "$install_pager $install_pageropts"\ + rcfile \ + run_quarantine \ + silent_shell_debug \ + siteconfig $siteconfig_filere\ + tcl_ext_lib lib/libtclenvmodules$install_shlib_suffix\ + term_background $install_termbg\ +] + +array set configvar [list\ + auto_handling MODULES_AUTO_HANDLING\ + avail_indepth MODULES_AVAIL_INDEPTH\ + collection_pin_version MODULES_COLLECTION_PIN_VERSION\ + collection_target MODULES_COLLECTION_TARGET\ + color MODULES_COLOR\ + colors MODULES_COLORS\ + contact MODULECONTACT\ + extra_siteconfig MODULES_SITECONFIG\ + pager MODULES_PAGER\ + rcfile MODULERCFILE\ + run_quarantine MODULES_RUN_QUARANTINE\ + silent_shell_debug MODULES_SILENT_SHELL_DEBUG\ + term_background MODULES_TERM_BACKGROUND\ +] + +array set configvalid [list\ + auto_handling {0 1}\ + avail_indepth {0 1}\ + collection_pin_version {0 1}\ + color {never auto always}\ + silent_shell_debug {0 1}\ + term_background {dark light}\ +] + +set statelist [list cmdline debug extra_siteconfig_loaded force is_stderr_tty is_win machine os pager_started paginate path_separator rc_loaded siteconfig_loaded shell shelltype subcmd subcmd_args tcl_ext_lib_loaded tcl_version term_columns] + + +# single config parameter report +foreach param [array names configdfl] { + testouterr_cmd_re sh "config $param" OK "$version_report\n\n$config_header\n$param\\s+$configdfl($param)" +} + +# test full config report +set tserr "$version_report\n\n$config_header" +foreach param [lsort [array names configdfl]] { + append tserr "\n$param\\s+$configdfl($param)" +} +testouterr_cmd_re ALL config OK $tserr + +# unknown parameter report +testouterr_cmd_re sh {config foo} ERR "$error_msgs: Configuration option 'foo' does not exist" + +# try set unknown parameter +testouterr_cmd_re sh {config foo bar} ERR "$error_msgs: Configuration option 'foo' does not exist" + +# try set parameter that could not be altered +foreach param [array names configdfl] { + if {![info exists configvar($param)]} { + testouterr_cmd_re sh "config $param foo" ERR "$error_msgs: Configuration option '$param' cannot be altered" + testouterr_cmd_re sh "config --reset $param" ERR "$error_msgs: Configuration option '$param' cannot be altered" + } +} + +# set parameter that could be altered and whose value is checked +foreach param [array names configvalid] { + # valid value tests + foreach val $configvalid($param) { + set ans [list [list set $configvar($param) $val]] + testouterr_cmd_re sh "config $param $val" $ans {} + } + # invalid value test + testouterr_cmd_re sh "config $param foo" ERR "$error_msgs: Valid values for configuration option '$param' are: $configvalid($param)" + # reset to default + set ans [list [list unset $configvar($param)]] + testouterr_cmd_re sh "config --reset $param" $ans {} +} + +# set parameter that could be altered and whose value is not checked +foreach param [array names configvar] { + if {![info exists configvalid($param)]} { + set ans [list [list set $configvar($param) foo]] + testouterr_cmd_re sh "config $param foo" $ans {} + # reset to default + set ans [list [list unset $configvar($param)]] + testouterr_cmd_re sh "config --reset $param" $ans {} + } +} + +# set parameter with an empty value +set ans [list [list set $configvar(rcfile) {}]] +testouterr_cmd_re sh "config rcfile " $ans {} +# report parameter set with an empty value +setenv_var $configvar(rcfile) {} +testouterr_cmd_re sh "config rcfile" OK "$version_report\n\n$config_header\nrcfile\\s+ \\(env-var\\)" + + +# check full config report when all parameters have been changed +array set configset [array get configdfl] +foreach param [array names configvar] { + # ensure valid value is set for colors and pager + if {$param eq {colors}} { + set val err=31 + } elseif {$param eq {pager}} { + set val $configdfl(pager) + } elseif {[info exists configvalid($param)]} { + set val [lindex $configvalid($param) 0] + } else { + set val foo + } + set configset($param) $val + setenv_var $configvar($param) $val +} +# also set volatile config option +set configset(runenv_foo) foo +setenv_var MODULES_RUNENV_FOO foo + +set tserr "$version_report\n\n$config_header" +foreach param [lsort [array names configset]] { + append tserr "\n$param\\s+$configset($param)" + if {[info exists configvar($param)] || $param eq {runenv_foo}} { + append tserr " \\(env-var\\)" + } +} +testouterr_cmd_re sh config OK $tserr + +# check full config report when all parameters have been changed, by cmd-line when possible +set tserr "$version_report\n\n$config_header" +foreach param [lsort [array names configset]] { + append tserr "\n$param\\s+$configset($param)" + if {$param eq {auto_handling} || $param eq {color}} { + append tserr " \\(cmd-line\\)" + } elseif {[info exists configvar($param)] || $param eq {runenv_foo}} { + append tserr " \\(env-var\\)" + } +} +testouterr_cmd_re sh {config --no-auto --color=never} OK $tserr + + +# report current state +set tserr "$version_report\n\n$config_header" +foreach param [lsort [array names configset]] { + append tserr "\n$param\\s+$configset($param)" + if {[info exists configvar($param)] || $param eq {runenv_foo}} { + append tserr " \\(env-var\\)" + } +} +append tserr "\n\n$state_header" +foreach param $statelist { + append tserr "\n$param\\s+.*" +} +append tserr "\n\n$envvar_header" +set envvar_list [list] +foreach var [list LOADEDMODULES _LMFILES_ MODULE* *_modshare *_modquar *_module*] { + set envvar_list [concat $envvar_list [array names env -glob $var]] +} +foreach envvar [lsort -unique $envvar_list] { + append tserr "\n$envvar\\s+$env($envvar)" +} +testouterr_cmd_re sh {config --dump-state} OK $tserr + +# report current state with some module loaded +setenv_loaded_module [list trace/all_on prereq/full] [list $modpath/trace/all_on $modpath/prereq/full] [list trace/all_on] +setenv_path_var MODULES_LMPREREQ prereq/full&trace/all_on +set tserr "$version_report\n\n$config_header" +foreach param [lsort [array names configset]] { + append tserr "\n$param\\s+$configset($param)" + if {[info exists configvar($param)] || $param eq {runenv_foo}} { + append tserr " \\(env-var\\)" + } +} +append tserr "\n\n$state_header" +foreach param $statelist { + append tserr "\n$param\\s+.*" +} +append tserr "\n\n$envvar_header" +set envvar_list [list] +foreach var [list LOADEDMODULES _LMFILES_ MODULE* *_modshare *_modquar *_module*] { + set envvar_list [concat $envvar_list [array names env -glob $var]] +} +foreach envvar [lsort -unique $envvar_list] { + append tserr "\n$envvar\\s+$env($envvar)" +} +testouterr_cmd_re sh {config --dump-state} OK $tserr + + +# bad argument number +testouterr_cmd_re sh "config --reset auto_handling 0" ERR "$error_msgs: Unexpected number of args for 'config' command\n$err_typehelp" +testouterr_cmd_re sh "config --dump-state --reset auto_handling 0" ERR "$error_msgs: Unexpected number of args for 'config' command\n$err_typehelp" + +# --dump-state ignored in some cases +set ans [list [list unset $configvar(auto_handling)]] +testouterr_cmd_re sh "config --dump-state --reset auto_handling" $ans {} +set ans [list [list set $configvar(auto_handling) 0]] +testouterr_cmd_re sh "config --dump-state auto_handling 0" $ans {} + + +# +# Cleanup +# + +# restore environment +unsetenv_loaded_module +unsetenv_path_var MODULES_LMPREREQ +foreach param [array names configvar] { + unsetenv_var $configvar($param) +} +unsetenv_var MODULES_RUNENV_FOO +setenv_var MODULES_COLOR never +setenv_var MODULERCFILE $env(TESTSUITEDIR)/etc/empty + +unset version_report +unset config_header +unset state_header +unset envvar_header +unset configdfl +unset configvar +unset configvalid +unset statelist + +unset tserr +unset param +unset envvar +unset envvar_list +unset val +unset ans diff --git a/testsuite/modules.90-avail/070-full.exp b/testsuite/modules.90-avail/070-full.exp index 4ef83ab1..f5c081c5 100644 --- a/testsuite/modules.90-avail/070-full.exp +++ b/testsuite/modules.90-avail/070-full.exp @@ -44,92 +44,93 @@ set len [string length $modpath] set lrep [expr {($test_cols - $len - 2)/2}] set rrep [expr {$test_cols - $len - 2 - $lrep}] set ts_sh "[string repeat {-} $lrep] $modpath [string repeat {-} $rrep] -alias/1.0 info/others loc_sym/1.0 modbad/is-saved spread/2.0 -alias/2.0 info/shells loc_sym/alias1 modbad/is-used spread/3.0 -alias/3.0 info/shellsexp loc_sym/alias2 modbad/path spread/4.0 -append/0.1 info/specified(foo) loc_sym/alias3 modbad/paths spread/5.0 -append/0.2 info/type loc_sym/alias4 modbad/prepend-path spread/6.0 -append/0.3 info/user loc_sym/alias5 modbad/remove-path spread/7.0 -append/0.4 info/userexp loc_sym/alias6 module/2.0 spread/8.0 -append/0.5 inforc/1.0 loc_sym/alias7 module/bad spreadrc/dir1/1.0 -append/1.0 inforc/2.0(avail:bar:default) loc_sym/alias8 module/empty spreadrc/dir2/1.0 -append/1.1 inforc/foo(@) loc_sym/alias9 module/err spreadrc/dir3/1.0 -append/1.3 load/00 loc_sym/alias10 module/lbad spreadrc/dir4/1.0 -append/1.4 load/10 loc_sym/alias11 module/lerr spreadrc/dir5/1.0 -append/1.5 load/11 loc_sym/exec1 module/lunk spreadrc/dir6/1.0 -append/1.6 load/12 loc_sym/exec2 module/meta spreadrc/dir7/1.0 -append/1.7 load/13 loc_sym/exec3 module/relpath spreadrc/dir8/1.0 -append/2.0 load/14 loc_sym/getvers1 module/unk symlink/0.9 -append/2.1 load/15 loc_sym/getvers2 modvar/modfile symlink/1(@) -append/2.2 load/16 loc_sym/getvers3 modvar/submodfile symlink/1.2(default:new) -append/2.3 load/17 loc_sym/getvers4 prepend/0.1 symlink/bar(@) -append/2.4 load/18 loc_sym/getvers5 prepend/0.2 symlink2/1.0 -append/4.0 load/19 loc_sym/getvers6 prepend/0.3 symlink2/2.0 -append/4.1 load/20 loc_sym/getvers7 prepend/0.4 system/1.0 -append/5.0 load/21 loc_sym/getvers8 prepend/0.5 system/2.0 -append/6.0 load/22 loc_sym/getvers9 prepend/1.0 test/1.0 -append/7.0 load/23 loc_sym/getvers10 prepend/1.1 test/1.2 -append/8.0 load/24 loc_sym/versinf1 prepend/1.3 test/2.0 -averssort/1(@) load/25 loc_sym/versinf2 prepend/1.4 tr2_loc/(trreg) -averssort/1.2.4(@) load/26 loc_sym/versinf3 prepend/1.5 tr2_loc/al1(tr2unstable:@) -averssort/1.10(@) load/27 loc_sym/versinf4 prepend/1.6 tr2_loc/al2(tr2bar:@) -bad/after(good) load/28 loc_sym/versinf5 prepend/1.7 tr2_loc/al3(default:tr2exp:trreg:@) -bad/before load/29 loc_sym/versinf6 prepend/1.8 tr2_loc/al4(@) -bad2/body load/30 loc_sym/versinf7 prepend/1.9 tr2_loc/al5(default:trreg:@) -bad2/proc load/all(default) loc_sym/version1 prepend/2.0 tr_loc/al1(tr2unstable:trunstable:@) -break/1.0 loc_def/default loc_sym/version2 prepend/2.1 tr_loc/al2(default:tr2bar:tr2exp:trbar:trreg:@) -break/2.0 loc_def/truedef loc_sym/version3 prepend/2.2 tr_loc/al3(trexp:@) -break/3.0 loc_dv1/1.0 loc_sym/version4 prepend/2.3 tr_loc/al4(@) -break/4.0 loc_dv1/2.0 loc_sym/version5 prepend/2.4 tr_loc/al5(@) -break/5.0 loc_dv2/1.0(default) loc_sym/version6 prepend/3.0 trace/all_off -break/6.0 loc_dv2/2.0 loc_sym/version7 prepend/3.1 trace/all_on -chdir/1.0 loc_dv3/1.0 loc_sym/version8 prepend/4.0 uname/cache -chdir/2.0 loc_dv3/2.0 loc_sym/version9 prepend/8.0 uname/domain -chdir/3.0 loc_dv4/1.0 loc_sym/version10 prereq/full uname/machine -chdir/4.0 loc_dv6/1.0 loc_sym/version11 prereq/fullpath uname/nodename -coll/a loc_dv6/2.0/1.0 loc_sym/version12 prereq/module uname/release -coll/b loc_dv7/1.0 loc_sym/version13 prereq/orlist uname/sysname -coll/c loc_dv7/2.0/(default) loc_sym/version14 prereq/relpath uname/unk -coll/d loc_dv7/2.0/1.0 loc_sym/version15 puts/1 uname/version -conflict/full loc_dv7/3.0 loc_sym/version16 puts/2 unsetenv/0.6 -conflict/fullpath loc_dv8/1.0 loc_sym/version17 puts/3 unsetenv/0.8 -conflict/module loc_dv8/2.0 loc_sym/version18 puts/4 unsetenv/0.9 -conflict/relpath loc_dv9/1.0(default) loc_sym/version19 puts/5 unsetenv/1.0 -continue/1.0 loc_dv9/2.0 loc_sym/version20 puts/6 use/1.0(default) -continue/2.0 loc_dvv1/1.0(default) loc_sym/version21 puts/7 use/2.0 -continue/3.0 loc_dvv1/2.0 loc_sym/version22 puts/8 use/2.1 -continue/4.0 loc_fq/1.0 loc_sym/version23 puts/9 use/2.2 -continue/5.0 loc_rc1/1.0(foo) loc_sym/version24 recurs/modA use/3.0 -continue/6.0 loc_rc1/2.0 loc_sym/version25 recurs/modB use/3.1 -dirmodalias(@) loc_rc2/1.0(bar:blah:foo) loc_sym/version26 remove/0.3 use/3.2 -dirmodalias/1.0 loc_rc2/2.0 loc_tr/(reg) remove/0.4 use/4.0 -dirmodvirt loc_rc3/1.0(default) loc_tr/1.0(cur:stable) remove/0.5 use/4.1 -dirmodvirt/1.0 loc_rc3/2.0(cur:stable) loc_tr/2.0(next:tr2unstable:trunstable:unstable) remove/1.0 user/adv -empty/1.0 loc_rc3/3.0(chk:exp:new:test) loc_tr/3.0(bar:default:exp:foo:reg:tr2bar:tr2exp:trbar:trexp:trreg) remove/1.3 user/advanced -eschars/1.0 loc_rc4/1.0 loc_tr/al1(unstable:@) remove/1.4 user/exp -exit/1.0 loc_rc4/2.0(default) loc_tr/al2(bar:default:exp:reg:trexp:@) remove/1.5 user/expert -exit/2.0 loc_rc4/3.0 loc_tr/al3(default:exp:reg:@) remove/1.6 user/nov -exit/3.0 loc_rc5/1.0 loc_tr/al4(default:reg:@) remove/1.7 user/novice -exit/4.0 loc_rc5/2.0 loc_virt1/1.0 remove/2.0 user/undef -function/1.0 loc_rc6/0.9 loc_virt1/2.0 remove/2.3 verbose/msg -function/2.0 loc_rc6/1(@) loc_virt1/3.0 remove/2.4 verbose/off -getenv/0.6 loc_rc6/1.2(default:new) loc_virt1/4.0 remove/3.0 verbose/on -getenv/1.0 loc_rc6/bar(@) loc_virt2/1.0 remove/3.1 verbose/undef -help/2.0 loc_rc7/0.9 loc_virt2/2.0 remove/4.0 versions/1.1 -info/command loc_rc7/1(@) log/badfac remove/4.1 versions/1.2 -info/commandexp loc_rc7/1.2 log/err_both_1 remove/4.2 versions/1.3 -info/isavail loc_rc7/bar(@) log/err_both_2 remove/5.0 verssort/1 -info/isloaded loc_rc8/0.9(@) log/err_file remove/8.0 verssort/1.2.1 -info/issaved loc_rc8/1.0 log/err_syslog setenv/0.6 verssort/1.2.4 -info/isused loc_rc010/2.0 modbad/append-path setenv/0.7.1 verssort/1.8-2015-12-01 -info/loaded loc_rcv1/1(@) modbad/autoinit setenv/0.7.2 verssort/1.8-2016-02-01 -info/mode1 loc_rcv1/1.1 modbad/clear setenv/0.8 verssort/1.10 -info/mode2 loc_rcv1/1.2(default:new) modbad/empty setenv/1.0 whatis/lines -info/mode3 loc_rcv1/2.0 modbad/foo source/0.9 whatis/multiple -info/mode4 loc_rcv1/bar(@) modbad/help source/1.0 whatis/none -info/mode5 loc_rcv2/1.2 modbad/info-loaded source/1.1 whatis/single -info/mode6 loc_rcv2/1.5 modbad/is-avail source/1.2 whatis/string -info/name loc_rcv2/2.0 modbad/is-loaded spread/1.0 x-resource/1 " +alias/1.0 info/shells loc_sym/alias2 modbad/path spread/5.0 +alias/2.0 info/shellsexp loc_sym/alias3 modbad/paths spread/6.0 +alias/3.0 info/specified(foo) loc_sym/alias4 modbad/prepend-path spread/7.0 +append/0.1 info/type loc_sym/alias5 modbad/remove-path spread/8.0 +append/0.2 info/user loc_sym/alias6 module/2.0 spreadrc/dir1/1.0 +append/0.3 info/userexp loc_sym/alias7 module/bad spreadrc/dir2/1.0 +append/0.4 inforc/1.0 loc_sym/alias8 module/empty spreadrc/dir3/1.0 +append/0.5 inforc/2.0(avail:bar:default) loc_sym/alias9 module/err spreadrc/dir4/1.0 +append/1.0 inforc/foo(@) loc_sym/alias10 module/lbad spreadrc/dir5/1.0 +append/1.1 load/00 loc_sym/alias11 module/lerr spreadrc/dir6/1.0 +append/1.3 load/10 loc_sym/exec1 module/lunk spreadrc/dir7/1.0 +append/1.4 load/11 loc_sym/exec2 module/meta spreadrc/dir8/1.0 +append/1.5 load/12 loc_sym/exec3 module/relpath symlink/0.9 +append/1.6 load/13 loc_sym/getvers1 module/unk symlink/1(@) +append/1.7 load/14 loc_sym/getvers2 modvar/modfile symlink/1.2(default:new) +append/2.0 load/15 loc_sym/getvers3 modvar/submodfile symlink/bar(@) +append/2.1 load/16 loc_sym/getvers4 prepend/0.1 symlink2/1.0 +append/2.2 load/17 loc_sym/getvers5 prepend/0.2 symlink2/2.0 +append/2.3 load/18 loc_sym/getvers6 prepend/0.3 system/1.0 +append/2.4 load/19 loc_sym/getvers7 prepend/0.4 system/2.0 +append/4.0 load/20 loc_sym/getvers8 prepend/0.5 test/1.0 +append/4.1 load/21 loc_sym/getvers9 prepend/1.0 test/1.2 +append/5.0 load/22 loc_sym/getvers10 prepend/1.1 test/2.0 +append/6.0 load/23 loc_sym/versinf1 prepend/1.3 tr2_loc/(trreg) +append/7.0 load/24 loc_sym/versinf2 prepend/1.4 tr2_loc/al1(tr2unstable:@) +append/8.0 load/25 loc_sym/versinf3 prepend/1.5 tr2_loc/al2(tr2bar:@) +averssort/1(@) load/26 loc_sym/versinf4 prepend/1.6 tr2_loc/al3(default:tr2exp:trreg:@) +averssort/1.2.4(@) load/27 loc_sym/versinf5 prepend/1.7 tr2_loc/al4(@) +averssort/1.10(@) load/28 loc_sym/versinf6 prepend/1.8 tr2_loc/al5(default:trreg:@) +bad/after(good) load/29 loc_sym/versinf7 prepend/1.9 tr_loc/al1(tr2unstable:trunstable:@) +bad/before load/30 loc_sym/version1 prepend/2.0 tr_loc/al2(default:tr2bar:tr2exp:trbar:trreg:@) +bad2/body load/all(default) loc_sym/version2 prepend/2.1 tr_loc/al3(trexp:@) +bad2/proc loc_def/default loc_sym/version3 prepend/2.2 tr_loc/al4(@) +break/1.0 loc_def/truedef loc_sym/version4 prepend/2.3 tr_loc/al5(@) +break/2.0 loc_dv1/1.0 loc_sym/version5 prepend/2.4 trace/all_off +break/3.0 loc_dv1/2.0 loc_sym/version6 prepend/3.0 trace/all_on +break/4.0 loc_dv2/1.0(default) loc_sym/version7 prepend/3.1 uname/cache +break/5.0 loc_dv2/2.0 loc_sym/version8 prepend/4.0 uname/domain +break/6.0 loc_dv3/1.0 loc_sym/version9 prepend/8.0 uname/machine +chdir/1.0 loc_dv3/2.0 loc_sym/version10 prereq/full uname/nodename +chdir/2.0 loc_dv4/1.0 loc_sym/version11 prereq/fullpath uname/release +chdir/3.0 loc_dv6/1.0 loc_sym/version12 prereq/module uname/sysname +chdir/4.0 loc_dv6/2.0/1.0 loc_sym/version13 prereq/orlist uname/unk +coll/a loc_dv7/1.0 loc_sym/version14 prereq/relpath uname/version +coll/b loc_dv7/2.0/(default) loc_sym/version15 puts/1 unsetenv/0.6 +coll/c loc_dv7/2.0/1.0 loc_sym/version16 puts/2 unsetenv/0.8 +coll/d loc_dv7/3.0 loc_sym/version17 puts/3 unsetenv/0.9 +conflict/full loc_dv8/1.0 loc_sym/version18 puts/4 unsetenv/1.0 +conflict/fullpath loc_dv8/2.0 loc_sym/version19 puts/5 use/1.0(default) +conflict/module loc_dv9/1.0(default) loc_sym/version20 puts/6 use/2.0 +conflict/relpath loc_dv9/2.0 loc_sym/version21 puts/7 use/2.1 +continue/1.0 loc_dvv1/1.0(default) loc_sym/version22 puts/8 use/2.2 +continue/2.0 loc_dvv1/2.0 loc_sym/version23 puts/9 use/3.0 +continue/3.0 loc_fq/1.0 loc_sym/version24 recurs/modA use/3.1 +continue/4.0 loc_rc1/1.0(foo) loc_sym/version25 recurs/modB use/3.2 +continue/5.0 loc_rc1/2.0 loc_sym/version26 remove/0.3 use/4.0 +continue/6.0 loc_rc2/1.0(bar:blah:foo) loc_tr/(reg) remove/0.4 use/4.1 +dirmodalias(@) loc_rc2/2.0 loc_tr/1.0(cur:stable) remove/0.5 user/adv +dirmodalias/1.0 loc_rc3/1.0(default) loc_tr/2.0(next:tr2unstable:trunstable:unstable) remove/1.0 user/advanced +dirmodvirt loc_rc3/2.0(cur:stable) loc_tr/3.0(bar:default:exp:foo:reg:tr2bar:tr2exp:trbar:trexp:trreg) remove/1.3 user/exp +dirmodvirt/1.0 loc_rc3/3.0(chk:exp:new:test) loc_tr/al1(unstable:@) remove/1.4 user/expert +empty/1.0 loc_rc4/1.0 loc_tr/al2(bar:default:exp:reg:trexp:@) remove/1.5 user/nov +eschars/1.0 loc_rc4/2.0(default) loc_tr/al3(default:exp:reg:@) remove/1.6 user/novice +exit/1.0 loc_rc4/3.0 loc_tr/al4(default:reg:@) remove/1.7 user/undef +exit/2.0 loc_rc5/1.0 loc_virt1/1.0 remove/2.0 verbose/msg +exit/3.0 loc_rc5/2.0 loc_virt1/2.0 remove/2.3 verbose/off +exit/4.0 loc_rc6/0.9 loc_virt1/3.0 remove/2.4 verbose/on +function/1.0 loc_rc6/1(@) loc_virt1/4.0 remove/3.0 verbose/undef +function/2.0 loc_rc6/1.2(default:new) loc_virt2/1.0 remove/3.1 versions/1.1 +getenv/0.6 loc_rc6/bar(@) loc_virt2/2.0 remove/4.0 versions/1.2 +getenv/1.0 loc_rc7/0.9 log/badfac remove/4.1 versions/1.3 +help/2.0 loc_rc7/1(@) log/err_both_1 remove/4.2 verssort/1 +info/command loc_rc7/1.2 log/err_both_2 remove/5.0 verssort/1.2.1 +info/commandexp loc_rc7/bar(@) log/err_file remove/8.0 verssort/1.2.4 +info/isavail loc_rc8/0.9(@) log/err_syslog setenv/0.6 verssort/1.8-2015-12-01 +info/isloaded loc_rc8/1.0 modbad/append-path setenv/0.7.1 verssort/1.8-2016-02-01 +info/issaved loc_rc010/2.0 modbad/autoinit setenv/0.7.2 verssort/1.10 +info/isused loc_rcv1/1(@) modbad/clear setenv/0.8 whatis/lines +info/loaded loc_rcv1/1.1 modbad/config setenv/1.0 whatis/multiple +info/mode1 loc_rcv1/1.2(default:new) modbad/empty source/0.9 whatis/none +info/mode2 loc_rcv1/2.0 modbad/foo source/1.0 whatis/single +info/mode3 loc_rcv1/bar(@) modbad/help source/1.1 whatis/string +info/mode4 loc_rcv2/1.2 modbad/info-loaded source/1.2 x-resource/1 +info/mode5 loc_rcv2/1.5 modbad/is-avail spread/1.0 +info/mode6 loc_rcv2/2.0 modbad/is-loaded spread/2.0 +info/name loc_sym/1.0 modbad/is-saved spread/3.0 +info/others loc_sym/alias1 modbad/is-used spread/4.0 " set ts_sh_small "- $modpath.deep - badmodvers/dir1/2.0