New _lcreat tests for filename ending in a slash and volume label attribute.
diff --git a/dlls/kernel/tests/file.c b/dlls/kernel/tests/file.c index 0ff985f..6e23702 100644 --- a/dlls/kernel/tests/file.c +++ b/dlls/kernel/tests/file.c
@@ -193,6 +193,8 @@ HFILE filehandle; char buffer[10000]; WIN32_FIND_DATAA search_results; + char slashname[] = "testfi/"; + HANDLE find; filehandle = _lcreat( filename, 0 ); if (filehandle == HFILE_ERROR) @@ -257,6 +259,48 @@ ok( INVALID_HANDLE_VALUE != FindFirstFileA( filename, &search_results ), "should STILL be able to find file" ); ok( DeleteFileA( filename ) != 0, "DeleteFile failed (%ld)", GetLastError( ) ); + + filehandle=_lcreat (slashname, 0); /* illegal name */ + if (HFILE_ERROR==filehandle) + ok (0, "couldn't create file \"%s\" (err=%ld)", slashname, + GetLastError ()); + else { + _lclose(filehandle); + find=FindFirstFileA (slashname, &search_results); + if (INVALID_HANDLE_VALUE==find) + ok (0, "file \"%s\" not found", slashname); + else { + ok (0!=FindClose (find), "FindClose complains (%ld)", GetLastError ()); + slashname[strlen(slashname)-1]=0; + ok (!strcmp (slashname, search_results.cFileName), + "found unexpected name \"%s\"", search_results.cFileName); + ok (FILE_ATTRIBUTE_ARCHIVE==search_results.dwFileAttributes, + "attributes of file \"%s\" are 0x%04lx", search_results.cFileName, + search_results.dwFileAttributes); + } + ok (0!=DeleteFileA (slashname), "Can't delete \"%s\" (%ld)", slashname, + GetLastError ()); + } + + filehandle=_lcreat (filename, 8); /* illegal attribute */ + if (HFILE_ERROR==filehandle) + ok (0, "couldn't create volume label \"%s\"", filename); + else { + _lclose(filehandle); + find=FindFirstFileA (filename, &search_results); + if (INVALID_HANDLE_VALUE==find) + ok (0, "file \"%s\" not found", filename); + else { + ok (0!=FindClose (find), "FindClose complains (%ld)", GetLastError ()); + ok (!strcmp (filename, search_results.cFileName), + "found unexpected name \"%s\"", search_results.cFileName); + ok (FILE_ATTRIBUTE_ARCHIVE==search_results.dwFileAttributes, + "attributes of file \"%s\" are 0x%04lx", search_results.cFileName, + search_results.dwFileAttributes); + } + ok (0!=DeleteFileA (filename), "Can't delete \"%s\" (%ld)", slashname, + GetLastError ()); + } }