diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | Test/V01zmodload.ztst | 39 |
2 files changed, 33 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog index 407bd4e7f..563304b3f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2001-05-23 Bart Schaefer <schaefer@zsh.org> + + * 14461: Test/V01zmodload.ztst: Change the unloading test to be + sure that modules are not unloaded until their dependencies have + been unloaded. + 2001-05-23 Oliver Kiddle <opk@zsh.org> * unposted: Src/signals.c, Src/utils.c: add missing mod_exports diff --git a/Test/V01zmodload.ztst b/Test/V01zmodload.ztst index 0828102a6..f5185eb21 100644 --- a/Test/V01zmodload.ztst +++ b/Test/V01zmodload.ztst @@ -5,6 +5,7 @@ # the config.modules file. This differs for static vs. dynamic builds. mods=() + deps="$(zmodload -Ld)" while read name modfile link auto load funcs do [[ $name == \#* ]] && continue @@ -13,6 +14,27 @@ mods=($mods $name) done < $ZTST_testdir/../config.modules + zmodunload() { + local m n=$# + (( n == 0 )) && return 0 + for m + do + if [[ -z ${(M)${(f)"$(zmodload -d)"}:#*:* $m( *|)} ]] + then + zmodload -u $m && zmodload -ud $m || return 1 + shift + else + set $@[2,-1] $m + fi + done + if (( $# < n )) + then + zmodunload $* + else + zmodload -u $* + fi + } + %test # This first test depends on knowing that zsh is run with +Z from the @@ -125,22 +147,15 @@ zmodload -e example 1:Delete the module alias again -# Remove all inter-module dependencies so that we can unload in any order. -# Skip the two modules that are required by the test system! +# Don't unload the two modules that are required by the test system! mods[(r)zsh/main]=() mods[(r)zsh/parameter]=() - for m in $mods - do - zmodload -ud $m - done -0d:Remove module dependecies - -# Unload all the modules again (except the two we skipped, of course). - - zmodload -u $mods + zmodunload $mods 0d:Unload the modules loaded by this test suite %clean - unset name modfile link auto load funcs mods m + eval "$deps" + unset deps name modfile link auto load funcs mods + unfunction zmodunload |