[CMD_WINETEST] Sync with Wine Staging 2.2. CORE-12823

svn path=/trunk/; revision=73991
This commit is contained in:
Amine Khaldi 2017-02-26 20:47:12 +00:00
parent 8897aab532
commit 4d205b64e0
2 changed files with 413 additions and 1 deletions

View file

@ -31,6 +31,12 @@ echo @tab@word
echo @tab@word
echo@tab@@tab@word
echo @tab@ on @space@
@echo --- @ with chains and brackets
(echo the @ character chains until&&@echo we leave the current depth||(
echo hidden
@echo hidden
))&&echo and can hide brackets||(@echo command hidden)||@(echo brackets hidden)
@echo ---
@echo off
echo off@tab@@space@
@ -245,6 +251,193 @@ echo %WINE_FOO%
echo %ErrorLevel%
set WINE_FOO=
echo ------------ Testing chains ------------
rem The chain operators have the following bottom-up precedence:
rem 'else' precedes nothing and matches the closest unmatched 'if' in the same bracket depth
rem '&' precedes 'else'
rem '||' precedes '&' and 'else'
rem '&&' precedes '||', '&' and 'else'
rem '|' precedes '&&', '||', '&' and 'else'
rem
rem Example: 'if 1==1 if 2==2 if 3==3 a | b && c || d & e else f else g' is interpreted as
rem 'if 1==1 (if 2==2 (if 3==3 ((((a | b) && c) || d) & e) else f) else g)'
goto :cfailend
:cfail
echo %1
call :setError 1
goto :eof
:cfailend
echo --- chain success
echo a1&echo a2
echo b1&&echo b2
echo c1||echo c2
echo ---
echo d1&echo d2&echo d3
echo e1&echo e2&&echo e3
echo f1&echo f2||echo f3
echo ---
echo g1&&echo g2&echo g3
echo h1&&echo h2&&echo h3
echo i1&&echo i2||echo i3
echo ---
echo j1||echo j2&echo j3
echo ---
echo k1||echo k2&&echo k3
echo ---
echo l1||echo l2||echo l3
echo ---
echo --- chain failure
call :cfail a1&call :cfail a2
call :cfail b1&&call :cfail b2
echo ---
call :cfail c1||call :cfail c2
call :cfail d1&call :cfail d2&call :cfail d3
call :cfail e1&call :cfail e2&&call :cfail e3
echo ---
call :cfail f1&call :cfail f2||call :cfail f3
call :cfail g1&&call :cfail g2&call :cfail g3
echo ---
call :cfail h1&&call :cfail h2&&call :cfail h3
echo ---
call :cfail i1&&call :cfail i2||call :cfail i3
echo ---
call :cfail j1||call :cfail j2&call :cfail j3
call :cfail k1||call :cfail k2&&call :cfail k3
echo ---
call :cfail l1||call :cfail l2||call :cfail l3
echo --- chain brackets
rem Brackets are like regular commands, they support redirections
rem and have the same precedence as regular commands.
echo a1&(echo a2&echo a3)
echo b1&(echo b2&&echo b3)
echo c1&(echo c2||echo c3)
echo ---
echo d1&&(echo d2&echo d3)
echo e1&&(echo e2&&echo e3)
echo f1&&(echo f2||echo f3)
echo ---
echo g1||(echo g2&echo g3)
echo ---
echo h1||(echo h2&&echo h3)
echo ---
echo i1||(echo i2||echo i3)
echo ---
call :cfail j1&(call :cfail j2&call :cfail j3)
call :cfail k1&(call :cfail k2&&call :cfail k3)
echo ---
call :cfail l1&(call :cfail l2||call :cfail l3)
call :cfail m1&&(call :cfail m2&call :cfail m3)
echo ---
call :cfail n1&&(call :cfail n2&&call :cfail n3)
echo ---
call :cfail o1&&(call :cfail o2||call :cfail o3)
echo ---
call :cfail p1||(call :cfail p2&call :cfail p3)
call :cfail q1||(call :cfail q2&&call :cfail q3)
echo ---
call :cfail r1||(call :cfail r2||call :cfail r3)
echo --- chain pipe
rem Piped commands run at the same time, so the print order varies.
rem Additionally, they don't run in the batch script context, as shown by
rem 'call :existing_label|echo read the error message'.
(echo a 1>&2|echo a 1>&2) 2>&1
echo ---
echo b1|echo b2
echo c1&&echo c2|echo c3
echo d1||echo d2|echo d3
echo ---
echo e1&echo e2|echo e3
echo f1|echo f2&&echo f3
echo g1|echo g2||echo g3
echo ---
echo h1|echo h2&echo h3
echo i1|echo i2|echo i3
echo --- chain pipe input
rem The output data of the left side of a pipe can disappear, probably
rem because it finished too fast and closed the pipe before it could be read,
rem which means we can get broken results for the tests of this section.
echo @echo off> tmp.cmd
echo set IN=X>> tmp.cmd
echo set /p IN=%%1:>> tmp.cmd
echo setlocal EnableDelayedExpansion>> tmp.cmd
echo echo [!IN!,%%1]>> tmp.cmd
echo endlocal>> tmp.cmd
echo set IN=>> tmp.cmd
echo a1|cmd /ctmp.cmd a2
echo b1|cmd /ctmp.cmd b2|cmd /ctmp.cmd b3
echo c1|cmd /ctmp.cmd c2|cmd /ctmp.cmd c3|cmd /ctmp.cmd c4
echo d1|call tmp.cmd d2
echo e1|call tmp.cmd e2|call tmp.cmd e3
echo f1|call tmp.cmd f2|call tmp.cmd f3|call tmp.cmd f4
rem FIXME these 3 tests cause "unexpected end of output"
rem test : echo g1|tmp.cmd g2
rem result: g2:[g1,g2]
rem test : echo h1|tmp.cmd h2|tmp.cmd h3
rem result: h3:[h2:[h1,h2],h3]@or_broken@h3:[h2:,h3]
rem test : echo i1|tmp.cmd i2|tmp.cmd i3|tmp.cmd i4
rem result: i4:[i3:[i2:[i1,i2],i3],i4]@or_broken@i4:[i3:[i2:,i3],i4]@or_broken@i4:[i3:,i4]
del tmp.cmd
echo --- chain else
rem Command arguments are gready and eat up the 'else' unless terminated by
rem brackets, which means the 'else' can only be recognized when the
rem 'if true' command chain ends with brackets.
if 1==1 if 2==2 if 3==3 (echo a1) else (echo a2) else echo a3
if 1==1 if 2==2 if 3==0 (echo b1) else (echo b2) else echo b3
echo ---
if 1==1 if 2==0 if 3==3 (echo c1) else (echo c2) else echo c3
echo ---
if 1==1 if 2==0 if 3==0 (echo d1) else (echo d2) else echo d3
echo ---
if 1==0 if 2==2 if 3==3 (echo e1) else (echo e2) else echo e3
echo ---
if 1==0 if 2==2 if 3==0 (echo f1) else (echo f2) else echo f3
echo ---
if 1==0 if 2==0 if 3==3 (echo g1) else (echo g2) else echo g3
echo ---
if 1==0 if 2==0 if 3==0 (echo h1) else (echo h2) else echo h3
echo ---
echo --- chain else (if true)
if 1==1 echo a1 else echo a2
if 1==1 echo b1|echo b2 else echo b3
if 1==1 echo c1&&echo c2 else echo c3
if 1==1 echo d1||echo d2 else echo d3
echo ---
if 1==1 echo e1&echo e2 else echo e3
if 1==1 echo f1 else echo f2|echo f3
if 1==1 echo g1 else echo g2&&echo g3
if 1==1 echo h1 else echo h2||echo h3
echo ---
if 1==1 echo i1 else echo i2&echo i3
if 1==1 echo j1|(echo j2) else echo j3
echo ---
if 1==1 echo k1&&(echo k2) else echo k3
if 1==1 echo l1||(echo l2) else echo l3
echo ---
if 1==1 echo m1&(echo m2) else echo m3
if 1==1 (echo n1) else echo n2|echo n3
if 1==1 (echo o1) else echo o2&&echo o3
if 1==1 (echo p1) else echo p2||echo p3
if 1==1 (echo q1) else echo q2&echo q3
echo --- chain else (if false)
if 1==0 echo a1 else echo a2
if 1==0 echo b1|echo b2 else echo b3
if 1==0 echo c1&&echo c2 else echo c3
if 1==0 echo d1||echo d2 else echo d3
if 1==0 echo e1&echo e2 else echo e3
if 1==0 echo f1 else echo f2|echo f3
if 1==0 echo g1 else echo g2&&echo g3
if 1==0 echo h1 else echo h2||echo h3
if 1==0 echo i1 else echo i2&echo i3
if 1==0 echo j1|(echo j2) else echo j3
echo ---
if 1==0 echo k1&&(echo k2) else echo k3
if 1==0 echo l1||(echo l2) else echo l3
if 1==0 echo m1&(echo m2) else echo m3
if 1==0 (echo n1) else echo n2|echo n3
if 1==0 (echo o1) else echo o2&&echo o3
if 1==0 (echo p1) else echo p2||echo p3
echo ---
if 1==0 (echo q1) else echo q2&echo q3
echo ------------ Testing 'set' ------------
call :setError 0
rem Remove any WINE_FOO* WINE_BA* environment variables from shell before proceeding
@ -2391,6 +2584,22 @@ rem Concat 2 files, default mode - (one EOF on the end 5+8+1)
copy ..\file1+..\file2 file12_eof2 >nul 2>&1
call :CheckFileSize file12_eof2 14
rem Test copying when destination is one of the sources.
rem Concat file1+file2+file3 into file1, should produce file1+file2+file3 = 24
copy /y ..\file? .\ >nul 2>&1
copy /y /b file1+file2+file3 file1 >nul 2>&1
call :CheckFileSize file1 24
rem Concat file1+file2+file3 into file2, should produce file1+file3 = 16
copy /y ..\file? .\ >nul 2>&1
copy /y /b file1+file2+file3 file2 >nul 2>&1
call :CheckFileSize file2 16
rem Concat file1+file2+file3 into file3, should produce file1+file2 = 13
copy /y ..\file? .\ >nul 2>&1
copy /y /b file1+file2+file3 file3 >nul 2>&1
call :CheckFileSize file3 13
rem --------------------------------------------------------------
rem Show ascii source copy stops at first EOF, binary does the lot
rem --------------------------------------------------------------

