[CMD_WINETEST]

* Sync with Wine 1.7.27.
CORE-8540

svn path=/trunk/; revision=64351
This commit is contained in:
Amine Khaldi 2014-09-27 19:31:30 +00:00
parent ad444d44ac
commit ed47459da0
5 changed files with 189 additions and 51 deletions

View file

@ -140,9 +140,9 @@ static DWORD map_file(const char *file_name, const char **ret)
size = GetFileSize(file, NULL);
map = CreateFileMapping(file, NULL, PAGE_READONLY, 0, 0, NULL);
map = CreateFileMappingA(file, NULL, PAGE_READONLY, 0, 0, NULL);
CloseHandle(file);
ok(map != NULL, "CreateFileMapping(%s) failed: %u\n", file_name, GetLastError());
ok(map != NULL, "CreateFileMappingA(%s) failed: %u\n", file_name, GetLastError());
if(!map)
return 0;
@ -409,7 +409,7 @@ static DWORD load_resource(const char *name, const char *type, const char **ret)
return size;
}
static BOOL WINAPI test_enum_proc(HMODULE module, LPCTSTR type, LPSTR name, LONG_PTR param)
static BOOL WINAPI test_enum_proc(HMODULE module, LPCSTR type, LPSTR name, LONG_PTR param)
{
const char *cmd_data, *out_data;
DWORD cmd_size, out_size;
@ -466,8 +466,14 @@ START_TEST(batch)
drive[0] = workdir[0];
drive[1] = workdir[1]; /* Should be ':' */
memcpy(path, workdir + drive_len, (workdir_len - drive_len) * sizeof(drive[0]));
path[workdir_len - drive_len] = '\\';
path_len = workdir_len - drive_len + 1;
/* Only add trailing backslash to 'path' for non-root directory */
if (workdir_len - drive_len > 1) {
path[workdir_len - drive_len] = '\\';
path_len = workdir_len - drive_len + 1;
} else {
path_len = 1; /* \ */
}
shortpath_len = GetShortPathNameA(path, shortpath,
sizeof(shortpath)/sizeof(shortpath[0]));

View file

@ -286,10 +286,35 @@ set WINE_FOO=foo@space@
echo '%WINE_FOO%'
set WINE_FOO=foo@tab@
echo '%WINE_FOO%'
rem Space symbol must appear in `var`
set WINE_FOO=value@space@
echo '%WINE_FOO%'
rem Space symbol must NOT appear in `var`
set "WINE_FOO=value"@space@
echo '%WINE_FOO%'
rem Mixed examples:
set WINE_FOO=jim fred
echo '%WINE_FOO%'
set WINE_FOO="jim" fred
echo '%WINE_FOO%'
set "WINE_FOO=jim fred"
echo '%WINE_FOO%'
set "WINE_FOO=jim" fred
echo '%WINE_FOO%'
rem Only the final quote ends the string
set "WINE_FOO=apple"banana"grape"orange
echo '%WINE_FOO%'
set WINE_FOO=
echo ------------ Testing variable expansion ------------
call :setError 0
echo ~p0 should be path containing batch file
echo %~p0
mkdir dummydir
cd dummydir
echo %~p0
cd ..
rmdir dummydir
echo ~dp0 should be directory containing batch file
echo %~dp0
mkdir dummydir
@ -363,6 +388,7 @@ for %%i in ("d e" f) do echo %%~dpi
for %%i in ("g h" i) do echo %%~sdi
for %%i in ("g h" i) do echo %%~dsi
for %%i in ("j k" l.eh) do echo '%%~xsi'
for %%i in ("") do echo '%%~i,%%~fi,%%~di,%%~pi,%%~ni,%%~xi,%%~si,%%~ai,%%~ti,%%~zi'
echo --- in parameters
for %%i in ("A B" C) do call :echoFun %%i
@ -998,7 +1024,22 @@ for /R %%i in (baz* fred* jim) do call temp.bat %%i
call :ValidateExpected
echo for /R passed
cd .. & rd /s/Q foobar
echo --- Complex wildcards unix and windows slash
cd ..
echo Windows slashs, valid path
for %%f in (foobar\baz\bazbaz) do echo ASIS: %%f
for %%f in (foobar\baz\*) do echo WC : %%f
echo Windows slashs, invalid path
for %%f in (foobar\jim\bazbaz) do echo ASIS: %%f
for %%f in (foobar\jim\*) do echo WC : %%f
echo Unix slashs, valid path
for %%f in (foobar/baz/bazbaz) do echo ASIS: %%f
for %%f in (foobar/baz/*) do echo WC : %%f
echo Unix slashs, invalid path
for %%f in (foobar/jim/bazbaz) do echo ASIS: %%f
for %%f in (foobar/jim/*) do echo WC : %%f
echo Done
rd /s/Q foobar
echo --- for /L
rem Some cases loop forever writing 0s, like e.g. (1,0,1), (1,a,3) or (a,b,c); those can't be tested here
for /L %%i in (1,2,0) do echo %%i
@ -2199,7 +2240,7 @@ rem ******************************************************************
rem ASCII and BINARY tests
rem Note: hard coded numbers deliberate because need to ensure whether
rem an additional EOF has been added or not. There is no way to handle
rem EOFs in batch, so assume if a single byte appears, its an EOF!
rem EOFs in batch, so assume if a single byte appears, it's an EOF!
rem ******************************************************************
rem Confirm original sizes of file1,2,3
@ -2283,7 +2324,7 @@ call :CheckFileSize file123_mixed_copy4 25
rem -------------------------------------------------------------------------------------------
rem This shows when concatenating, an ascii destination always adds on an EOF but when we
rem are not concatenating, its a direct copy regardless of destination if being read as binary
rem are not concatenating, it's a direct copy regardless of destination if being read as binary
rem -------------------------------------------------------------------------------------------
rem All 3 have eof's, plus an extra = 6 + 9 + 12 + eof
@ -2538,17 +2579,72 @@ echo %ErrorLevel% should still be 7
echo ------------ Testing GOTO ------------
if a==a goto dest1
echo FAILURE at dest 1
:dest1
echo goto with no leading space worked
if a==a goto :dest1b
echo FAILURE at dest 1b
:dest1b
echo goto with colon and no leading space worked
if b==b goto dest2
echo FAILURE at dest 2
:dest2
echo goto with a leading space worked
if c==c goto dest3
echo FAILURE at dest 3
:dest3
echo goto with a leading tab worked
if d==d goto dest4
echo FAILURE at dest 4
:dest4@space@
echo goto with a following space worked
if e==e goto dest5
echo FAILURE at dest 5
:dest5&& echo FAILURE
echo goto with following amphersands worked
del failure.txt >nul 2>&1
if f==f goto dest6
echo FAILURE at dest 6
:dest6>FAILURE.TXT
if exist FAILURE.TXT echo FAILURE at dest 6 as file exists
echo goto with redirections worked
del FAILURE.TXT >nul 2>&1
:: some text that is ignored | dir >cmd_output | another test
if exist cmd_output echo FAILURE at dest 6 as file exists
echo Ignoring double colons worked
del cmd_output >nul 2>&1
rem goto a label which does not exist issues an error message and
rem acts the same as goto :EOF, and ensure ::label is never matched
del testgoto.bat >nul 2>&1
echo goto :dest7 ^>nul 2^>^&1 >> testgoto.bat
echo echo FAILURE at dest 7 - Should have not found label and issued an error plus ended the batch>> testgoto.bat
echo ::dest7>> testgoto.bat
echo echo FAILURE at dest 7 - Incorrectly went to label >> testgoto.bat
call testgoto.bat
del testgoto.bat >nul 2>&1
del testgoto.bat >nul 2>&1
echo goto ::dest8 ^>nul 2^>^&1 >> testgoto.bat
echo echo FAILURE at dest 8 - Should have not found label and issued an error plus ended the batch>> testgoto.bat
echo ::dest8>> testgoto.bat
echo echo FAILURE at dest 8 - Incorrectly went to label >> testgoto.bat
call testgoto.bat
del testgoto.bat >nul 2>&1
if g==g goto dest9
echo FAILURE at dest 9
:dest91
echo FAILURE at dest 91
@ : dest9>rubbish
echo label with mixed whitespace and no echo worked
if h==h goto :dest10:this is ignored
echo FAILURE at dest 10
:dest10:this is also ignored
echo Correctly ignored trailing information
echo ------------ Testing PATH ------------
set WINE_backup_path=%path%

View file

@ -251,10 +251,20 @@ foo
''
'foo@space@'
'foo@tab@'
'value@space@'
'value'
'jim fred'
'"jim" fred'
'jim fred'
'jim'
'apple"banana"grape'
------------ Testing variable expansion ------------
~p0 should be path containing batch file
@path@
@path@
~dp0 should be directory containing batch file
@pwd@\
@pwd@\
@drive@@path@
@drive@@path@
CD value @pwd@@or_broken@CD value@space@
%
P
@ -289,8 +299,8 @@ C
C
'A B'@or_broken@''
'C'@or_broken@''
@pwd@\C D@or_broken@%~ff
@pwd@\E@or_broken@%~ff
@drive@@path@C D@or_broken@%~ff
@drive@@path@E@or_broken@%~ff
@drive@
@drive@
@path@@or_broken@%~pd
@ -319,13 +329,14 @@ N
@drive@
''
'.eh'
',,,,,,,,,'
--- in parameters
"A B"
C
'A B'@or_broken@''
'C'@or_broken@''
@pwd@\C D
@pwd@\E
@drive@@path@C D
@drive@@path@E
@drive@
@drive@
@path@
@ -381,22 +392,22 @@ foo5
foo6@space@
@todo_wine@------------ Testing cd ------------
singleFile
Current dir: @pwd@\foobar@or_broken@Current dir:@space@
@pwd@\foobar
Current dir: @drive@@path@foobar@or_broken@Current dir:@space@
@drive@@path@foobar
@pwd@
@pwd@\foobar
@drive@@path@foobar
@pwd@
@pwd@\foobar
@drive@@path@foobar
@pwd@
@pwd@
@pwd@
@pwd@\foobar\bar bak
@pwd@\foobar\bar bak
@pwd@\foobar\bar bak
@pwd@\foobar\bar bak
@pwd@\foobar\bar bak
@drive@@path@foobar\bar bak
@drive@@path@foobar\bar bak
@drive@@path@foobar\bar bak
@drive@@path@foobar\bar bak
@drive@@path@foobar\bar bak
@pwd@
@pwd@\foobar
@drive@@path@foobar
------------ Testing type ------------
@pwd@>type foobaz@space@
@ -683,6 +694,18 @@ Mixed enumeration from provided root
With duplicates enumeration
Strip missing wildcards, keep unwildcarded names
for /R passed
--- Complex wildcards unix and windows slash
Windows slashs, valid path
ASIS: foobar\baz\bazbaz
WC : foobar\baz\bazbaz
Windows slashs, invalid path
ASIS: foobar\jim\bazbaz
Unix slashs, valid path
ASIS: foobar/baz/bazbaz
WC : bazbaz
Unix slashs, invalid path
ASIS: foobar/jim/bazbaz
Done
--- for /L
1
3
@ -1067,31 +1090,31 @@ bar\baz removed
--- pushing non-existing dir
@pwd@
--- basic behaviour
@pwd@\foobar
@drive@@path@foobar
@pwd@
@pwd@\foobar\baz
@pwd@\foobar
@pwd@\foobar
@drive@@path@foobar\baz
@drive@@path@foobar
@drive@@path@foobar
@pwd@
@pwd@\foobar
@drive@@path@foobar
@pwd@
------------ Testing attrib ------------
A @pwd@\foobar\foo@or_broken@A @pwd@\foobar\foo@or_broken@A I @pwd@\foobar\foo
A @drive@@path@foobar\foo@or_broken@A @drive@@path@foobar\foo@or_broken@A I @drive@@path@foobar\foo
--- read-only attribute
A R @pwd@\foobar\foo@or_broken@A R @pwd@\foobar\foo@or_broken@A R I @pwd@\foobar\foo
A R @drive@@path@foobar\foo@or_broken@A R @drive@@path@foobar\foo@or_broken@A R I @drive@@path@foobar\foo
foo
foo original contents
Read-only file not deleted
Read-only file forcibly deleted
--- recursive behaviour
A @pwd@\foobar\baz\level2@or_broken@A @pwd@\foobar\baz\level2@or_broken@A I @pwd@\foobar\baz\level2
A R @pwd@\foobar\level1@or_broken@A R @pwd@\foobar\level1@or_broken@A R I @pwd@\foobar\level1
A R @pwd@\foobar\baz\level2@or_broken@A R @pwd@\foobar\baz\level2@or_broken@A R I @pwd@\foobar\baz\level2
A @pwd@\foobar\bar@or_broken@A @pwd@\foobar\bar@or_broken@A I @pwd@\foobar\bar
A @drive@@path@foobar\baz\level2@or_broken@A @drive@@path@foobar\baz\level2@or_broken@A I @drive@@path@foobar\baz\level2
A R @drive@@path@foobar\level1@or_broken@A R @drive@@path@foobar\level1@or_broken@A R I @drive@@path@foobar\level1
A R @drive@@path@foobar\baz\level2@or_broken@A R @drive@@path@foobar\baz\level2@or_broken@A R I @drive@@path@foobar\baz\level2
A @drive@@path@foobar\bar@or_broken@A @drive@@path@foobar\bar@or_broken@A I @drive@@path@foobar\bar
--- folders processing
@pwd@\foobar@or_broken@ @pwd@\foobar@or_broken@ I @pwd@\foobar
@todo_wine@ R @pwd@\foobar\baz@or_broken@ R @pwd@\foobar\baz@or_broken@ @pwd@\foobar\baz@or_broken@ R I @pwd@\foobar\baz
A @pwd@\foobar\baz\toto@or_broken@A @pwd@\foobar\baz\toto@or_broken@A I @pwd@\foobar\baz\toto
@drive@@path@foobar@or_broken@ @drive@@path@foobar@or_broken@ I @drive@@path@foobar
@todo_wine@ R @drive@@path@foobar\baz@or_broken@ R @drive@@path@foobar\baz@or_broken@ @drive@@path@foobar\baz@or_broken@ R I @drive@@path@foobar\baz
A @drive@@path@foobar\baz\toto@or_broken@A @drive@@path@foobar\baz\toto@or_broken@A I @drive@@path@foobar\baz\toto
toto
lulu
file created in read-only dir
@ -1228,17 +1251,17 @@ ErrLev: 0
--- setlocal with corresponding endlocal
globalval
localval
@pwd@\foobar\foobar2
@drive@@path@foobar\foobar2
globalval
@pwd@\foobar
@drive@@path@foobar
globalval
@pwd@\foobar
@drive@@path@foobar
--- setlocal with no corresponding endlocal
globalval
localval
@pwd@\foobar\foobar2
@drive@@path@foobar\foobar2
globalval
@pwd@\foobar
@drive@@path@foobar
--- setlocal within same batch program
Var1 ok 1
Var2 ok 2
@ -1256,23 +1279,23 @@ Directory is ok 3
--- Extra setlocal in called batch
value2
2set1endvalue1
@pwd@\foobar\foodir3
@drive@@path@foobar\foodir3
Finished:
value2
@pwd@\foobar\foodir2
@drive@@path@foobar\foodir2
value1
@pwd@\foobar
@drive@@path@foobar
--- Extra endlocal in called batch
value2
value2
@pwd@\foobar\foodir2
@drive@@path@foobar\foodir2
value2
@pwd@\foobar\foodir2
@drive@@path@foobar\foodir2
Finished:
value2
@pwd@\foobar\foodir2
@drive@@path@foobar\foodir2
value1
@pwd@\foobar
@drive@@path@foobar
--- endlocal in called function rather than batch pgm is ineffective
2
2
@ -1294,9 +1317,15 @@ errorlevel zero, good@or_broken@errorlevel nonzero, bad
7 should still be 7
------------ Testing GOTO ------------
goto with no leading space worked
goto with colon and no leading space worked
goto with a leading space worked
goto with a leading tab worked
goto with a following space worked
goto with following amphersands worked
goto with redirections worked
Ignoring double colons worked
label with mixed whitespace and no echo worked
Correctly ignored trailing information
------------ Testing PATH ------------
PATH=original
PATH=try2

View file

@ -95,6 +95,7 @@ echo @echo 1 > "say one.bat"
echo @echo 2 > "saytwo.bat"
echo @echo 3 > "say (3).bat"
echo @echo 4 > "say .bat"
echo @echo 5 > "bazbaz(5).bat"
echo ------ Testing invocation of batch files ----------
call say one
@ -144,6 +145,11 @@ if errorlevel 2 echo error %ErrorLevel%
call :setError 0
cmd /c say" "(3) prints 4?!
if errorlevel 2 echo error %ErrorLevel%
call :setError 0
rem Deliberately invoking a fully qualified batch name containing a bracket
rem should fail, as a bracket is a command delimiter.
cmd /c "bazbaz(5).bat"
if errorlevel 1 echo Passed
echo ---------- Testing CMD /C quoting -----------------
cmd /c @echo "hi"
@ -261,7 +267,7 @@ call tell(1234)
call tell(12(34)
call tell(12;34)
echo --------- Finished --------------
del tell.bat say*.*
del tell.bat say*.* bazbaz*.bat
exit
:setError
exit /B %1

View file

@ -70,6 +70,7 @@ var=33@space@
0@space@
3@space@
4@space@
Passed
---------- Testing CMD /C quoting -----------------
"hi"
1@space@