Module: wine Branch: master Commit: c8c00d6f4ab7adf8ca64723125c25250e2888198 URL: https://source.winehq.org/git/wine.git/?a=commit;h=c8c00d6f4ab7adf8ca6472312...
Author: Jacek Caban jacek@codeweavers.com Date: Mon Jan 27 15:40:22 2020 +0100
scrrun: Add MoveFile implementation.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/scrrun/filesystem.c | 7 ++--- dlls/scrrun/tests/filesystem.c | 62 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 4 deletions(-)
diff --git a/dlls/scrrun/filesystem.c b/dlls/scrrun/filesystem.c index 5893435af7..d537239b3a 100644 --- a/dlls/scrrun/filesystem.c +++ b/dlls/scrrun/filesystem.c @@ -3638,12 +3638,11 @@ static HRESULT WINAPI filesys_DeleteFolder(IFileSystem3 *iface, BSTR FolderSpec, return delete_folder(FolderSpec, SysStringLen(FolderSpec), Force); }
-static HRESULT WINAPI filesys_MoveFile(IFileSystem3 *iface, BSTR Source, - BSTR Destination) +static HRESULT WINAPI filesys_MoveFile(IFileSystem3 *iface, BSTR source, BSTR destination) { - FIXME("%p %s %s\n", iface, debugstr_w(Source), debugstr_w(Destination)); + TRACE("%p %s %s\n", iface, debugstr_w(source), debugstr_w(destination));
- return E_NOTIMPL; + return MoveFileW(source, destination) ? S_OK : create_error(GetLastError()); }
static HRESULT WINAPI filesys_MoveFolder(IFileSystem3 *iface,BSTR Source, diff --git a/dlls/scrrun/tests/filesystem.c b/dlls/scrrun/tests/filesystem.c index 68ac70ce3a..c96f704ca7 100644 --- a/dlls/scrrun/tests/filesystem.c +++ b/dlls/scrrun/tests/filesystem.c @@ -2467,6 +2467,67 @@ static void test_GetSpecialFolder(void) IFolder_Release(folder); }
+static void test_MoveFile(void) +{ + ITextStream *stream; + BSTR str, src, dst; + HRESULT hr; + + str = SysAllocString(L"test.txt"); + hr = IFileSystem3_CreateTextFile(fs3, str, VARIANT_FALSE, VARIANT_FALSE, &stream); + ok(hr == S_OK, "got 0x%08x\n", hr); + SysFreeString(str); + + str = SysAllocString(L"test"); + hr = ITextStream_Write(stream, str); + ok(hr == S_OK, "Write failed: %08x\n", hr); + SysFreeString(str); + + ITextStream_Release(stream); + + str = SysAllocString(L"test2.txt"); + hr = IFileSystem3_CreateTextFile(fs3, str, VARIANT_FALSE, VARIANT_FALSE, &stream); + ok(hr == S_OK, "got 0x%08x\n", hr); + SysFreeString(str); + ITextStream_Release(stream); + + src = SysAllocString(L"test.txt"); + dst = SysAllocString(L"test3.txt"); + hr = IFileSystem3_MoveFile(fs3, src, dst); + ok(hr == S_OK, "got 0x%08x\n", hr); + SysFreeString(src); + SysFreeString(dst); + + str = SysAllocString(L"test.txt"); + hr = IFileSystem3_DeleteFile(fs3, str, VARIANT_TRUE); + ok(hr == CTL_E_FILENOTFOUND, "DeleteFile returned %x, expected CTL_E_FILENOTFOUND\n", hr); + SysFreeString(str); + + src = SysAllocString(L"test3.txt"); + dst = SysAllocString(L"test2.txt"); /* already exists */ + hr = IFileSystem3_MoveFile(fs3, src, dst); + ok(hr == CTL_E_FILEALREADYEXISTS, "got 0x%08x, expected CTL_E_FILEALREADYEXISTS\n", hr); + SysFreeString(src); + SysFreeString(dst); + + src = SysAllocString(L"nonexistent.txt"); + dst = SysAllocString(L"test4.txt"); + hr = IFileSystem3_MoveFile(fs3, src, dst); + ok(hr == CTL_E_FILENOTFOUND, "got 0x%08x, expected CTL_E_FILENOTFOUND\n", hr); + SysFreeString(src); + SysFreeString(dst); + + str = SysAllocString(L"test3.txt"); + hr = IFileSystem3_DeleteFile(fs3, str, VARIANT_TRUE); + ok(hr == S_OK, "got 0x%08x\n", hr); + SysFreeString(str); + + str = SysAllocString(L"test2.txt"); + hr = IFileSystem3_DeleteFile(fs3, str, VARIANT_TRUE); + ok(hr == S_OK, "got 0x%08x\n", hr); + SysFreeString(str); +} + START_TEST(filesystem) { HRESULT hr; @@ -2506,6 +2567,7 @@ START_TEST(filesystem) test_SerialNumber(); test_GetExtensionName(); test_GetSpecialFolder(); + test_MoveFile();
IFileSystem3_Release(fs3);