From c229efb1f625b5b44fa00a45ad5ca6bd67d9227e Mon Sep 17 00:00:00 2001 From: Xavier Delaruelle Date: Sat, 27 Nov 2021 14:40:16 +0100 Subject: [PATCH] ts: add tests for prereq-any in 50/513 --- testsuite/modulefiles.3/lcompat/.modulerc | 3 + testsuite/modulefiles.3/lcompat/1.3 | 18 +++ testsuite/modules.50-cmds/513-prereq-any.exp | 154 +++++++++++++++++++ 3 files changed, 175 insertions(+) create mode 100644 testsuite/modulefiles.3/lcompat/1.3 create mode 100644 testsuite/modules.50-cmds/513-prereq-any.exp diff --git a/testsuite/modulefiles.3/lcompat/.modulerc b/testsuite/modulefiles.3/lcompat/.modulerc index b1eb0c35..5d197b47 100644 --- a/testsuite/modulefiles.3/lcompat/.modulerc +++ b/testsuite/modulefiles.3/lcompat/.modulerc @@ -11,6 +11,9 @@ if {[info exists env(TESTSUITE_LCOMPAT)]} { extrc1 { extensions moda/1.0 modb/2.0 } + pranyrc1 { + prereq-any foo/1.0 bar/1.0 + } } } diff --git a/testsuite/modulefiles.3/lcompat/1.3 b/testsuite/modulefiles.3/lcompat/1.3 new file mode 100644 index 00000000..cbede39c --- /dev/null +++ b/testsuite/modulefiles.3/lcompat/1.3 @@ -0,0 +1,18 @@ +#%Module + +module-whatis [module-info name] + +if {[info exists env(TESTSUITE_LCOMPAT)]} { + switch -- $env(TESTSUITE_LCOMPAT) { + prany1 { + prereq-any foo/1.0 bar/1.0 + } + prany2 { + prereq-any foo/1.0 + } + prany3 { + prereq-any + } + } +} + diff --git a/testsuite/modules.50-cmds/513-prereq-any.exp b/testsuite/modules.50-cmds/513-prereq-any.exp new file mode 100644 index 00000000..83ea6361 --- /dev/null +++ b/testsuite/modules.50-cmds/513-prereq-any.exp @@ -0,0 +1,154 @@ +############################################################################## +# Modules Revision 3.0 +# Providing a flexible user environment +# +# File: modules.50-cmds/%M% +# Revision: %I% +# First Edition: 2021/11/27 +# Last Mod.: %U%, %G% +# +# Authors: Xavier Delaruelle, xavier.delaruelle@cea.fr +# +# Description: Testuite testsequence +# Command: load, unload, display, help, test, whatis, refresh, avail +# Modulefiles: lcompat +# Sub-Command: +# +# Comment: %C{ +# Test prereq-any modulefile command +# }C% +# +############################################################################## + +skip_if_quick_mode + +set mp $modpath.3 +set mpre $modpathre.3 +setenv_path_var MODULEPATH $mp + +set mod lcompat/1.3 +set modfile $mp/$mod +set modfilere $mpre/$mod + + +setenv_var TESTSUITE_LCOMPAT prany1 + +# load +set ans [list] +lappend ans [list set __MODULES_LMPREREQ $mod&foo/1.0|bar/1.0] +lappend ans [list set _LMFILES_ $mp/foo/1.0:$modfile] +lappend ans [list set LOADEDMODULES foo/1.0:$mod] +lappend ans [list set __MODULES_LMTAG foo/1.0&auto-loaded] +set tserr [msg_top_load $mod {} foo/1.0 {}] +testouterr_cmd sh "load --auto $mod" $ans $tserr + +set tserr [msg_load $mod [err_prereqor foo/1.0 bar/1.0]] +testouterr_cmd sh "load --no-auto $mod" ERR $tserr + +setenv_loaded_module [list foo/1.0] [list $mp/foo/1.0] + +set ans [list] +lappend ans [list set __MODULES_LMPREREQ $mod&foo/1.0|bar/1.0] +lappend ans [list set _LMFILES_ $mp/foo/1.0:$modfile] +lappend ans [list set LOADEDMODULES foo/1.0:$mod] +testouterr_cmd sh "load --auto $mod" $ans {} + +setenv_loaded_module [list $mod] [list $modfile] + +# unload +set ans [list] +lappend ans [list unset _LMFILES_] +lappend ans [list unset LOADEDMODULES] +testouterr_cmd sh "unload $mod" $ans {} + +setenv_loaded_module [list bar/1.0 $mod] [list $mp/bar/1.0 $modfile] +setenv_path_var __MODULES_LMTAG bar/1.0&auto-loaded +setenv_path_var __MODULES_LMPREREQ $mod&foo/1.0|bar/1.0 + +set ans [list] +lappend ans [list unset __MODULES_LMPREREQ] +lappend ans [list unset _LMFILES_] +lappend ans [list unset LOADEDMODULES] +lappend ans [list unset __MODULES_LMTAG] +set tserr [msg_top_unload $mod {} bar/1.0 {}] +testouterr_cmd sh "unload --auto $mod" $ans $tserr + +# refresh +testouterr_cmd sh {refresh} OK {} + +unsetenv_loaded_module +unsetenv_path_var __MODULES_LMTAG +unsetenv_path_var __MODULES_LMPREREQ + +# whatis +set tserr "$modlin $mpre $modlin +\\s*$mod: $mod" +testouterr_cmd_re sh "whatis $mod" OK $tserr + +# display +set tserr "$modlin +$mpre/$mod: + +module-whatis\t$mod +prereq-any\tfoo/1.0 bar/1.0 +$modlin" +testouterr_cmd_re sh "display $mod" OK $tserr + +# help +set tserr "$modlin +Module Specific Help for $mpre/$mod: + +$warn_msgs: Unable to find ModulesHelp in $modfilere. +$modlin" +testouterr_cmd_re sh "help $mod" OK $tserr + +# test +set tserr "$modlin +Module Specific Test for $mpre/$mod: + +$warn_msgs: Unable to find ModulesTest in $modfilere. +$modlin" +testouterr_cmd_re sh "test $mod" OK $tserr + + +setenv_var TESTSUITE_LCOMPAT prany2 + +set ans [list] +lappend ans [list set __MODULES_LMPREREQ $mod&foo/1.0] +lappend ans [list set _LMFILES_ $mp/foo/1.0:$modfile] +lappend ans [list set LOADEDMODULES foo/1.0:$mod] +lappend ans [list set __MODULES_LMTAG foo/1.0&auto-loaded] +set tserr [msg_top_load $mod {} foo/1.0 {}] +testouterr_cmd sh "load --auto $mod" $ans $tserr + + +setenv_var TESTSUITE_LCOMPAT prany3 + +set ln [expr {[cmpversion $tclsh_version 8.6] == -1 ? 5 : 14}] +set tserr [msg_load $mod [escre [msg_moderr {can't read "holdidlist": no such variable} {prereq-any} $modfile $ln]]] +testouterr_cmd_re sh "load $mod" ERR $tserr + + +setenv_var TESTSUITE_LCOMPAT pranyrc1 + +set ans [list] +lappend ans [list set _LMFILES_ $modfile] +lappend ans [list set LOADEDMODULES $mod] +lappend ans [list ERR] +set ln [expr {[cmpversion $tclsh_version 8.6] == -1 ? 3 : 15}] +set tserr [escre [msg_moderr {invalid command name "prereq-any"} {prereq-any foo/1.0 bar/1.0} $mp/lcompat/.modulerc $ln { }]] +testouterr_cmd_re sh "load $mod" $ans $tserr + +set tserr $mp:\n$mod +testouterr_cmd sh "avail -t $mod" OK $tserr + +set tserr "$modlin $mpre $modlin +\\s*$mod: $mod" +testouterr_cmd_re sh "whatis $mod" OK $tserr + + +# +# Cleanup +# + +reset_test_env