kernel32/tests: Fix the file test on various Windows versions.
This commit is contained in:
parent
f0d0ac75dc
commit
16feb03778
|
@ -1072,6 +1072,7 @@ static void test_LockFile(void)
|
||||||
OVERLAPPED overlapped;
|
OVERLAPPED overlapped;
|
||||||
int limited_LockFile;
|
int limited_LockFile;
|
||||||
int limited_UnLockFile;
|
int limited_UnLockFile;
|
||||||
|
BOOL ret;
|
||||||
|
|
||||||
handle = CreateFileA( filename, GENERIC_READ | GENERIC_WRITE,
|
handle = CreateFileA( filename, GENERIC_READ | GENERIC_WRITE,
|
||||||
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
|
FILE_SHARE_READ | FILE_SHARE_WRITE, NULL,
|
||||||
|
@ -1131,10 +1132,15 @@ static void test_LockFile(void)
|
||||||
"UnlockFileEx 150,100 again succeeded\n" );
|
"UnlockFileEx 150,100 again succeeded\n" );
|
||||||
}
|
}
|
||||||
|
|
||||||
ok( LockFile( handle, 0, 0x10000000, 0, 0xf0000000 ), "LockFile failed\n" );
|
ret = LockFile( handle, 0, 0x10000000, 0, 0xf0000000 );
|
||||||
ok( !LockFile( handle, ~0, ~0, 1, 0 ), "LockFile ~0,1 succeeded\n" );
|
if (ret)
|
||||||
ok( !LockFile( handle, 0, 0x20000000, 20, 0 ), "LockFile 0x20000000,20 succeeded\n" );
|
{
|
||||||
ok( UnlockFile( handle, 0, 0x10000000, 0, 0xf0000000 ), "UnlockFile failed\n" );
|
ok( !LockFile( handle, ~0, ~0, 1, 0 ), "LockFile ~0,1 succeeded\n" );
|
||||||
|
ok( !LockFile( handle, 0, 0x20000000, 20, 0 ), "LockFile 0x20000000,20 succeeded\n" );
|
||||||
|
ok( UnlockFile( handle, 0, 0x10000000, 0, 0xf0000000 ), "UnlockFile failed\n" );
|
||||||
|
}
|
||||||
|
else /* win9x */
|
||||||
|
ok( GetLastError() == ERROR_INVALID_PARAMETER, "wrong LockFile error %u\n", GetLastError() );
|
||||||
|
|
||||||
/* wrap-around lock should not do anything */
|
/* wrap-around lock should not do anything */
|
||||||
/* (but still succeeds on NT4 so we don't check result) */
|
/* (but still succeeds on NT4 so we don't check result) */
|
||||||
|
@ -1385,11 +1391,14 @@ static void test_FindFirstFileA(void)
|
||||||
err = GetLastError();
|
err = GetLastError();
|
||||||
ok( handle != INVALID_HANDLE_VALUE, "FindFirstFile on %s failed\n", buffer2 );
|
ok( handle != INVALID_HANDLE_VALUE, "FindFirstFile on %s failed\n", buffer2 );
|
||||||
ok( 0 == lstrcmpiA(data.cFileName, "nul"), "wrong name %s\n", data.cFileName );
|
ok( 0 == lstrcmpiA(data.cFileName, "nul"), "wrong name %s\n", data.cFileName );
|
||||||
ok( 0 == data.nFileSizeHigh, "wrong size %d\n", data.nFileSizeHigh );
|
|
||||||
ok( 0 == data.nFileSizeLow, "wrong size %d\n", data.nFileSizeLow );
|
|
||||||
ok( FILE_ATTRIBUTE_ARCHIVE == data.dwFileAttributes ||
|
ok( FILE_ATTRIBUTE_ARCHIVE == data.dwFileAttributes ||
|
||||||
FILE_ATTRIBUTE_DEVICE == data.dwFileAttributes /* Win9x */,
|
FILE_ATTRIBUTE_DEVICE == data.dwFileAttributes /* Win9x */,
|
||||||
"wrong attributes %x\n", data.dwFileAttributes );
|
"wrong attributes %x\n", data.dwFileAttributes );
|
||||||
|
if (data.dwFileAttributes == FILE_ATTRIBUTE_ARCHIVE)
|
||||||
|
{
|
||||||
|
ok( 0 == data.nFileSizeHigh, "wrong size %d\n", data.nFileSizeHigh );
|
||||||
|
ok( 0 == data.nFileSizeLow, "wrong size %d\n", data.nFileSizeLow );
|
||||||
|
}
|
||||||
SetLastError( 0xdeadbeaf );
|
SetLastError( 0xdeadbeaf );
|
||||||
ok( !FindNextFileA( handle, &data ), "FindNextFileA succeeded\n" );
|
ok( !FindNextFileA( handle, &data ), "FindNextFileA succeeded\n" );
|
||||||
ok( GetLastError() == ERROR_NO_MORE_FILES, "bad error %d\n", GetLastError() );
|
ok( GetLastError() == ERROR_NO_MORE_FILES, "bad error %d\n", GetLastError() );
|
||||||
|
@ -1402,11 +1411,14 @@ static void test_FindFirstFileA(void)
|
||||||
err = GetLastError();
|
err = GetLastError();
|
||||||
ok( handle != INVALID_HANDLE_VALUE, "FindFirstFile on %s failed\n", buffer2 );
|
ok( handle != INVALID_HANDLE_VALUE, "FindFirstFile on %s failed\n", buffer2 );
|
||||||
ok( 0 == lstrcmpiA(data.cFileName, "lpt1"), "wrong name %s\n", data.cFileName );
|
ok( 0 == lstrcmpiA(data.cFileName, "lpt1"), "wrong name %s\n", data.cFileName );
|
||||||
ok( 0 == data.nFileSizeHigh, "wrong size %d\n", data.nFileSizeHigh );
|
|
||||||
ok( 0 == data.nFileSizeLow, "wrong size %d\n", data.nFileSizeLow );
|
|
||||||
ok( FILE_ATTRIBUTE_ARCHIVE == data.dwFileAttributes ||
|
ok( FILE_ATTRIBUTE_ARCHIVE == data.dwFileAttributes ||
|
||||||
FILE_ATTRIBUTE_DEVICE == data.dwFileAttributes /* Win9x */,
|
FILE_ATTRIBUTE_DEVICE == data.dwFileAttributes /* Win9x */,
|
||||||
"wrong attributes %x\n", data.dwFileAttributes );
|
"wrong attributes %x\n", data.dwFileAttributes );
|
||||||
|
if (data.dwFileAttributes == FILE_ATTRIBUTE_ARCHIVE)
|
||||||
|
{
|
||||||
|
ok( 0 == data.nFileSizeHigh, "wrong size %d\n", data.nFileSizeHigh );
|
||||||
|
ok( 0 == data.nFileSizeLow, "wrong size %d\n", data.nFileSizeLow );
|
||||||
|
}
|
||||||
SetLastError( 0xdeadbeaf );
|
SetLastError( 0xdeadbeaf );
|
||||||
ok( !FindNextFileA( handle, &data ), "FindNextFileA succeeded\n" );
|
ok( !FindNextFileA( handle, &data ), "FindNextFileA succeeded\n" );
|
||||||
ok( GetLastError() == ERROR_NO_MORE_FILES, "bad error %d\n", GetLastError() );
|
ok( GetLastError() == ERROR_NO_MORE_FILES, "bad error %d\n", GetLastError() );
|
||||||
|
@ -1715,26 +1727,28 @@ static void test_OpenFile(void)
|
||||||
BOOL ret;
|
BOOL ret;
|
||||||
DWORD retval;
|
DWORD retval;
|
||||||
|
|
||||||
static const char *file = "\\regedit.exe";
|
static const char file[] = "regedit.exe";
|
||||||
static const char *foo = ".\\foo-bar-foo.baz";
|
static const char foo[] = ".\\foo-bar-foo.baz";
|
||||||
static const char *foo_too_long = ".\\foo-bar-foo.baz+++++++++++++++"
|
static const char *foo_too_long = ".\\foo-bar-foo.baz+++++++++++++++"
|
||||||
"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
|
"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
|
||||||
"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
|
"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
|
||||||
"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
|
"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
|
||||||
"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
|
"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
|
||||||
"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++";
|
"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++";
|
||||||
static const char *backslash = "\\";
|
|
||||||
char buff[MAX_PATH];
|
char buff[MAX_PATH];
|
||||||
char buff_long[4*MAX_PATH];
|
char buff_long[4*MAX_PATH];
|
||||||
char filled_0xA5[OFS_MAXPATHNAME];
|
char filled_0xA5[OFS_MAXPATHNAME];
|
||||||
|
char *p;
|
||||||
UINT length;
|
UINT length;
|
||||||
|
|
||||||
/* Check for existing file */
|
/* Check for existing file */
|
||||||
length = GetWindowsDirectoryA(buff, MAX_PATH);
|
length = GetWindowsDirectoryA(buff, MAX_PATH);
|
||||||
|
|
||||||
if (length + lstrlen(file) < MAX_PATH)
|
if (length + sizeof(file) < MAX_PATH)
|
||||||
{
|
{
|
||||||
lstrcatA(buff, file);
|
p = buff + strlen(buff);
|
||||||
|
if (p > buff && p[-1] != '\\') *p++ = '\\';
|
||||||
|
strcpy( p, file );
|
||||||
memset(&ofs, 0xA5, sizeof(ofs));
|
memset(&ofs, 0xA5, sizeof(ofs));
|
||||||
SetLastError(0xfaceabee);
|
SetLastError(0xfaceabee);
|
||||||
|
|
||||||
|
@ -1753,9 +1767,11 @@ static void test_OpenFile(void)
|
||||||
length = GetCurrentDirectoryA(MAX_PATH, buff);
|
length = GetCurrentDirectoryA(MAX_PATH, buff);
|
||||||
|
|
||||||
/* Check for nonexistent file */
|
/* Check for nonexistent file */
|
||||||
if (length + lstrlenA(foo + 1) < MAX_PATH)
|
if (length + sizeof(foo) < MAX_PATH)
|
||||||
{
|
{
|
||||||
lstrcatA(buff, foo + 1); /* Avoid '.' during concatenation */
|
p = buff + strlen(buff);
|
||||||
|
if (p > buff && p[-1] != '\\') *p++ = '\\';
|
||||||
|
strcpy( p, foo + 2 );
|
||||||
memset(&ofs, 0xA5, sizeof(ofs));
|
memset(&ofs, 0xA5, sizeof(ofs));
|
||||||
SetLastError(0xfaceabee);
|
SetLastError(0xfaceabee);
|
||||||
|
|
||||||
|
@ -1793,17 +1809,16 @@ static void test_OpenFile(void)
|
||||||
ofs.szPathName );
|
ofs.szPathName );
|
||||||
}
|
}
|
||||||
|
|
||||||
length = GetCurrentDirectoryA(MAX_PATH, buff);
|
length = GetCurrentDirectoryA(MAX_PATH, buff) + sizeof(filename);
|
||||||
length += lstrlenA(backslash);
|
|
||||||
length += lstrlenA(filename);
|
|
||||||
|
|
||||||
if (length >= MAX_PATH)
|
if (length >= MAX_PATH)
|
||||||
{
|
{
|
||||||
trace("Buffer too small, requested length = %d, but MAX_PATH = %d. Skipping test.\n", length, MAX_PATH);
|
trace("Buffer too small, requested length = %d, but MAX_PATH = %d. Skipping test.\n", length, MAX_PATH);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
lstrcatA(buff, backslash);
|
p = buff + strlen(buff);
|
||||||
lstrcatA(buff, filename);
|
if (p > buff && p[-1] != '\\') *p++ = '\\';
|
||||||
|
strcpy( p, filename );
|
||||||
|
|
||||||
memset(&ofs, 0xA5, sizeof(ofs));
|
memset(&ofs, 0xA5, sizeof(ofs));
|
||||||
SetLastError(0xfaceabee);
|
SetLastError(0xfaceabee);
|
||||||
|
@ -1813,7 +1828,8 @@ static void test_OpenFile(void)
|
||||||
ok( GetLastError() == 0xfaceabee || GetLastError() == ERROR_SUCCESS,
|
ok( GetLastError() == 0xfaceabee || GetLastError() == ERROR_SUCCESS,
|
||||||
"GetLastError() returns %d\n", GetLastError() );
|
"GetLastError() returns %d\n", GetLastError() );
|
||||||
ok( ofs.cBytes == sizeof(OFSTRUCT), "OpenFile set ofs.cBytes to %d\n", ofs.cBytes );
|
ok( ofs.cBytes == sizeof(OFSTRUCT), "OpenFile set ofs.cBytes to %d\n", ofs.cBytes );
|
||||||
ok( ofs.nErrCode == ERROR_SUCCESS, "OpenFile set ofs.nErrCode to %d\n", ofs.nErrCode );
|
ok( ofs.nErrCode == ERROR_SUCCESS || broken(ofs.nErrCode != ERROR_SUCCESS) /* win9x */,
|
||||||
|
"OpenFile set ofs.nErrCode to %d\n", ofs.nErrCode );
|
||||||
ret = CloseHandle((HANDLE)hFile);
|
ret = CloseHandle((HANDLE)hFile);
|
||||||
ok( ret == TRUE, "CloseHandle() returns %d\n", ret );
|
ok( ret == TRUE, "CloseHandle() returns %d\n", ret );
|
||||||
retval = GetFileAttributesA(filename);
|
retval = GetFileAttributesA(filename);
|
||||||
|
@ -1828,7 +1844,8 @@ static void test_OpenFile(void)
|
||||||
ok( GetLastError() == 0xfaceabee || GetLastError() == ERROR_SUCCESS,
|
ok( GetLastError() == 0xfaceabee || GetLastError() == ERROR_SUCCESS,
|
||||||
"GetLastError() returns %d\n", GetLastError() );
|
"GetLastError() returns %d\n", GetLastError() );
|
||||||
ok( ofs.cBytes == sizeof(OFSTRUCT), "OpenFile set ofs.cBytes to %d\n", ofs.cBytes );
|
ok( ofs.cBytes == sizeof(OFSTRUCT), "OpenFile set ofs.cBytes to %d\n", ofs.cBytes );
|
||||||
ok( ofs.nErrCode == ERROR_SUCCESS, "OpenFile set ofs.nErrCode to %d\n", ofs.nErrCode );
|
ok( ofs.nErrCode == ERROR_SUCCESS || broken(ofs.nErrCode != ERROR_SUCCESS) /* win9x */,
|
||||||
|
"OpenFile set ofs.nErrCode to %d\n", ofs.nErrCode );
|
||||||
ok( lstrcmpiA(ofs.szPathName, buff) == 0,
|
ok( lstrcmpiA(ofs.szPathName, buff) == 0,
|
||||||
"OpenFile returned '%s', but was expected to return '%s'\n", ofs.szPathName, buff );
|
"OpenFile returned '%s', but was expected to return '%s'\n", ofs.szPathName, buff );
|
||||||
ret = CloseHandle((HANDLE)hFile);
|
ret = CloseHandle((HANDLE)hFile);
|
||||||
|
@ -1842,7 +1859,8 @@ static void test_OpenFile(void)
|
||||||
ok( GetLastError() == 0xfaceabee || GetLastError() == ERROR_SUCCESS,
|
ok( GetLastError() == 0xfaceabee || GetLastError() == ERROR_SUCCESS,
|
||||||
"GetLastError() returns %d\n", GetLastError() );
|
"GetLastError() returns %d\n", GetLastError() );
|
||||||
ok( ofs.cBytes == sizeof(OFSTRUCT), "OpenFile set ofs.cBytes to %d\n", ofs.cBytes );
|
ok( ofs.cBytes == sizeof(OFSTRUCT), "OpenFile set ofs.cBytes to %d\n", ofs.cBytes );
|
||||||
ok( ofs.nErrCode == ERROR_SUCCESS, "OpenFile set ofs.nErrCode to %d\n", ofs.nErrCode );
|
ok( ofs.nErrCode == ERROR_SUCCESS || broken(ofs.nErrCode != ERROR_SUCCESS) /* win9x */,
|
||||||
|
"OpenFile set ofs.nErrCode to %d\n", ofs.nErrCode );
|
||||||
ok( lstrcmpiA(ofs.szPathName, buff) == 0,
|
ok( lstrcmpiA(ofs.szPathName, buff) == 0,
|
||||||
"OpenFile returned '%s', but was expected to return '%s'\n", ofs.szPathName, buff );
|
"OpenFile returned '%s', but was expected to return '%s'\n", ofs.szPathName, buff );
|
||||||
ret = CloseHandle((HANDLE)hFile);
|
ret = CloseHandle((HANDLE)hFile);
|
||||||
|
@ -1856,7 +1874,8 @@ static void test_OpenFile(void)
|
||||||
ok( GetLastError() == 0xfaceabee || GetLastError() == ERROR_SUCCESS,
|
ok( GetLastError() == 0xfaceabee || GetLastError() == ERROR_SUCCESS,
|
||||||
"GetLastError() returns %d\n", GetLastError() );
|
"GetLastError() returns %d\n", GetLastError() );
|
||||||
ok( ofs.cBytes == sizeof(OFSTRUCT), "OpenFile set ofs.cBytes to %d\n", ofs.cBytes );
|
ok( ofs.cBytes == sizeof(OFSTRUCT), "OpenFile set ofs.cBytes to %d\n", ofs.cBytes );
|
||||||
ok( ofs.nErrCode == ERROR_SUCCESS, "OpenFile set ofs.nErrCode to %d\n", ofs.nErrCode );
|
ok( ofs.nErrCode == ERROR_SUCCESS || broken(ofs.nErrCode != ERROR_SUCCESS) /* win9x */,
|
||||||
|
"OpenFile set ofs.nErrCode to %d\n", ofs.nErrCode );
|
||||||
ok( lstrcmpiA(ofs.szPathName, buff) == 0,
|
ok( lstrcmpiA(ofs.szPathName, buff) == 0,
|
||||||
"OpenFile returned '%s', but was expected to return '%s'\n", ofs.szPathName, buff );
|
"OpenFile returned '%s', but was expected to return '%s'\n", ofs.szPathName, buff );
|
||||||
ret = CloseHandle((HANDLE)hFile);
|
ret = CloseHandle((HANDLE)hFile);
|
||||||
|
@ -1870,7 +1889,8 @@ static void test_OpenFile(void)
|
||||||
ok( GetLastError() == 0xfaceabee || GetLastError() == ERROR_SUCCESS,
|
ok( GetLastError() == 0xfaceabee || GetLastError() == ERROR_SUCCESS,
|
||||||
"GetLastError() returns %d\n", GetLastError() );
|
"GetLastError() returns %d\n", GetLastError() );
|
||||||
ok( ofs.cBytes == sizeof(OFSTRUCT), "OpenFile set ofs.cBytes to %d\n", ofs.cBytes );
|
ok( ofs.cBytes == sizeof(OFSTRUCT), "OpenFile set ofs.cBytes to %d\n", ofs.cBytes );
|
||||||
ok( ofs.nErrCode == ERROR_SUCCESS, "OpenFile set ofs.nErrCode to %d\n", ofs.nErrCode );
|
ok( ofs.nErrCode == ERROR_SUCCESS || broken(ofs.nErrCode != ERROR_SUCCESS) /* win9x */,
|
||||||
|
"OpenFile set ofs.nErrCode to %d\n", ofs.nErrCode );
|
||||||
ok( lstrcmpiA(ofs.szPathName, buff) == 0,
|
ok( lstrcmpiA(ofs.szPathName, buff) == 0,
|
||||||
"OpenFile returned '%s', but was expected to return '%s'\n", ofs.szPathName, buff );
|
"OpenFile returned '%s', but was expected to return '%s'\n", ofs.szPathName, buff );
|
||||||
|
|
||||||
|
@ -1882,7 +1902,8 @@ static void test_OpenFile(void)
|
||||||
ok( GetLastError() == 0xfaceabee || GetLastError() == ERROR_SUCCESS,
|
ok( GetLastError() == 0xfaceabee || GetLastError() == ERROR_SUCCESS,
|
||||||
"GetLastError() returns %d\n", GetLastError() );
|
"GetLastError() returns %d\n", GetLastError() );
|
||||||
ok( ofs.cBytes == sizeof(OFSTRUCT), "OpenFile set ofs.cBytes to %d\n", ofs.cBytes );
|
ok( ofs.cBytes == sizeof(OFSTRUCT), "OpenFile set ofs.cBytes to %d\n", ofs.cBytes );
|
||||||
ok( ofs.nErrCode == ERROR_SUCCESS, "OpenFile set ofs.nErrCode to %d\n", ofs.nErrCode );
|
ok( ofs.nErrCode == ERROR_SUCCESS || broken(ofs.nErrCode != ERROR_SUCCESS) /* win9x */,
|
||||||
|
"OpenFile set ofs.nErrCode to %d\n", ofs.nErrCode );
|
||||||
ok( lstrcmpiA(ofs.szPathName, buff) == 0,
|
ok( lstrcmpiA(ofs.szPathName, buff) == 0,
|
||||||
"OpenFile returned '%s', but was expected to return '%s'\n", ofs.szPathName, buff );
|
"OpenFile returned '%s', but was expected to return '%s'\n", ofs.szPathName, buff );
|
||||||
|
|
||||||
|
@ -1900,15 +1921,19 @@ static void test_overlapped(void)
|
||||||
memset( &ov, 0, sizeof ov );
|
memset( &ov, 0, sizeof ov );
|
||||||
result = 1;
|
result = 1;
|
||||||
r = GetOverlappedResult(0, &ov, &result, 0);
|
r = GetOverlappedResult(0, &ov, &result, 0);
|
||||||
ok( r == TRUE, "should return true\n");
|
if (r)
|
||||||
ok( result == 0, "wrong result %u\n", result );
|
ok( result == 0, "wrong result %u\n", result );
|
||||||
|
else /* win9x */
|
||||||
|
ok( GetLastError() == ERROR_INVALID_HANDLE, "wrong error %u\n", GetLastError() );
|
||||||
|
|
||||||
result = 0;
|
result = 0;
|
||||||
ov.Internal = 0;
|
ov.Internal = 0;
|
||||||
ov.InternalHigh = 0xabcd;
|
ov.InternalHigh = 0xabcd;
|
||||||
r = GetOverlappedResult(0, &ov, &result, 0);
|
r = GetOverlappedResult(0, &ov, &result, 0);
|
||||||
ok( r == TRUE, "should return true\n");
|
if (r)
|
||||||
ok( result == 0xabcd, "wrong result %u\n", result );
|
ok( result == 0xabcd, "wrong result %u\n", result );
|
||||||
|
else /* win9x */
|
||||||
|
ok( GetLastError() == ERROR_INVALID_HANDLE, "wrong error %u\n", GetLastError() );
|
||||||
|
|
||||||
SetLastError( 0xb00 );
|
SetLastError( 0xb00 );
|
||||||
result = 0;
|
result = 0;
|
||||||
|
@ -1917,14 +1942,15 @@ static void test_overlapped(void)
|
||||||
r = GetOverlappedResult(0, &ov, &result, 0);
|
r = GetOverlappedResult(0, &ov, &result, 0);
|
||||||
ok( GetLastError() == ERROR_INVALID_HANDLE, "wrong error %u\n", GetLastError() );
|
ok( GetLastError() == ERROR_INVALID_HANDLE, "wrong error %u\n", GetLastError() );
|
||||||
ok( r == FALSE, "should return false\n");
|
ok( r == FALSE, "should return false\n");
|
||||||
ok( result == 0xabcd, "wrong result %u\n", result );
|
ok( result == 0xabcd || result == 0 /* win9x */, "wrong result %u\n", result );
|
||||||
|
|
||||||
SetLastError( 0xb00 );
|
SetLastError( 0xb00 );
|
||||||
result = 0;
|
result = 0;
|
||||||
ov.Internal = STATUS_PENDING;
|
ov.Internal = STATUS_PENDING;
|
||||||
ov.InternalHigh = 0xabcd;
|
ov.InternalHigh = 0xabcd;
|
||||||
r = GetOverlappedResult(0, &ov, &result, 0);
|
r = GetOverlappedResult(0, &ov, &result, 0);
|
||||||
ok( GetLastError() == ERROR_IO_INCOMPLETE, "wrong error %u\n", GetLastError() );
|
ok( GetLastError() == ERROR_IO_INCOMPLETE || GetLastError() == ERROR_INVALID_HANDLE /* win9x */,
|
||||||
|
"wrong error %u\n", GetLastError() );
|
||||||
ok( r == FALSE, "should return false\n");
|
ok( r == FALSE, "should return false\n");
|
||||||
ok( result == 0, "wrong result %u\n", result );
|
ok( result == 0, "wrong result %u\n", result );
|
||||||
|
|
||||||
|
@ -1933,7 +1959,8 @@ static void test_overlapped(void)
|
||||||
ov.Internal = STATUS_PENDING;
|
ov.Internal = STATUS_PENDING;
|
||||||
ov.InternalHigh = 0xabcd;
|
ov.InternalHigh = 0xabcd;
|
||||||
r = GetOverlappedResult(0, &ov, &result, 0);
|
r = GetOverlappedResult(0, &ov, &result, 0);
|
||||||
ok( GetLastError() == ERROR_IO_INCOMPLETE, "wrong error %u\n", GetLastError() );
|
ok( GetLastError() == ERROR_IO_INCOMPLETE || GetLastError() == ERROR_INVALID_HANDLE /* win9x */,
|
||||||
|
"wrong error %u\n", GetLastError() );
|
||||||
ok( r == FALSE, "should return false\n");
|
ok( r == FALSE, "should return false\n");
|
||||||
|
|
||||||
ResetEvent( ov.hEvent );
|
ResetEvent( ov.hEvent );
|
||||||
|
@ -1942,7 +1969,8 @@ static void test_overlapped(void)
|
||||||
ov.Internal = STATUS_PENDING;
|
ov.Internal = STATUS_PENDING;
|
||||||
ov.InternalHigh = 0;
|
ov.InternalHigh = 0;
|
||||||
r = GetOverlappedResult(0, &ov, &result, 0);
|
r = GetOverlappedResult(0, &ov, &result, 0);
|
||||||
ok( GetLastError() == ERROR_IO_INCOMPLETE, "wrong error %u\n", GetLastError() );
|
ok( GetLastError() == ERROR_IO_INCOMPLETE || GetLastError() == ERROR_INVALID_HANDLE /* win9x */,
|
||||||
|
"wrong error %u\n", GetLastError() );
|
||||||
ok( r == FALSE, "should return false\n");
|
ok( r == FALSE, "should return false\n");
|
||||||
|
|
||||||
r = CloseHandle( ov.hEvent );
|
r = CloseHandle( ov.hEvent );
|
||||||
|
@ -1961,19 +1989,23 @@ static void test_RemoveDirectory(void)
|
||||||
ok( rc, "SetCurrentDirectory failed, gle=%d\n", GetLastError() );
|
ok( rc, "SetCurrentDirectory failed, gle=%d\n", GetLastError() );
|
||||||
|
|
||||||
rc = RemoveDirectory(".");
|
rc = RemoveDirectory(".");
|
||||||
todo_wine {
|
if (!rc)
|
||||||
ok( !rc, "RemoveDirectory unexpectedly worked\n" );
|
{
|
||||||
}
|
rc = SetCurrentDirectory("..");
|
||||||
|
ok( rc, "SetCurrentDirectory failed, gle=%d\n", GetLastError() );
|
||||||
|
|
||||||
rc = SetCurrentDirectory("..");
|
rc = RemoveDirectory(directory);
|
||||||
ok( rc, "SetCurrentDirectory failed, gle=%d\n", GetLastError() );
|
ok( rc, "RemoveDirectory failed, gle=%d\n", GetLastError() );
|
||||||
|
|
||||||
rc = RemoveDirectory(directory);
|
|
||||||
todo_wine {
|
|
||||||
ok( rc, "RemoveDirectory failed, gle=%d\n", GetLastError() );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static BOOL check_file_time( const FILETIME *ft1, const FILETIME *ft2, UINT tolerance )
|
||||||
|
{
|
||||||
|
ULONGLONG t1 = ((ULONGLONG)ft1->dwHighDateTime << 32) | ft1->dwLowDateTime;
|
||||||
|
ULONGLONG t2 = ((ULONGLONG)ft2->dwHighDateTime << 32) | ft2->dwLowDateTime;
|
||||||
|
return abs(t1 - t2) <= tolerance;
|
||||||
|
}
|
||||||
|
|
||||||
static void test_ReplaceFileA(void)
|
static void test_ReplaceFileA(void)
|
||||||
{
|
{
|
||||||
char replaced[MAX_PATH], replacement[MAX_PATH], backup[MAX_PATH];
|
char replaced[MAX_PATH], replacement[MAX_PATH], backup[MAX_PATH];
|
||||||
|
@ -2081,13 +2113,12 @@ static void test_ReplaceFileA(void)
|
||||||
/* make sure that the backup has the old "replaced" filetime */
|
/* make sure that the backup has the old "replaced" filetime */
|
||||||
ret = GetFileTime(hBackupFile, NULL, NULL, &ftBackup);
|
ret = GetFileTime(hBackupFile, NULL, NULL, &ftBackup);
|
||||||
ok( ret, "GetFileTime error (backup %d\n", GetLastError());
|
ok( ret, "GetFileTime error (backup %d\n", GetLastError());
|
||||||
ok(CompareFileTime(&ftBackup, &ftReplaced) == 0,
|
ok(check_file_time(&ftBackup, &ftReplaced, 1000000), "backup file has wrong filetime\n");
|
||||||
"backup file has wrong filetime\n");
|
|
||||||
CloseHandle(hBackupFile);
|
CloseHandle(hBackupFile);
|
||||||
/* make sure that the "replaced" has the old replacement filetime */
|
/* make sure that the "replaced" has the old replacement filetime */
|
||||||
ret = GetFileTime(hReplacedFile, NULL, NULL, &ftReplaced);
|
ret = GetFileTime(hReplacedFile, NULL, NULL, &ftReplaced);
|
||||||
ok( ret, "GetFileTime error (backup %d\n", GetLastError());
|
ok( ret, "GetFileTime error (backup %d\n", GetLastError());
|
||||||
ok(CompareFileTime(&ftReplaced, &ftReplacement) == 0,
|
ok(check_file_time(&ftReplaced, &ftReplacement, 1000000),
|
||||||
"replaced file has wrong filetime %x%08x / %x%08x\n",
|
"replaced file has wrong filetime %x%08x / %x%08x\n",
|
||||||
ftReplaced.dwHighDateTime, ftReplaced.dwLowDateTime,
|
ftReplaced.dwHighDateTime, ftReplaced.dwLowDateTime,
|
||||||
ftReplacement.dwHighDateTime, ftReplacement.dwLowDateTime );
|
ftReplacement.dwHighDateTime, ftReplacement.dwLowDateTime );
|
||||||
|
|
Loading…
Reference in New Issue