50 static const WCHAR szFusion[] = {
'f',
'u',
's',
'i',
'o',
'n',
'.',
'd',
'l',
'l',0};
55 win_skip(
"mscoree.dll not available\n");
60 if (!pLoadLibraryShim)
62 win_skip(
"LoadLibraryShim not available\n");
67 hr = pLoadLibraryShim(szFusion,
NULL,
NULL, &hfusion);
70 win_skip(
"fusion.dll not available\n");
75 pCreateAssemblyEnum = (
void *)
GetProcAddress(hfusion,
"CreateAssemblyEnum");
76 pCreateAssemblyNameObject = (
void *)
GetProcAddress(hfusion,
"CreateAssemblyNameObject");
79 if (!pCreateAssemblyEnum ||
80 !pCreateAssemblyNameObject || !pGetCachePath)
82 win_skip(
"fusion.dll not implemented\n");
113 new_path[
len - 1] = 0;
129 if(!(slash =
strrchr(new_path,
'\\')))
135 len = slash - new_path;
143 new_path[
len] =
'\\';
181 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
182 ok(asmname !=
NULL,
"Expected non-NULL asmname\n");
195 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
196 ok(asmenum !=
NULL,
"Expected non-NULL asmenum\n");
198 IAssemblyEnum_Release(asmenum);
205 "Expected asmenum to be unchanged, got %p\n", asmenum);
212 "Expected asmenum to be unchanged, got %p\n", asmenum);
214 IAssemblyName_Release(asmname);
225 static const char format[] =
"%s, Version=%s, Culture=%s, PublicKeyToken=%s";
241 if (!
strcmp(ffd.cFileName,
".") || !
strcmp(ffd.cFileName,
".."))
continue;
252 if (!(
ptr =
strchr(ffd.cFileName,
'_')))
continue;
288 if (!
strcmp(ffd.cFileName,
".") || !
strcmp(ffd.cFileName,
".."))
continue;
311 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
330 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
331 ok(asmenum !=
NULL,
"Expected non-NULL asmenum\n");
333 while (IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0) ==
S_OK)
354 ok(found,
"Extra assembly enumerated: %s\n", disp);
355 IAssemblyName_Release(
next);
360 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
363 "Expected next to be unchanged, got %p\n",
next);
369 ok(
FALSE,
"Assembly not enumerated: %s\n", asmname->
data);
375 IAssemblyEnum_Release(asmenum);
391 lstrcpyA(
exp[0],
"wine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16a3fcd171e93a8d");
392 lstrcpyA(
exp[1],
"wine, Version=1.0.1.2, Culture=neutral, PublicKeyToken=123456789abcdef0");
393 lstrcpyA(
exp[2],
"wine, Version=1.0.1.2, Culture=neutral, PublicKeyToken=16a3fcd171e93a8d");
394 lstrcpyA(
exp[3],
"Wine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=16a3fcd171e93a8d");
395 lstrcpyA(
exp[4],
"Wine, Version=1.0.1.2, Culture=neutral, PublicKeyToken=123456789abcdef0");
396 lstrcpyA(
exp[5],
"Wine, Version=1.0.1.2, Culture=neutral, PublicKeyToken=16a3fcd171e93a8d");
400 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
408 sprintf(
path,
"%s\\Wine\\1.0.0.0__16a3fcd171e93a8d", gac);
414 win_skip(
"Failed to open file %s, skipping name enumeration tests\n",
path);
418 sprintf(
path,
"%s\\Wine\\1.0.1.2__16a3fcd171e93a8d", gac);
424 win_skip(
"Failed to open file %s, skipping name enumeration tests\n",
path);
428 sprintf(
path,
"%s\\Wine\\1.0.1.2__123456789abcdef0", gac);
434 win_skip(
"Failed to open file %s, skipping name enumeration tests\n",
path);
442 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
443 ok(asmname !=
NULL,
"Expected non-NULL asmname\n");
447 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
448 ok(asmenum !=
NULL,
"Expected non-NULL asmenum\n");
451 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
452 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
458 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
460 "Expected \"%s\" or \"%s\", got \"%s\"\n",
exp[0],
exp[1], disp);
462 IAssemblyName_Release(
next);
465 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
466 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
472 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
475 "Expected \"%s\" or \"%s\", got \"%s\"\n",
exp[1],
exp[2], disp);
477 IAssemblyName_Release(
next);
480 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
481 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
487 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
490 "Expected \"%s\" or \"%s\", got \"%s\"\n",
exp[2],
exp[1], disp);
492 IAssemblyName_Release(
next);
495 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
498 "Expected next to be unchanged, got %p\n",
next);
500 IAssemblyEnum_Release(asmenum);
501 IAssemblyName_Release(asmname);
507 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
508 ok(asmname !=
NULL,
"Expected non-NULL asmname\n");
512 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
513 ok(asmenum !=
NULL,
"Expected non-NULL asmenum\n");
516 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
517 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
523 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
526 "Expected \"%s\" or \"%s\", got \"%s\"\n",
exp[4],
exp[5], disp);
528 IAssemblyName_Release(
next);
531 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
532 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
538 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
541 "Expected \"%s\" or \"%s\", got \"%s\"\n",
exp[5],
exp[4], disp);
543 IAssemblyName_Release(
next);
546 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
549 "Expected next to be unchanged, got %p\n",
next);
551 IAssemblyEnum_Release(asmenum);
552 IAssemblyName_Release(asmname);
555 to_widechar(namestr,
"Wine, PublicKeyToken=16a3fcd171e93a8d");
558 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
559 ok(asmname !=
NULL,
"Expected non-NULL asmname\n");
563 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
564 ok(asmenum !=
NULL,
"Expected non-NULL asmenum\n");
567 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
568 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
574 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
577 IAssemblyName_Release(
next);
580 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
581 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
587 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
590 IAssemblyName_Release(
next);
593 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
596 "Expected next to be unchanged, got %p\n",
next);
598 IAssemblyEnum_Release(asmenum);
599 IAssemblyName_Release(asmname);
605 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
606 ok(asmname !=
NULL,
"Expected non-NULL asmname\n");
610 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
611 ok(asmenum !=
NULL,
"Expected non-NULL asmenum\n");
614 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
615 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
621 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
624 IAssemblyName_Release(
next);
627 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
628 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
634 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
637 "Expected \"%s\" or \"%s\", got \"%s\"\n",
exp[1],
exp[2], disp);
639 IAssemblyName_Release(
next);
642 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
643 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
649 ok(
hr ==
S_OK,
"Expected S_OK, got %08x\n",
hr);
652 "Expected \"%s\" or \"%s\", got \"%s\"\n",
exp[2],
exp[1], disp);
654 IAssemblyName_Release(
next);
657 hr = IAssemblyEnum_GetNextAssembly(asmenum,
NULL, &
next, 0);
660 "Expected next to be unchanged, got %p\n",
next);
662 IAssemblyEnum_Release(asmenum);
663 IAssemblyName_Release(asmname);
666 sprintf(
path,
"%s\\Wine\\1.0.0.0__16a3fcd171e93a8d\\Wine.dll", gac);
668 sprintf(
path,
"%s\\Wine\\1.0.1.2__16a3fcd171e93a8d\\Wine.dll", gac);
670 sprintf(
path,
"%s\\Wine\\1.0.1.2__123456789abcdef0\\Wine.dll", gac);
672 sprintf(
path,
"%s\\Wine\\1.0.0.0__16a3fcd171e93a8d", gac);
674 sprintf(
path,
"%s\\Wine\\1.0.1.2__16a3fcd171e93a8d", gac);
676 sprintf(
path,
"%s\\Wine\\1.0.1.2__123456789abcdef0", gac);
int strcmp(const char *String1, const char *String2)
ACPI_SIZE strlen(const char *String)
char * strchr(const char *String, int ch)
static void list_remove(struct list_entry *entry)
static void list_add_tail(struct list_entry *head, struct list_entry *entry)
static const WCHAR szDllName[]
#define GetProcAddress(x, y)
#define INVALID_HANDLE_VALUE
#define CreateFileA(a, b, c, d, e, f, g)
#define HeapFree(x, y, z)
#define WideCharToMultiByte
#define MultiByteToWideChar
static const WCHAR culture[]
BOOL WINAPI DeleteFileA(IN LPCSTR lpFileName)
BOOL WINAPI RemoveDirectoryA(IN LPCSTR lpPathName)
BOOL WINAPI CreateDirectoryA(IN LPCSTR lpPathName, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes)
BOOL WINAPI SetEndOfFile(HANDLE hFile)
DWORD WINAPI GetFileAttributesA(LPCSTR lpFileName)
HANDLE WINAPI FindFirstFileA(IN LPCSTR lpFileName, OUT LPWIN32_FIND_DATAA lpFindFileData)
BOOL WINAPI FindClose(HANDLE hFindFile)
BOOL WINAPI FindNextFileA(IN HANDLE hFindFile, OUT LPWIN32_FIND_DATAA lpFindFileData)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
int WINAPI lstrcmpA(LPCSTR str1, LPCSTR str2)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
GLenum GLuint GLenum GLsizei const GLchar * buf
LPSTR WINAPI lstrcpyA(LPSTR lpString1, LPCSTR lpString2)
LPSTR WINAPI lstrcatA(LPSTR lpString1, LPCSTR lpString2)
int WINAPI lstrlenA(LPCSTR lpString)
#define ERROR_ALREADY_EXISTS
#define sprintf(buf, format,...)
static LPCSTR DWORD void * pvReserved
static unsigned __int64 next
#define offsetof(TYPE, MEMBER)
_Check_return_ _CRTIMP _CONST_RETURN char *__cdecl strrchr(_In_z_ const char *_Str, _In_ int _Ch)
#define LIST_FOR_EACH_SAFE(cursor, cursor2, list)
#define INVALID_FILE_ATTRIBUTES
DWORD WINAPI GetLastError(void)
#define ERROR_PATH_NOT_FOUND
@ CANOF_PARSE_DISPLAY_NAME