From 202e71769e82b3b3a537d5a0a61bb8c82cc47e71 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Sat, 30 Nov 2013 14:47:19 +0400 Subject: [PATCH] qmgr/tests: Fixed some test failures on older windows versions. --- dlls/qmgr/tests/enum_files.c | 43 ++++++++++++++++++++++++++- dlls/qmgr/tests/file.c | 56 ++++++++++++++++++++++-------------- 2 files changed, 77 insertions(+), 22 deletions(-) diff --git a/dlls/qmgr/tests/enum_files.c b/dlls/qmgr/tests/enum_files.c index 7e2ab1e8e3c..0b059209e63 100644 --- a/dlls/qmgr/tests/enum_files.c +++ b/dlls/qmgr/tests/enum_files.c @@ -56,7 +56,40 @@ static HRESULT addFileHelper(IBackgroundCopyJob* job, urlSize = MAX_PATH; UrlCreateFromPathW(remoteFile, remoteUrl, &urlSize, 0); UrlUnescapeW(remoteUrl, NULL, &urlSize, URL_UNESCAPE_INPLACE); - return IBackgroundCopyJob_AddFile(test_job, remoteUrl, localFile); + return IBackgroundCopyJob_AddFile(job, remoteUrl, localFile); +} + +static HRESULT test_create_manager(void) +{ + HRESULT hres; + IBackgroundCopyManager *manager = NULL; + + /* Creating BITS instance */ + hres = CoCreateInstance(&CLSID_BackgroundCopyManager, NULL, CLSCTX_LOCAL_SERVER, + &IID_IBackgroundCopyManager, (void **) &manager); + + if(hres == HRESULT_FROM_WIN32(ERROR_SERVICE_DISABLED)) { + win_skip("Needed Service is disabled\n"); + return hres; + } + + if (hres == S_OK) + { + IBackgroundCopyJob *job; + GUID jobId; + + hres = IBackgroundCopyManager_CreateJob(manager, test_displayName, BG_JOB_TYPE_DOWNLOAD, &jobId, &job); + if (hres == S_OK) + { + hres = addFileHelper(job, test_localNameA, test_remoteNameA); + if (hres != S_OK) + win_skip("AddFile() with file:// protocol failed. Tests will be skipped.\n"); + IBackgroundCopyJob_Release(job); + } + IBackgroundCopyManager_Release(manager); + } + + return hres; } /* Generic test setup */ @@ -251,6 +284,14 @@ START_TEST(enum_files) int i; CoInitialize(NULL); + + if (FAILED(test_create_manager())) + { + CoUninitialize(); + win_skip("Failed to create Manager instance, skipping tests\n"); + return; + } + for (test = tests, i = 0; *test; ++test, ++i) { /* Keep state separate between tests. */ diff --git a/dlls/qmgr/tests/file.c b/dlls/qmgr/tests/file.c index f14ad3a8108..afe4b53aead 100644 --- a/dlls/qmgr/tests/file.c +++ b/dlls/qmgr/tests/file.c @@ -40,26 +40,6 @@ static IBackgroundCopyManager *test_manager; static IEnumBackgroundCopyFiles *test_enumFiles; static IBackgroundCopyFile *test_file; -static HRESULT test_create_manager(void) -{ - HRESULT hres; - IBackgroundCopyManager *manager = NULL; - - /* Creating BITS instance */ - hres = CoCreateInstance(&CLSID_BackgroundCopyManager, NULL, CLSCTX_LOCAL_SERVER, - &IID_IBackgroundCopyManager, (void **) &manager); - - if(hres == HRESULT_FROM_WIN32(ERROR_SERVICE_DISABLED)) { - win_skip("Needed Service is disabled\n"); - return hres; - } - - if (hres == S_OK) - IBackgroundCopyManager_Release(manager); - - return hres; -} - /* Helper function to add a file to a job. The helper function takes base file name and creates properly formed path and URL strings for creation of the file. */ @@ -75,7 +55,41 @@ static HRESULT addFileHelper(IBackgroundCopyJob* job, urlSize = MAX_PATH; UrlCreateFromPathW(test_remoteUrl, test_remoteUrl, &urlSize, 0); UrlUnescapeW(test_remoteUrl, NULL, &urlSize, URL_UNESCAPE_INPLACE); - return IBackgroundCopyJob_AddFile(test_job, test_remoteUrl, test_localFile); + + return IBackgroundCopyJob_AddFile(job, test_remoteUrl, test_localFile); +} + +static HRESULT test_create_manager(void) +{ + HRESULT hres; + IBackgroundCopyManager *manager = NULL; + + /* Creating BITS instance */ + hres = CoCreateInstance(&CLSID_BackgroundCopyManager, NULL, CLSCTX_LOCAL_SERVER, + &IID_IBackgroundCopyManager, (void **) &manager); + + if(hres == HRESULT_FROM_WIN32(ERROR_SERVICE_DISABLED)) { + win_skip("Needed Service is disabled\n"); + return hres; + } + + if (hres == S_OK) + { + IBackgroundCopyJob *job; + GUID jobId; + + hres = IBackgroundCopyManager_CreateJob(manager, test_displayName, BG_JOB_TYPE_DOWNLOAD, &jobId, &job); + if (hres == S_OK) + { + hres = addFileHelper(job, test_localName, test_remoteName); + if (hres != S_OK) + win_skip("AddFile() with file:// protocol failed. Tests will be skipped.\n"); + IBackgroundCopyJob_Release(job); + } + IBackgroundCopyManager_Release(manager); + } + + return hres; } /* Generic test setup */