summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBart Schaefer <barts@users.sourceforge.net>2001-05-23 17:05:56 +0000
committerBart Schaefer <barts@users.sourceforge.net>2001-05-23 17:05:56 +0000
commitf73dc99e08bc47a8885145065a09922845d1ba4a (patch)
tree282eae3d1d85afe6273cf8ca2a5dd1840f0b93b2
parentb5ad8bf0de790e11f95b09dc694159ec8239469f (diff)
downloadzsh-f73dc99e08bc47a8885145065a09922845d1ba4a.tar.gz
zsh-f73dc99e08bc47a8885145065a09922845d1ba4a.zip
Revise zmodload -u test.
-rw-r--r--ChangeLog6
-rw-r--r--Test/V01zmodload.ztst39
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