cmd: Add support for calling a built in command.
[wine.git] / programs / cmd / tests / test_builtins.cmd.exp
blobb7e8397e6d5aa451f8a9d19eb027a05a5bcb9128
2 @pwd@>echo Tests for cmd's builtin commands@space@
3 Tests for cmd's builtin commands
5 @pwd@>echo ------------ Testing 'echo' [ON] ------------@space@
6 ------------ Testing 'echo' [ON] ------------
8 @pwd@>echo word@space@
9 word
11 @pwd@>echo 'singlequotedword'@space@
12 'singlequotedword'
14 @pwd@>echo "doublequotedword"@space@
15 "doublequotedword"
16 at-echoed-word
18 @pwd@>echo "/?"@space@
19 "/?"
21 @pwd@>echo.
24 @pwd@>echo .@space@
27 @pwd@>echo.word
28 word
30 @pwd@>echo .word@space@
31 .word
33 @pwd@>echo:
36 @pwd@>echo :@space@
39 @pwd@>echo:word
40 word
42 @pwd@>echo :word@space@
43 :word
45 @pwd@>echo off now@space@
46 off now
48 @pwd@>echo word@space@@space@
49 word@space@
51 @pwd@>echo word@space@@space@@space@
52 word@space@@space@
54 @pwd@>echo word@space@
55 word
57 @pwd@>echo@tab@word@space@
58 word
60 @pwd@>echo@tab@word@space@@tab@@space@
61 word@space@@tab@
63 @pwd@>echo@tab@word@tab@@space@@space@
64 word@tab@@space@
66 @pwd@>echo word@space@
67 word
69 @pwd@>echo@space@@tab@word@space@
70 @tab@word
72 @pwd@>echo@space@@space@@tab@word@space@
73 @space@@tab@word
75 @pwd@>echo@tab@@tab@word@space@
76 @tab@word
78 @pwd@>echo @tab@ on @space@@space@
79 noecho1
80 noecho2
81 echo3
82 ------------ Testing 'echo' [OFF] ------------
83 word
84 'singlequotedword'
85 "doublequotedword"
86 at-echoed-word
87 "/?"
90 word
91 .word
94 word
95 :word
96 on again
97 word@space@
98 word@space@@space@
99 word
100 word
101 word@space@@tab@
102 word@tab@@space@
103 word
104 @tab@word
105 @space@@tab@word
106 @tab@word
107 ------------ Testing mixed echo modes ------------
108 @echo on
109 if 1==1 echo foo
110 if 1==1 @echo bar
111 @echo off
112 if 1==1 echo foo2
113 if 1==1 @echo bar2
115 @todo_wine@@pwd@>if 1 == 1 echo foo@space@
118 @todo_wine@@pwd@>if 1 == 1@space@
120 foo2
121 bar2
122 ------------ Testing parameterization ------------
123 'a', 'b', 'c'
124 '"a b c"', '', ''
125 '"a b"\c', '', ''
126 'a', '~`+', '.{}!+b'
127 'a', 'b', ''
128 '"a;b"', '', ''
129 'a', 'b', ''
130 'a[b]{c}(d)e', '', ''
131 'a', '', ''
132 second line
133 'a', 'b', 'c'
134 'a', 'b', 'c'
135 'a', 'b', ''
136 ------------ Testing rem ------------
138 @pwd@>rem Hello@space@
140 @pwd@>rem Hello@space@
142 @pwd@>rem Hello || foo@space@
144 @pwd@>rem echo lol@space@
146 @pwd@>rem echo foo & echo bar@space@
148 @pwd@>rem @tab@ Hello@space@
150 @pwd@>rem@tab@ Hello@space@
152 @pwd@>rem@tab@echo foo & echo bar@space@
153 ------------ Testing redirection operators ------------
154 --- stdout redirection
156 foo@space@
157 foo@tab@
158 foo@space@
159 foo@tab@
160 foo7@space@@or_broken@foo@tab@
161 foo9@space@@or_broken@foo@tab@
162 foo1
163 foo11
164 foo12
165 foo13
166 foo14
167 foo15
168 --- stdout appending
170 foo@space@
171 foob@space@
172 foob@space@
173 fooc@space@
174 foob@space@
175 fooc@space@
176 food1
177 foob@space@
178 fooc@space@
179 food1
180 food2
181 food21
182 @todo_wine@foo7@space@@space@@or_broken@not supported@space@
183 @todo_wine@foo@or_broken@not supported
184 --- redirections within IF statements
185 @todo_wine@foo1
186 -----
187 foo2
188 foo3
189 file does not exist, ok
190 foo4
191 baz5
192 baz6@space@
193 baz7
194 baz8
196 foo@space@
202 ------------ Testing circumflex escape character ------------
203 hello, world
204 hello, world
205 hell^o, world
206 hell^o, world
207 helloworld
208 hello
209 world
210 hello
212 finished
215 foo | echo bar
216 foo & echo bar
217 bak &
218 baz@space@
219 0@or_broken@1
220 foo > foo
222 ffoof
223 FOO=bar | baz
225 FOO=bar ^| baz
226 bar | baz
228 ------------ Testing 'set' ------------
231 FOOBAR not defined
233 FOOBAR = baz
235 baz2
238 FOOBAR= bar
239 FOOBAR = baz2
240 FOOBAR = baz2
241 FOOBAR not defined
244 foobar
245 FOO not defined
246 BAZ=bazbaz
247 bazbaz
248 set "FOO=bar" should not include the quotes in the variable value
252 'foo@space@'
253 'foo@tab@'
254 ------------ Testing variable expansion ------------
255 ~dp0 should be directory containing batch file
256 @pwd@\
257 @pwd@\
258 CD value @pwd@@or_broken@CD value@space@
265 ERRORLEVEL
268 0ERRORLEVEL
274 ------------ Testing variable substrings ------------
278 @todo_wine@'ty'@or_broken@''
279 't'@or_broken@''
280 ert@or_broken@qwerty
281 e@or_broken@qwerty
282 ''@or_broken@'qwerty'
283 r@or_broken@qwerty
284 ------------ Testing variable substitution ------------
285 --- in FOR variables
286 "A B"
288 "A B"
290 'A B'@or_broken@''
291 'C'@or_broken@''
292 @pwd@\C D@or_broken@%~ff
293 @pwd@\E@or_broken@%~ff
294 @drive@
295 @drive@
296 @path@@or_broken@%~pd
297 @path@@or_broken@%~pd
300 '.OOL'
301 '.TABC'
303 @todo_wine@'@drive@@shortpath@R S'@or_broken@''
304 @todo_wine@'@drive@@shortpath@T'@or_broken@''
305 @todo_wine@'@drive@@shortpath@ABCDEFGHIJK.LMNOP'@or_broken@''
306 ''@or_broken@'%~ai'
307 ''@or_broken@'%~ai'
308 '--a------'@or_broken@'%~ai'
309 '5'@or_broken@'%~zi'
310 ''@or_broken@'%~ti'
311 ''@or_broken@'%~ti'
312 ''@or_broken@'%~zi'
313 ''@or_broken@'%~zi'
314 @drive@@path@
315 @drive@@path@
316 @drive@
317 @drive@
318 @drive@
319 @drive@
321 '.eh'
322 --- in parameters
323 "A B"
325 'A B'@or_broken@''
326 'C'@or_broken@''
327 @pwd@\C D
328 @pwd@\E
329 @drive@
330 @drive@
331 @path@
332 @path@
335 '.OOL'
336 '.TABC'
338 @todo_wine@'@drive@@shortpath@R S'@or_broken@''
339 @todo_wine@'@drive@@shortpath@T'@or_broken@''
340 @todo_wine@'@drive@@shortpath@ABCDEFGHIJK.LMNOP'@or_broken@''
341 @drive@@path@
342 @drive@@path@
343 @drive@
344 @drive@
345 @drive@
346 @drive@
348 '.eh'@or_broken@''
349 ------------ Testing variable delayed expansion ------------
350 --- default mode (load-time expansion)
352 !FOO!
355 --- runtime (delayed) expansion mode
357 @todo_wine@foo@or_broken@!FOO!
359 @todo_wine@bar@or_broken@foo
361 0@or_broken@1
363 !FOO!
364 --- using /V cmd flag
366 @todo_wine@foo@or_broken@!FOO!
368 !FOO!
369 ------------ Testing conditional execution ------------
370 --- unconditional ampersand
371 foo1
372 bar2@space@
373 foo2
374 foobar deleted
375 --- on success conditional and
376 @todo_wine@foo3 not created
377 bar4@space@
378 foo4
379 --- on failure conditional or
380 foo5
381 foo6@space@
382 @todo_wine@------------ Testing cd ------------
383 singleFile
384 Current dir: @pwd@\foobar@or_broken@Current dir:@space@
385 @pwd@\foobar
386 @pwd@
387 @pwd@\foobar
388 @pwd@
389 @pwd@\foobar
390 @pwd@
391 @pwd@
392 @pwd@
393 @pwd@\foobar\bar bak
394 @pwd@\foobar\bar bak
395 @pwd@\foobar\bar bak
396 @pwd@\foobar\bar bak
397 @pwd@\foobar\bar bak
398 @pwd@
399 @pwd@\foobar
400 ------------ Testing type ------------
402 @pwd@>type foobaz@space@
405 @pwd@>echo ---@space@
408 ---1
410 ---2
412 ---3
413 ------------ Testing NUL ------------
418 @todo_wine@foo created
419 ------------ Testing if/else ------------
420 if/else should work with blocks
421 if seems to work
422 else seems to work
423 if seems not to detect /c as parameter
424 Testing case sensitivity with and without /i option
425 if seems to default to case sensitivity
426 if /i seems to work
427 if /I seems to work
428 Testing string comparisons
429 equal
430 non equal
431 non equal
432 equal
433 Testing tabs handling
434 doom
435 doom
436 doom
438 quake
439 quake
440 quake
441 ------------ Testing for ------------
442 --- plain FOR
470 `echo
473 'echo
476 "echo A B"
477 "A B"
479 --- imbricated FORs
480 @todo_wine@X Y
481 @todo_wine@X Y
482 @todo_wine@A C
483 @todo_wine@A D
484 @todo_wine@B C
485 @todo_wine@B D
486 @todo_wine@A C
487 @todo_wine@A D
488 @todo_wine@B C
489 @todo_wine@B D
490 --- basic wildcards
491 bazbaz
492 --- for /d
493 baz@space@
494 foo@space@
495 bar@space@
496 PASSED
497 xxx - Should be xxx
498 Expected second line
499 --- for /R
500 Plain directory enumeration
501 Plain directory enumeration from provided root
502 File enumeration
503 File enumeration from provided root
504 Mixed enumeration
505 Mixed enumeration from provided root
506 With duplicates enumeration
507 Strip missing wildcards, keep unwildcarded names
508 for /R passed
509 --- for /L
520 ErrorLevel 0
521 ErrorLevel 0
541 --- for /a
542 ------ individual operations
544 @todo_wine@3
545 @todo_wine@-1
546 @todo_wine@3
547 @todo_wine@6
548 @todo_wine@10
549 @todo_wine@4
550 @todo_wine@4
551 @todo_wine@-4
553 @todo_wine@2
554 @todo_wine@2
555 @todo_wine@-2
556 @todo_wine@1
557 @todo_wine@4
558 0@or_broken@1073741824
559 0@or_broken@-1073741824
560 @todo_wine@-4
561 @todo_wine@9
562 @todo_wine@2
564 @todo_wine@-1
565 @todo_wine@-3
567 @todo_wine@1
568 @todo_wine@1
569 @todo_wine@4
570 @todo_wine@1
571 @todo_wine@5
572 @todo_wine@5
573 @todo_wine@7
574 @todo_wine@5
575 @todo_wine@5
576 @todo_wine@5
577 @todo_wine@4
578 @todo_wine@6
579 @todo_wine@1
580 ------ precedence and grouping
581 @todo_wine@4
582 @todo_wine@10
583 @todo_wine@18@or_broken@10
584 @todo_wine@2@or_broken@0
585 @todo_wine@2@or_broken@0
586 0@or_broken@4
587 @todo_wine@4
588 @todo_wine@3@or_broken@4
589 ------ octal and hexadecimal
590 @todo_wine@3@or_broken@4
591 @todo_wine@18
592 @todo_wine@18
593 @todo_wine@15
594 ------ variables
595 @todo_wine@3
596 @todo_wine@3@or_broken@foo not defined
597 @todo_wine@3@or_broken@0
598 @todo_wine@3@or_broken@0
599 @todo_wine@3@or_broken@0
600 @todo_wine@9@or_broken@0
602 @todo_wine@4@or_broken@0
603 @todo_wine@-7@or_broken@0
604 @todo_wine@-1@or_broken@0
605 @todo_wine@5@or_broken@0
606 @todo_wine@4@or_broken@0
607 @todo_wine@1@or_broken@0
609 @todo_wine@5@or_broken@0
611 --- for /F
612 ------ string argument
613 @todo_wine@a
614 @todo_wine@a
616 @todo_wine@a
617 @todo_wine@a
618 ------ fileset argument
619 --------- basic blank handling
626 --------- multi-line with empty lines
630 --------- multiple files
641 ------ eol option
642 @todo_wine@ad
643 @todo_wine@z@y
645 @todo_wine@no output
646 @todo_wine@no output
647 ------ delims option
648 @todo_wine@a
649 @todo_wine@a@space@
650 @todo_wine@a d
651 @todo_wine@a
652 @todo_wine@C r
653 foo bar baz
654 @todo_wine@c:\
655 ------ skip option
656 @todo_wine@c
657 @todo_wine@no output
658 @todo_wine@no output
659 ------------ Testing del /a ------------
660 not-r.test not found after delete, good
661 r.test found before delete, good
662 r.test not found after delete, good
663 ------------ Testing del /q ------------
664 del /q * succeeded on file1
665 del /q * succeeded on file2.dat
666 ------------ Testing del /s ------------
667 ------------ Testing rename ------------
668 --- ren and rename are synonymous
669 foo renamed to bar
670 bar renamed to foo
671 --- name collision
674 --- rename read-only files
675 read-only file renamed
676 --- rename directories
677 dir renamed
678 read-only dir renamed
679 --- rename in other directory
680 rename impossible in other directory
681 original file still present
682 ------------ Testing move ------------
683 --- file move
684 file move succeeded
685 @todo_wine@file move with overwrite succeeded@or_broken@file overwrite impossible!
686 @todo_wine@bar@or_broken@baz
687 read-only files are moveable
688 file moved in subdirectory
689 @todo_wine@moving a file to itself is a no-op@or_broken@moving a file to itself should be a no-op!
690 @todo_wine@ErrorLevel: 0@or_broken@ErrorLevel: 1
691 --- directory move
692 simple directory move succeeded
693 moving a directory to itself gives error; errlevel 1
694 ------ dir in dir move
696 bar2
697 foo2
698 ------------ Testing mkdir ------------
699 --- md and mkdir are synonymous
702 --- creating an already existing directory/file must fail
705 --- multilevel path creation
714 --- trailing backslashes
716 dir created
718 --- invalid chars
719 mkdir ? gives errorlevel 1
720 mkdir ?\foo gives errorlevel 1
721 mkdir foo\? gives errorlevel 1
722 ok, foo created
723 mkdir foo\bar\? gives errorlevel 1
724 ok, foo\bar created
725 --- multiple directories at once
726 foo created
727 bar created
728 foobar created
729 bar\baz created
730 bazbaz created
731 zabzab created
732 mkdir foo\* errorlevel 1
733 ok, foo created
734 ------------ Testing rmdir ------------
736 dir removed
738 dir removed
741 file not removed
743 non-empty dir not removed
745 non-empty dir not removed
746 recursive rmdir succeeded
747 recursive rmdir succeeded
748 foo removed
749 bar removed
750 foobar removed
751 bar\baz removed
752 ------------ Testing pushd/popd ------------
753 @pwd@
754 --- popd is no-op when dir stack is empty
755 @pwd@
756 --- pushing non-existing dir
757 @pwd@
758 --- basic behaviour
759 @pwd@\foobar
760 @pwd@
761 @pwd@\foobar\baz
762 @pwd@\foobar
763 @pwd@\foobar
764 @pwd@
765 @pwd@\foobar
766 @pwd@
767 ------------ Testing attrib ------------
768 A @pwd@\foobar\foo@or_broken@A @pwd@\foobar\foo@or_broken@A I @pwd@\foobar\foo
769 --- read-only attribute
770 A R @pwd@\foobar\foo@or_broken@A R @pwd@\foobar\foo@or_broken@A R I @pwd@\foobar\foo
772 foo original contents
773 Read-only file not deleted
774 Read-only file forcibly deleted
775 --- recursive behaviour
776 @todo_wine@A @pwd@\foobar\baz\level2@or_broken@A @pwd@\foobar\baz\level2@or_broken@A I @pwd@\foobar\baz\level2
777 @todo_wine@A R @pwd@\foobar\level1@or_broken@A R @pwd@\foobar\level1@or_broken@A R I @pwd@\foobar\level1
778 @todo_wine@A R @pwd@\foobar\baz\level2@or_broken@A R @pwd@\foobar\baz\level2@or_broken@A R I @pwd@\foobar\baz\level2
779 A @pwd@\foobar\bar@or_broken@A @pwd@\foobar\bar@or_broken@A I @pwd@\foobar\bar
780 --- folders processing
781 @pwd@\foobar@or_broken@ @pwd@\foobar@or_broken@ I @pwd@\foobar
782 @todo_wine@ R @pwd@\foobar\baz@or_broken@ R @pwd@\foobar\baz@or_broken@ @pwd@\foobar\baz@or_broken@ R I @pwd@\foobar\baz
783 @todo_wine@A @pwd@\foobar\baz\toto@or_broken@A @pwd@\foobar\baz\toto@or_broken@A I @pwd@\foobar\baz\toto
784 toto
785 lulu
786 file created in read-only dir
787 ------------ Testing assoc ------------
788 --- setting association
790 .foo=bar
791 .foo=bar
793 .foo=bar
794 --- resetting association
798 ------------ Testing ftype ------------
799 --- setting association
801 footype=foo_opencmd
802 .foo=footype
803 footype=foo_opencmd
805 footype=foo_opencmd
806 --- resetting association
807 @todo_wine@original value@or_broken@buggyXP@or_broken@!FOO!
808 ------------ Testing CALL ------------
809 --- external script
810 foo@space@
811 foo 8
812 foo@space@@space@
813 foo bar@space@
814 foo ""@space@
815 "" bar@space@
816 foo ''@space@
817 '' bar@space@
818 --- internal routines
819 bar :testRoutine
820 foo@space@
821 foo bar
822 foo ""
823 "" bar
824 foo ''
825 '' bar
826 --- with builtins
828 foo created
829 Should expand foobaz
830 batfile
831 robinfile
834 non-builtin dir
835 Line one
836 Line two
837 Get if
838 ... and else!
839 passed
840 ------------ Testing SHIFT ------------
841 'p1' 'p2' 'p3' 'p4' 'p5'
842 'p2' 'p3' 'p4' 'p5' ''
843 'p3' 'p4' 'p5' '' ''
844 'p3' 'p5' '' '' ''
845 'p3' 'p5' '' '' ''
846 'p5' '' '' '' ''
847 ------------ Testing cmd invocation ------------
848 --- a batch file can delete itself
849 file correctly deleted
850 --- a batch file can alter itself
851 @todo_wine@bar
852 ---------- Testing copy
853 Passed: Found expected dummy.file
854 Passed: Found expected dir1\file1
855 Passed: Found expected dir1\file1
856 Passed: Found expected dir1\file99
857 Passed: Found expected file1
858 Passed: Did not find dir2
859 Passed: Did not find dir2\file1
860 Passed: Found expected dir1\file1
861 Passed: Found expected dir1\file2
862 Passed: Found expected dir1\file3
863 Passed: Found expected dir1\file1
864 Passed: Found expected dir1\file2
865 Passed: Found expected dir1\file3
866 Passed: Found expected file1
867 Passed: Found expected file2
868 Passed: Found expected file3
869 Passed: Did not find dir2
870 Passed: Did not find dir2\file1
871 Passed: Did not find dir2\file2
872 Passed: Did not find dir2\file3
873 Passed: Found expected testfile
874 Passed: Found expected testfile
875 Passed: Found expected testfile
876 Passed: Found expected testfile
877 Passed: Found expected testfile
878 Passed: Found expected dir1\fred
879 Passed: Found expected dir1\fred
880 Passed: Found expected fred
881 Passed: Found expected fred
882 Passed: file size check on file1 [5]@or_broken@Skipping file size check on NT4
883 Passed: file size check on file2 [8]@or_broken@Skipping file size check on NT4
884 Passed: file size check on file3 [11]@or_broken@Skipping file size check on NT4
885 Passed: file size check on file1_default [5]@or_broken@Skipping file size check on NT4
886 Passed: file size check on file1_default2 [5]@or_broken@Skipping file size check on NT4
887 Passed: file size check on file1_plus_eof [6]@or_broken@Skipping file size check on NT4
888 Passed: file size check on file2_plus_eof [9]@or_broken@Skipping file size check on NT4
889 Passed: file size check on file3_plus_eof [12]@or_broken@Skipping file size check on NT4
890 Passed: file size check on file12_plus_eof [14]@or_broken@Skipping file size check on NT4
891 Passed: file size check on file12_no_eof [13]@or_broken@Skipping file size check on NT4
892 Passed: file size check on file12_eof2 [14]@or_broken@Skipping file size check on NT4
893 Passed: file size check on file1_binary_srccopy [6]@or_broken@Skipping file size check on NT4
894 Passed: file size check on file1_ascii_srccopy [5]@or_broken@Skipping file size check on NT4
895 Passed: file size check on file123_default_copy [25]@or_broken@Skipping file size check on NT4
896 Passed: file size check on file123_ascii_copy [25]@or_broken@Skipping file size check on NT4
897 Passed: file size check on file123_binary_copy [27]@or_broken@Skipping file size check on NT4
898 Passed: file size check on file123_mixed_copy1 [26]@or_broken@Skipping file size check on NT4
899 Passed: file size check on file123_mixed_copy2 [27]@or_broken@Skipping file size check on NT4
900 Passed: file size check on file123_mixed_copy3 [26]@or_broken@Skipping file size check on NT4
901 Passed: file size check on file123_mixed_copy4 [25]@or_broken@Skipping file size check on NT4
902 Passed: file size check on file123_mixed_copy5 [28]@or_broken@Skipping file size check on NT4
903 Passed: file size check on file123_mixed_copy6 [19]@or_broken@Skipping file size check on NT4
904 Passed: file size check on file123_mixed_copy7 [6]@or_broken@Skipping file size check on NT4
905 Passed: file size check on file123_mixed_copy8 [7]@or_broken@Skipping file size check on NT4
906 Passed: errorlevel invalid check 1
907 Passed: Did not find dir1\file1
908 Passed: errorlevel invalid check 2
909 Passed: errorlevel invalid check 3
910 ------------ Testing setlocal/endlocal ------------
911 --- enable/disable extensions
912 @todo_wine@ErrLev:@space@
913 ErrLev: 0
914 ErrLev: 0
915 @todo_wine@ErrLev:@space@@or_broken@ErrLev: 0
916 ErrLev: 0
917 --- setlocal with corresponding endlocal
918 globalval
919 localval
920 @pwd@\foobar\foobar2
921 globalval
922 @pwd@\foobar
923 globalval
924 @pwd@\foobar
925 --- setlocal with no corresponding endlocal
926 globalval
927 localval
928 @pwd@\foobar\foobar2
929 globalval
930 @pwd@\foobar
931 --- setlocal within same batch program
932 Var1 ok 1
933 Var2 ok 2
934 Var3 ok 3
935 Directory is ok 1
936 Var1 ok 1
937 Var2 ok 2
938 Var3 ok 3
939 Directory is ok 2
940 Var1 ok 1
941 Var2 ok 2
942 Var3 ok 3
943 Directory is ok 3
944 --- Mismatched set and end locals
945 --- Extra setlocal in called batch
946 value2
947 2set1endvalue1
948 @pwd@\foobar\foodir3
949 Finished:
950 value2
951 @pwd@\foobar\foodir2
952 value1
953 @pwd@\foobar
954 --- Extra endlocal in called batch
955 value2
956 value2
957 @pwd@\foobar\foodir2
958 value2
959 @pwd@\foobar\foodir2
960 Finished:
961 value2
962 @pwd@\foobar\foodir2
963 value1
964 @pwd@\foobar
965 --- endlocal in called function rather than batch pgm is ineffective
974 ------------ Testing Errorlevel ------------
975 9009
977 errorlevel just right, good
978 errorlevel with leading zero just right, good
979 errorlevel with negative number OK
980 abc0def@or_broken@abc1def
981 errorlevel zero, good@or_broken@errorlevel nonzero, bad
982 7 should be 7
983 7 should still be 7
984 ------------ Testing GOTO ------------
985 goto with no leading space worked
986 goto with a leading space worked
987 goto with a leading tab worked
988 goto with a following space worked
989 ------------ Testing PATH ------------
990 PATH=original
991 PATH=try2
992 PATH=try3
993 ------------ Testing combined CALLs/GOTOs ------------
994 world
995 cheball
996 barbare
1000 cheball
1001 barbare