View file

@ -88,6 +88,13 @@ word
@tab@word
@pwd@>echo @tab@ on @space@@space@
--- @ with chains and brackets
@todo_wine@@pwd@>(echo the @ character chains until && ) && echo and can hide brackets || () ||@space@
@todo_wine@the @ character chains until
@todo_wine@we leave the current depth
@todo_wine@and can hide brackets
@todo_wine@---
noecho1
noecho2
echo3
@ -241,6 +248,199 @@ WINE_FOO=bar | baz
WINE_FOO=bar ^| baz
bar | baz
0
------------ Testing chains ------------
--- chain success
a1
a2
b1
b2
c1
@todo_wine@---
d1
d2
d3
e1
e2
e3
f1
f2
@todo_wine@---
g1
g2
g3
h1
h2
h3
i1
i2
@todo_wine@---
j1
@todo_wine@j3
@todo_wine@---
k1
@todo_wine@---
l1
@todo_wine@---
--- chain failure
a1
a2
b1
@todo_wine@---
c1
c2
d1
d2
d3
e1
e2
@todo_wine@---
f1
f2
f3
g1
@todo_wine@g3
@todo_wine@---
h1
@todo_wine@---
i1
@todo_wine@i3
@todo_wine@---
j1
j2
j3
k1
k2
@todo_wine@---
l1
l2
l3
--- chain brackets
a1
a2
a3
b1
b2
b3
c1
c2
@todo_wine@---
d1
d2
d3
e1
e2
e3
f1
f2
@todo_wine@---
g1
@todo_wine@---
h1
@todo_wine@---
i1
@todo_wine@---
j1
j2
j3
k1
k2
@todo_wine@---
l1
l2
l3
m1
@todo_wine@---
n1
@todo_wine@---
o1
@todo_wine@---
p1
p2
p3
q1
q2
@todo_wine@---
r1
r2
r3
--- chain pipe
@todo_wine@a@space@
@todo_wine@a@space@
---
b2
c1
c3
d1
@todo_wine@---
e1
e3
f2
f3
g2
@todo_wine@---
h2
h3
i3
--- chain pipe input
a2:[a1,a2]
b3:[b2:[b1,b2],b3]@or_broken@b3:[b2:,b3]
c4:[c3:[c2:[c1,c2],c3],c4]@or_broken@c4:[c3:[c2:,c3],c4]@or_broken@c4:[c3:,c4]
d2:[d1,d2]
e3:[e2:[e1,e2],e3]@or_broken@e3:[e2:,e3]
f4:[f3:[f2:[f1,f2],f3],f4]@or_broken@f4:[f3:[f2:,f3],f4]@or_broken@f4:[f3:,f4]
--- chain else
a1
b2
@todo_wine@---
@todo_wine@c3
@todo_wine@---
@todo_wine@d3
@todo_wine@---
@todo_wine@---
@todo_wine@---
@todo_wine@---
@todo_wine@---
--- chain else (if true)
a1 else echo a2
b2 else echo b3
c1
c2 else echo c3
d1
@todo_wine@---
e1
e2 else echo e3
f3
g1 else echo g2
g3
h1 else echo h2
@todo_wine@---
i1 else echo i2
i3
@todo_wine@j2@space@
@todo_wine@---
k1
k2
l1
@todo_wine@---
m1
m2
n1
o1
p1
q1
--- chain else (if false)
@todo_wine@j3
---
k3
l3
m3
n3
o2
o3
p2
@todo_wine@---
q2
q3
------------ Testing 'set' ------------
1
0
@ -331,7 +531,7 @@ N
@todo_wine@'@drive@@shortpath@ABCDEFGHIJK.LMNOP'@or_broken@''
''@or_broken@'%~ai'
''@or_broken@'%~ai'
'--a------'@or_broken@'--a--------'@or_broken@'%~ai'
'--a------'@or_broken@'--a--------'@or_broken@'--a--c---'@or_broken@'%~ai'
'5'@or_broken@'%~zi'
''@or_broken@'%~ti'
''@or_broken@'%~ti'
@ -1262,6 +1462,9 @@ Passed: file size check on file3_plus_eof [12]@or_broken@Skipping file size chec
Passed: file size check on file12_plus_eof [14]@or_broken@Skipping file size check on NT4
Passed: file size check on file12_no_eof [13]@or_broken@Skipping file size check on NT4
Passed: file size check on file12_eof2 [14]@or_broken@Skipping file size check on NT4
Passed: file size check on file1 [24]@or_broken@Skipping file size check on NT4
Passed: file size check on file2 [16]@or_broken@Skipping file size check on NT4
Passed: file size check on file3 [13]@or_broken@Skipping file size check on NT4
Passed: file size check on file1_binary_srccopy [6]@or_broken@Skipping file size check on NT4
Passed: file size check on file1_ascii_srccopy [5]@or_broken@Skipping file size check on NT4
Passed: file size check on file123_default_copy [25]@or_broken@Skipping file size check on NT4