Module: wine Branch: master Commit: e65195f874d98efbc9183da07ad1d492c944e1f5 URL: http://source.winehq.org/git/wine.git/?a=commit;h=e65195f874d98efbc9183da07a...
Author: Mike Ruprecht cmaiku@gmail.com Date: Mon Dec 22 04:38:46 2008 -0600
wininet/tests: Add test for FtpFindFirstFile.
---
dlls/wininet/tests/ftp.c | 85 +++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 84 insertions(+), 1 deletions(-)
diff --git a/dlls/wininet/tests/ftp.c b/dlls/wininet/tests/ftp.c index f7dc9c9..a785fa9 100644 --- a/dlls/wininet/tests/ftp.c +++ b/dlls/wininet/tests/ftp.c @@ -25,7 +25,6 @@ * TODO: * Add W-function tests. * Add missing function tests: - * FtpFindFirstFile * FtpGetFileSize * FtpSetCurrentDirectory */ @@ -723,6 +722,89 @@ static void test_command(HINTERNET hFtp, HINTERNET hConnect) } }
+static void test_find_first_file(HINTERNET hFtp, HINTERNET hConnect) +{ + WIN32_FIND_DATA findData; + HINTERNET hSearch; + HINTERNET hSearch2; + HINTERNET hOpenFile; + + /* NULL as the search file ought to return the first file in the directory */ + SetLastError(0xdeadbeef); + hSearch = FtpFindFirstFileA(hFtp, NULL, &findData, 0, 0); + ok ( hSearch != NULL, "Expected FtpFindFirstFileA to pass\n" ); + + /* This should fail as the previous handle wasn't closed */ + SetLastError(0xdeadbeef); + hSearch2 = FtpFindFirstFileA(hFtp, "welcome.msg", &findData, 0, 0); + todo_wine ok ( hSearch2 == NULL, "Expected FtpFindFirstFileA to fail\n" ); + todo_wine ok ( GetLastError() == ERROR_FTP_TRANSFER_IN_PROGRESS, + "Expected ERROR_FTP_TRANSFER_IN_PROGRESS, got %d\n", GetLastError() ); + InternetCloseHandle(hSearch2); /* Just in case */ + + InternetCloseHandle(hSearch); + + /* Try a valid filename in a subdirectory search */ + SetLastError(0xdeadbeef); + hSearch = FtpFindFirstFileA(hFtp, "pub/wine", &findData, 0, 0); + todo_wine ok ( hSearch != NULL, "Expected FtpFindFirstFileA to pass\n" ); + InternetCloseHandle(hSearch); + + /* Try a valid filename in a subdirectory wildcard search */ + SetLastError(0xdeadbeef); + hSearch = FtpFindFirstFileA(hFtp, "pub/w*", &findData, 0, 0); + todo_wine ok ( hSearch != NULL, "Expected FtpFindFirstFileA to pass\n" ); + InternetCloseHandle(hSearch); + + /* Try an invalid wildcard search */ + SetLastError(0xdeadbeef); + hSearch = FtpFindFirstFileA(hFtp, "*/w*", &findData, 0, 0); + ok ( hSearch == NULL, "Expected FtpFindFirstFileA to fail\n" ); + InternetCloseHandle(hSearch); /* Just in case */ + + /* Try FindFirstFile between FtpOpenFile and InternetCloseHandle */ + SetLastError(0xdeadbeef); + hOpenFile = FtpOpenFileA(hFtp, "welcome.msg", GENERIC_READ, FTP_TRANSFER_TYPE_ASCII, 0); + ok ( hOpenFile != NULL, "Expected FtpOpenFileA to succeed\n" ); + ok ( GetLastError() == ERROR_SUCCESS || + broken(GetLastError() == ERROR_FILE_NOT_FOUND), /* Win98 */ + "Expected ERROR_SUCCESS, got %u\n", GetLastError() ); + + /* This should fail as the OpenFile handle wasn't closed */ + SetLastError(0xdeadbeef); + hSearch = FtpFindFirstFileA(hFtp, "welcome.msg", &findData, 0, 0); + ok ( hSearch == NULL, "Expected FtpFindFirstFileA to fail\n" ); + ok ( GetLastError() == ERROR_FTP_TRANSFER_IN_PROGRESS, + "Expected ERROR_FTP_TRANSFER_IN_PROGRESS, got %d\n", GetLastError() ); + InternetCloseHandle(hSearch); /* Just in case */ + + InternetCloseHandle(hOpenFile); + + /* Test using a nonexistent filename */ + SetLastError(0xdeadbeef); + hSearch = FtpFindFirstFileA(hFtp, "this_file_should_not_exist", &findData, 0, 0); + ok ( hSearch == NULL, "Expected FtpFindFirstFileA to fail\n" ); + todo_wine ok ( GetLastError() == ERROR_INTERNET_EXTENDED_ERROR, + "Expected ERROR_INTERNET_EXTENDED_ERROR, got %d\n", GetLastError() ); + InternetCloseHandle(hSearch); /* Just in case */ + + /* Test using a nonexistent filename and a wildcard */ + SetLastError(0xdeadbeef); + hSearch = FtpFindFirstFileA(hFtp, "this_file_should_not_exist*", &findData, 0, 0); + ok ( hSearch == NULL, "Expected FtpFindFirstFileA to fail\n" ); + todo_wine ok ( GetLastError() == ERROR_NO_MORE_FILES, + "Expected ERROR_NO_MORE_FILES, got %d\n", GetLastError() ); + InternetCloseHandle(hSearch); /* Just in case */ + + /* Test using an invalid handle type */ + SetLastError(0xdeadbeef); + hSearch = FtpFindFirstFileA(hConnect, "welcome.msg", &findData, 0, 0); + ok ( hSearch == NULL, "Expected FtpFindFirstFileA to fail\n" ); + ok ( GetLastError() == ERROR_INTERNET_INCORRECT_HANDLE_TYPE, + "Expected ERROR_INTERNET_INCORRECT_HANDLE_TYPE, got %d\n", GetLastError() ); + InternetCloseHandle(hSearch); /* Just in case */ +} + static void test_get_current_dir(HINTERNET hFtp, HINTERNET hConnect) { BOOL bRet; @@ -853,6 +935,7 @@ START_TEST(ftp) test_removedir(hFtp, hHttp); test_renamefile(hFtp, hHttp); test_command(hFtp, hHttp); + test_find_first_file(hFtp, hHttp); test_get_current_dir(hFtp, hHttp);
InternetCloseHandle(hHttp);