cmd/tests: Add tests for variable delayed expansion
Frédéric Delanoy
frederic.delanoy at gmail.com
Mon Aug 1 04:46:53 CDT 2011
---
programs/cmd/tests/test_builtins.cmd | 40 ++++++++++++++++++++++++++++++
programs/cmd/tests/test_builtins.cmd.exp | 15 +++++++++++
2 files changed, 55 insertions(+), 0 deletions(-)
diff --git a/programs/cmd/tests/test_builtins.cmd b/programs/cmd/tests/test_builtins.cmd
index 04d8fdd..3f8c72e 100644
--- a/programs/cmd/tests/test_builtins.cmd
+++ b/programs/cmd/tests/test_builtins.cmd
@@ -168,6 +168,46 @@ echo P%ERRORLEVEL%
echo %ERRORLEVEL%S
echo P%ERRORLEVEL%S
+echo ------------ Testing variable delayed expansion --------------
+rem NT4 doesn't support this
+echo ...default mode (load-time expansion)
+set FOO=foo
+echo %FOO%
+echo !FOO!
+if %FOO% == foo (
+ set FOO=bar
+ if %FOO% == bar (echo bar) else echo foo
+)
+
+set FOO=foo
+if %FOO% == foo (
+ set FOO=bar
+ if !FOO! == bar (echo bar) else echo foo
+)
+
+echo ...runtime (delayed) expansion mode
+setlocal EnableDelayedExpansion
+set FOO=foo
+echo %FOO%
+echo !FOO!
+if %FOO% == foo (
+ set FOO=bar
+ if %FOO% == bar (echo bar) else echo foo
+)
+
+set FOO=foo
+if %FOO% == foo (
+ set FOO=bar
+ if !FOO! == bar (echo bar) else echo foo
+)
+echo %ErrorLevel%
+setlocal DisableDelayedExpansion
+echo %ErrorLevel%
+set FOO=foo
+echo %FOO%
+echo !FOO!
+set FOO=
+
echo ------------ Testing conditional execution --------------
echo ...unconditional ^&
call :setError 123 & echo foo1
diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp
index d7ac58a..b754faf 100644
--- a/programs/cmd/tests/test_builtins.cmd.exp
+++ b/programs/cmd/tests/test_builtins.cmd.exp
@@ -146,6 +146,21 @@ ERRORLEVEL
P0
0S
P0S
+------------ Testing variable delayed expansion --------------
+...default mode (load-time expansion)
+foo
+!FOO!
+foo
+foo
+...runtime (delayed) expansion mode
+foo
+ at todo_wine@foo at or_broken@!FOO!
+foo
+ at todo_wine@bar at or_broken@foo
+0
+0 at or_broken@1
+foo
+!FOO!
------------ Testing conditional execution --------------
@todo_wine at ...unconditional &
foo1
--
1.7.6
More information about the wine-patches
mailing list