ts: test 'config' sub-command

This commit is contained in:
Xavier Delaruelle
2019-05-19 22:48:16 +02:00
parent 3640b2d798
commit 38eeac41e4
6 changed files with 388 additions and 87 deletions

View File

@@ -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@"

View File

@@ -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

View File

@@ -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"
#

View File

@@ -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"

View File

@@ -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 <undef>\
color never\
colors [expr {$install_termbg eq {dark} ? $install_darkbgcolors : $install_lightbgcolors}]\
contact root@localhost\
extra_siteconfig <undef>\
ignored_dirs {CVS RCS SCCS .svn .git .SYNC .sos}\
pager "$install_pager $install_pageropts"\
rcfile <undef>\
run_quarantine <undef>\
silent_shell_debug <undef>\
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

View File

@@ -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