Thanks for the patches. The implementation looks good and it allows the Windows Search Index Analyzer to display its initial dialog. It's possible that drive_get_Path should really call GetVolumePathNameW and strip the trailing backslash, but Wine's implementation of the Drive class currently only supports letter drives, so a simpler implementation is fine for now.
I'm not sure that all the tests are necessary. If it were me, I would just do this:
```diff diff --git a/dlls/scrrun/tests/filesystem.c b/dlls/scrrun/tests/filesystem.c index e53bd092ce9..aabec74b3f9 100644 --- a/dlls/scrrun/tests/filesystem.c +++ b/dlls/scrrun/tests/filesystem.c @@ -1471,7 +1471,7 @@ static void test_DriveCollection(void) while (IEnumVARIANT_Next(enumvar, 1, &var, &fetched) == S_OK) { IDrive *drive = (IDrive*)V_DISPATCH(&var); DriveTypeConst type; - BSTR str; + BSTR str, path;
hr = IDrive_get_DriveType(drive, &type); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); @@ -1482,7 +1482,17 @@ static void test_DriveCollection(void) hr = IDrive_get_DriveLetter(drive, &str); ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); ok(SysStringLen(str) == 1, "got string %s\n", wine_dbgstr_w(str)); + + hr = IDrive_get_Path(drive, NULL); + ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); + + hr = IDrive_get_Path(drive, &path); + ok(hr == S_OK, "Unexpected hr %#lx.\n", hr); + ok(SysStringLen(path) == 2 && path[0] == str[0] && path[1] == ':', + "got string %s\n", wine_dbgstr_w(path)); + SysFreeString(str); + SysFreeString(path);
hr = IDrive_get_IsReady(drive, NULL); ok(hr == E_POINTER, "Unexpected hr %#lx.\n", hr); ```
However, when submitting tests I am often told that I have added either too few tests or too many tests, and I'm not sure what the preferred amount of tests is here.