@@ -1050,6 +1050,32 @@ lappend ans [list set __MODULES_LMTAG $c37lmtag]
10501050set tserr [msg_unload variant/3.0{bar=val1}]\n[msg_unload foo/1.0]\n[msg_load variant/3.0{bar=val1}]\n[msg_load tag/8.0]
10511051testouterr_cmd_re sh "restore $coll37fp" $ans $tserr
10521052
1053+ # set 2nd module auto-loaded in env, not auto-loaded in collection
1054+ setenv_var __MODULES_LMVARIANT $c37lmvr
1055+ setenv_loaded_module [list $c37mod1 $c37mod2] [list $c37modpath1/$c37mod1 $c37modpath1/$c37mod2]
1056+ setenv_var __MODULES_LMTAG $c37mod1&[join $c37mod1tag &]:$c37mod2&auto-loaded
1057+ setenv_var __MODULES_LMEXTRATAG $c37mod1&[join $c37mod1extratag &]
1058+ set ans [list]
1059+ lappend ans [list set __MODULES_LMPREREQ $c37mod2&
[email protected] \ bar=val1]
1060+ lappend ans [list set _LMFILES_ $c37lmf]
1061+ lappend ans [list set LOADEDMODULES $c37lm]
1062+ lappend ans [list set __MODULES_LMEXTRATAG $c37lmextratag]
1063+ lappend ans [list set __MODULES_LMTAG $c37lmtag]
1064+ # unsetting auto-loaded tag makes module to get unloaded then loaded
1065+ set tserr [msg_unload tag/8.0]\n[msg_load tag/8.0]
1066+ testouterr_cmd_re sh "restore $coll37fp" $ans $tserr
1067+
1068+ # set modules keep-loaded in env, not keep-loaded in collection
1069+ setenv_var __MODULES_LMVARIANT $c37lmvr
1070+ setenv_loaded_module [list $c37mod1 $c37mod2] [list $c37modpath1/$c37mod1 $c37modpath1/$c37mod2]
1071+ setenv_var __MODULES_LMTAG $c37mod1&[join $c37mod1tag &]&keep-loaded:$c37mod2&keep-loaded
1072+ setenv_var __MODULES_LMEXTRATAG $c37mod1&[join $c37mod1extratag &]
1073+ # keep-loaded tag found in env is preserved even if not in collection
1074+ set ans [list]
1075+ lappend ans [list set __MODULES_LMEXTRATAG $c37lmextratag]
1076+ lappend ans [list set __MODULES_LMTAG $c37mod1&[join $c37mod1tag &]&keep-loaded:$c37mod2&keep-loaded&foo]
1077+ testouterr_cmd_re sh "restore $coll37fp" $ans {}
1078+
10531079unsetenv_loaded_module
10541080unsetenv_var __MODULES_LMTAG
10551081unsetenv_var __MODULES_LMEXTRATAG
@@ -1181,6 +1207,108 @@ unsetenv_var MODULES_COLLECTION_PIN_TAG
11811207unsetenv_var TESTSUITE_TAG_OPT
11821208
11831209
1210+ # test tags set in collection but not in current env or opposite situation
1211+ # for simple or variant modules
1212+ setenv_var TESTSUITE_TAG_OPT coll49
1213+ setenv_var TESTSUITE_KEEP_LOADED coll49
1214+ setenv_var MODULES_ADVANCED_VERSION_SPEC 1
1215+
1216+ setenv_var __MODULES_LMVARIANT $c49lmvr
1217+ setenv_var __MODULES_LMPREREQ $c49mod4&$c49mod3
1218+ setenv_loaded_module [list $c49mod1 $c49mod2 $c49mod3 $c49mod4] [list $c49modpath1/$c49mod1 $c49modpath1/$c49mod2 $c49modpath1/$c49mod3 $c49modpath1/$c49mod4] [list $c49mod3]
1219+
1220+ set ans [list]
1221+ lappend ans [list set __MODULES_LMEXTRATAG $c49lmextratag]
1222+ lappend ans [list set __MODULES_LMTAG $c49lmtag]
1223+ testouterr_cmd_re sh "restore $coll49fp" $ans {}
1224+
1225+ setenv_var __MODULES_LMTAG $c49mod1&bar&foo:$c49mod3&auto-loaded:$c49mod4&bar&foo
1226+ setenv_var __MODULES_LMEXTRATAG $c49mod1&bar&foo:$c49mod4&bar&foo
1227+ testouterr_cmd_re sh "restore $coll49fp" $ans {}
1228+
1229+ setenv_var __MODULES_LMTAG $c49mod1&bar&foo:$c49mod3&auto-loaded:$c49mod4&foo
1230+ setenv_var __MODULES_LMEXTRATAG $c49mod1&bar
1231+ set ans [list]
1232+ lappend ans [list set __MODULES_LMEXTRATAG $c49lmextratag]
1233+ # foo tag is kept of 1st and 4th module as not set extra
1234+ lappend ans [list set __MODULES_LMTAG $c49mod4&foo:$c49mod1&foo:$c49lmtag]
1235+ testouterr_cmd_re sh "restore $coll49fp" $ans {}
1236+
1237+ setenv_var __MODULES_LMTAG $c49mod1&bar&foo:$c49mod3&auto-loaded&bar&keep-loaded:$c49mod4&bar&foo
1238+ setenv_var __MODULES_LMEXTRATAG $c49mod1&bar&foo:$c49mod3&bar:$c49mod4&bar&foo
1239+ set ans [list]
1240+ lappend ans [list set __MODULES_LMEXTRATAG $c49mod3&[join $c49mod3extratag &]:$c49mod2&[join $c49mod2extratag &]]
1241+ lappend ans [list set __MODULES_LMTAG $c49mod3&[join $c49mod3tag &]:$c49mod2&[join $c49mod2tag &]]
1242+ testouterr_cmd_re sh "restore $coll49fp" $ans {}
1243+
1244+ setenv_var __MODULES_LMTAG $c49mod2&bar&foo:$c49mod3&auto-loaded&bar&foo
1245+ setenv_var __MODULES_LMEXTRATAG $c49mod2&bar
1246+ set ans [list]
1247+ # all tags are restored non extra, as loaded environment defines foo for 2nd
1248+ # and 4th module is set non-extra
1249+ lappend ans [list unset __MODULES_LMEXTRATAG]
1250+ lappend ans [list set __MODULES_LMTAG $c49mod2&[join $c49mod2tag &]:$c49mod3&auto-loaded&bar&foo&keep-loaded]
1251+ testouterr_cmd_re sh "restore $coll49fp" $ans {}
1252+
1253+ setenv_var __MODULES_LMTAG $c49mod2&bar&foo:$c49mod3&auto-loaded&bar&foo
1254+ setenv_var __MODULES_LMEXTRATAG $c49mod2&bar&foo
1255+ set ans [list]
1256+ lappend ans [list set __MODULES_LMEXTRATAG $c49mod2&foo]
1257+ lappend ans [list set __MODULES_LMTAG $c49mod2&[join $c49mod2tag &]:$c49mod3&auto-loaded&bar&foo&keep-loaded]
1258+ testouterr_cmd_re sh "restore $coll49fp" $ans {}
1259+
1260+ # 2nd module is set auto-loaded in env, not in collection
1261+ # and 3rd module is not set auto-loaded in env, whereas it is in collection
1262+ setenv_var __MODULES_LMTAG $c49mod2&auto-loaded&foo&keep-loaded:$c49mod3&bar&keep-loaded
1263+ setenv_var __MODULES_LMEXTRATAG $c49mod2&foo:$c49mod3&bar
1264+ set ans [list]
1265+ lappend ans [list set __MODULES_LMVARIANT $c49lmvr]
1266+ lappend ans [list set __MODULES_LMPREREQ $c49mod4&$c49mod3]
1267+ lappend ans [list set _LMFILES_ $c49lmf]
1268+ lappend ans [list set LOADEDMODULES $c49lm]
1269+ lappend ans [list set __MODULES_LMEXTRATAG $c49lmextratag]
1270+ lappend ans [list set __MODULES_LMTAG $c49mod2&[join $c49mod2tag &]:$c49mod3&bar&auto-loaded&keep-loaded]
1271+ set tserr [msg_unload $c49mod4]\n[msg_unload $c49mod3]\n[msg_unload $c49mod2{-bar:+foo}]\n[msg_load $c49mod2{-bar:+foo}]\n[msg_load $c49mod3]\n[msg_load $c49mod4]
1272+ testouterr_cmd sh "restore $coll49fp" $ans $tserr
1273+
1274+ # keep-loaded tag defined by module-tag in modulerc
1275+ setenv_var TESTSUITE_TAG_OPT coll49keep
1276+ setenv_var TESTSUITE_KEEP_LOADED coll49keep
1277+ setenv_var __MODULES_LMTAG $c49mod1&bar&foo:$c49mod3&auto-loaded&keep-loaded:$c49mod4&bar&foo
1278+ setenv_var __MODULES_LMEXTRATAG $c49mod1&bar&foo:$c49mod4&bar&foo
1279+ set ans [list]
1280+ lappend ans [list set __MODULES_LMEXTRATAG $c49lmextratag]
1281+ lappend ans [list set __MODULES_LMTAG $c49mod2&[join $c49mod2tag &]:$c49mod3&auto-loaded&keep-loaded&bar]
1282+ testouterr_cmd_re sh "restore $coll49fp" $ans {}
1283+
1284+ unsetenv_var __MODULES_LMPREREQ
1285+ setenv_loaded_module [list $c49mod1 $c49mod2] [list $c49modpath1/$c49mod1 $c49modpath1/$c49mod2]
1286+ setenv_var __MODULES_LMTAG $c49mod2&[join $c49mod2tag &]
1287+ setenv_var __MODULES_LMEXTRATAG $c49mod2&[join $c49mod2extratag &]
1288+ set ans [list]
1289+ lappend ans [list set __MODULES_LMPREREQ $c49mod4&$c49mod3]
1290+ lappend ans [list set _LMFILES_ $c49lmf]
1291+ lappend ans [list set LOADEDMODULES $c49lm]
1292+ lappend ans [list set __MODULES_LMEXTRATAG $c49lmextratag]
1293+ lappend ans [list set __MODULES_LMTAG $c49mod2&[join $c49mod2tag &]:$c49mod3&bar&auto-loaded&keep-loaded]
1294+ set tserr [msg_load $c49mod3]\n[msg_load $c49mod4]
1295+ testouterr_cmd_re sh "restore $coll49fp" $ans $tserr
1296+
1297+ # module-forbid defined in modulerc for 3rd collection module
1298+ setenv_var TESTSUITE_TAG_OPT coll49forb
1299+ setenv_var TESTSUITE_KEEP_LOADED coll49forb
1300+ set tserr [err_accessdenied $c49mod3]\n\n[msg_load $c49mod4 [err_accessdenied $c49mod3] [err_reqlo $c49mod3]]
1301+ testouterr_cmd_re sh "restore $coll49fp" ERR $tserr
1302+
1303+ unsetenv_var TESTSUITE_TAG_OPT
1304+ unsetenv_var TESTSUITE_KEEP_LOADED
1305+ unsetenv_var MODULES_ADVANCED_VERSION_SPEC
1306+ unsetenv_loaded_module
1307+ unsetenv_var __MODULES_LMTAG
1308+ unsetenv_var __MODULES_LMEXTRATAG
1309+ unsetenv_var __MODULES_LMVARIANT
1310+
1311+
11841312#
11851313# Cleanup
11861314#
0 commit comments