From 9e5bed7f9aba39162f2fa9db9bcf5887caa00fc2 Mon Sep 17 00:00:00 2001 From: Xavier Delaruelle Date: Sat, 18 Dec 2021 14:13:23 +0100 Subject: [PATCH] Ensure no duplicate in tags set to module Update setModuleTag procedure to avoid adding a tag to module which is already set to avoid duplicate entries. Adapt existing tests. --- tcl/modfind.tcl.in | 2 +- testsuite/modules.50-cmds/465-tag-opt.exp | 4 ++-- testsuite/modules.50-cmds/467-keep-loaded.exp | 2 +- testsuite/modules.61-coll/010-init_ts.exp | 4 ++-- testsuite/modules.61-coll/040-restore.exp | 7 ++----- 5 files changed, 8 insertions(+), 11 deletions(-) diff --git a/tcl/modfind.tcl.in b/tcl/modfind.tcl.in index 0b851609..cfd76cb0 100644 --- a/tcl/modfind.tcl.in +++ b/tcl/modfind.tcl.in @@ -685,7 +685,7 @@ proc collectModuleTags {mod} { } proc setModuleTag {mod args} { - lappend ::g_tagHash($mod) {*}$args + appendNoDupToList ::g_tagHash($mod) {*}$args } proc getTagList {mod {sort 1}} { diff --git a/testsuite/modules.50-cmds/465-tag-opt.exp b/testsuite/modules.50-cmds/465-tag-opt.exp index 55bfa79c..35ada548 100644 --- a/testsuite/modules.50-cmds/465-tag-opt.exp +++ b/testsuite/modules.50-cmds/465-tag-opt.exp @@ -108,7 +108,7 @@ unsetenv_var MODULES_ADVANCED_VERSION_SPEC set ans [list] lappend ans [list set _LMFILES_ $modfile] lappend ans [list set LOADEDMODULES $mod] -lappend ans [list set __MODULES_LMTAG $mod&foo&bar&foo] +lappend ans [list set __MODULES_LMTAG $mod&foo&bar] testouterr_cmd sh "load --tag=foo:bar:foo $mod" $ans {} setenv_var TESTSUITE_TAG_OPT duprc1 @@ -256,7 +256,7 @@ 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&foo&bar&foo&auto-loaded] +lappend ans [list set __MODULES_LMTAG foo/1.0&foo&bar&auto-loaded] set tserr [msg_top_load $mod {} foo/1.0 {}] testouterr_cmd sh "load $mod" $ans $tserr diff --git a/testsuite/modules.50-cmds/467-keep-loaded.exp b/testsuite/modules.50-cmds/467-keep-loaded.exp index 94c4c177..22233151 100644 --- a/testsuite/modules.50-cmds/467-keep-loaded.exp +++ b/testsuite/modules.50-cmds/467-keep-loaded.exp @@ -60,7 +60,7 @@ 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&keep-loaded&keep-loaded&auto-loaded] +lappend ans [list set __MODULES_LMTAG foo/1.0&keep-loaded&auto-loaded] set tserr [msg_top_load $mod {} foo/1.0 {}] testouterr_cmd sh "load --auto $mod" $ans $tserr diff --git a/testsuite/modules.61-coll/010-init_ts.exp b/testsuite/modules.61-coll/010-init_ts.exp index a508ab96..e81ce5ac 100644 --- a/testsuite/modules.61-coll/010-init_ts.exp +++ b/testsuite/modules.61-coll/010-init_ts.exp @@ -373,10 +373,10 @@ set c37mod2tag [list foo bar] set c38modpath1 $modpath.3 set c38modpath1re [escre $c38modpath1] set c38mod1 {variant/3.0} -set c38mod1tag [list foo foo auto-loaded] +set c38mod1tag [list foo auto-loaded] set c38mod1vr [list {bar=val1}] set c38mod2 {tag/8.0} -set c38mod2tag [list bar foo bar] +set c38mod2tag [list bar foo] set c39modpath1 $modpath.3 set c39modpath1re [escre $c39modpath1] set c39mod1 {tag/8.0} diff --git a/testsuite/modules.61-coll/040-restore.exp b/testsuite/modules.61-coll/040-restore.exp index 589da09c..789832f3 100644 --- a/testsuite/modules.61-coll/040-restore.exp +++ b/testsuite/modules.61-coll/040-restore.exp @@ -974,8 +974,7 @@ lappend ans [list set __MODULES_LMVARIANT $c37lmvr] lappend ans [list set __MODULES_LMPREREQ $c37mod2&variant@3.0\ bar=val1] lappend ans [list set _LMFILES_ $c37lmf] lappend ans [list set LOADEDMODULES $c37lm] -#FIXME: need to unset tags set through setModuleTag when unloading module -lappend ans [list set __MODULES_LMTAG $c37mod1&foo&foo&auto-loaded:$c37mod2&[join $c37mod2tag &]] +lappend ans [list set __MODULES_LMTAG $c37mod1&foo&auto-loaded:$c37mod2&[join $c37mod2tag &]] set tserr [msg_unload variant/3.0{bar=val1}]\n[msg_load variant/3.0{bar=val1}]\n[msg_load tag/8.0] testouterr_cmd_re sh "restore $coll37fp" $ans $tserr @@ -985,7 +984,6 @@ lappend ans [list set __MODULES_LMVARIANT $c37lmvr] lappend ans [list set __MODULES_LMPREREQ $c37mod2&variant@3.0\ bar=val1] lappend ans [list set _LMFILES_ $c37lmf] lappend ans [list set LOADEDMODULES $c37lm] -#FIXME: need to unset tags set through setModuleTag when unloading module lappend ans [list set __MODULES_LMTAG $c37mod1&bar&foo&auto-loaded:$c37mod2&[join $c37mod2tag &]] set tserr [msg_unload variant/3.0{bar=val1}]\n[msg_load variant/3.0{bar=val1}]\n[msg_load tag/8.0] testouterr_cmd_re sh "restore $coll37fp" $ans $tserr @@ -1006,8 +1004,7 @@ lappend ans [list set __MODULES_LMVARIANT $c37lmvr] lappend ans [list set __MODULES_LMPREREQ $c37mod2&variant@3.0\ bar=val1] lappend ans [list set _LMFILES_ $c37lmf] lappend ans [list set LOADEDMODULES $c37lm] -#FIXME: need to unset tags set through setModuleTag when unloading module -lappend ans [list set __MODULES_LMTAG $c37mod1&foo&auto-loaded&foo&auto-loaded:$c37mod2&[join $c37mod2tag &]] +lappend ans [list set __MODULES_LMTAG $c37mod1&foo&auto-loaded:$c37mod2&[join $c37mod2tag &]] set 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] testouterr_cmd_re sh "restore $coll37fp" $ans $tserr