diff options
author | Jiyoung Yun <jy910.yun@samsung.com> | 2016-11-23 19:09:09 +0900 |
---|---|---|
committer | Jiyoung Yun <jy910.yun@samsung.com> | 2016-11-23 19:09:09 +0900 |
commit | 4b4aad7217d3292650e77eec2cf4c198ea9c3b4b (patch) | |
tree | 98110734c91668dfdbb126fcc0e15ddbd93738ca /src/pal/tests/palsuite/file_io/SetCurrentDirectoryW/test2 | |
parent | fa45f57ed55137c75ac870356a1b8f76c84b229c (diff) | |
download | coreclr-4b4aad7217d3292650e77eec2cf4c198ea9c3b4b.tar.gz coreclr-4b4aad7217d3292650e77eec2cf4c198ea9c3b4b.tar.bz2 coreclr-4b4aad7217d3292650e77eec2cf4c198ea9c3b4b.zip |
Imported Upstream version 1.1.0upstream/1.1.0
Diffstat (limited to 'src/pal/tests/palsuite/file_io/SetCurrentDirectoryW/test2')
3 files changed, 178 insertions, 0 deletions
diff --git a/src/pal/tests/palsuite/file_io/SetCurrentDirectoryW/test2/CMakeLists.txt b/src/pal/tests/palsuite/file_io/SetCurrentDirectoryW/test2/CMakeLists.txt new file mode 100644 index 0000000000..a032462d19 --- /dev/null +++ b/src/pal/tests/palsuite/file_io/SetCurrentDirectoryW/test2/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 2.8.12.2) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(SOURCES + setcurrentdirectoryw.c +) + +add_executable(paltest_setcurrentdirectoryw_test2 + ${SOURCES} +) + +add_dependencies(paltest_setcurrentdirectoryw_test2 coreclrpal) + +target_link_libraries(paltest_setcurrentdirectoryw_test2 + pthread + m + coreclrpal +) diff --git a/src/pal/tests/palsuite/file_io/SetCurrentDirectoryW/test2/setcurrentdirectoryw.c b/src/pal/tests/palsuite/file_io/SetCurrentDirectoryW/test2/setcurrentdirectoryw.c new file mode 100644 index 0000000000..7e3d7b785f --- /dev/null +++ b/src/pal/tests/palsuite/file_io/SetCurrentDirectoryW/test2/setcurrentdirectoryw.c @@ -0,0 +1,147 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +/*===================================================================== +** +** Source: SetCurrentDirectoryW.c (test 2) +** +** Purpose: Tests the PAL implementation of the SetCurrentDirectoryW function +** by setting the current directory with ../ +** +** +**===================================================================*/ + +#include <palsuite.h> + +int __cdecl main(int argc, char *argv[]) +{ + const char szDirName[MAX_PATH] = "testing"; + char szBuiltDir[MAX_PATH]; + WCHAR* szwBuiltDir = NULL; + WCHAR szwHomeDirBefore[MAX_PATH]; + WCHAR szwHomeDirAfter[MAX_PATH]; + WCHAR* szwPtr = NULL; + + + if (0 != PAL_Initialize(argc,argv)) + { + return FAIL; + } + + /* create a temp directory off the current directory */ + szwPtr = convert((LPSTR)szDirName); + + if (CreateDirectoryW(szwPtr, NULL) != TRUE) + { + free(szwPtr); + Fail("Unexpected error: CreateDirectoryW failed " + "with error code: %ld.\n", + GetLastError()); + } + + /* find out what the current "home" directory is */ + memset(szwHomeDirBefore, 0, MAX_PATH * sizeof(WCHAR)); + + if( 0 == GetCurrentDirectoryW(MAX_PATH, szwHomeDirBefore) ) + { + Trace("Unexpected error: Unable to get current directory " + "with GetCurrentDirectoryW that returned %ld\n", + GetLastError()); + + if (!RemoveDirectoryW(szwPtr)) + { + Trace("Unexpected error: RemoveDirectoryW failed " + "with error code: %ld.\n", + GetLastError()); + } + free(szwPtr); + + Fail(""); + } + + /* append the temp name to the "home" directory */ + memset(szBuiltDir, 0, MAX_PATH); +#if WIN32 + sprintf(szBuiltDir,"%s\\..\\", szDirName); +#else + sprintf(szBuiltDir,"%s/../", szDirName); +#endif + + szwBuiltDir = convert(szBuiltDir); + + /* set the current directory to the temp directory */ + if (SetCurrentDirectoryW(szwBuiltDir) != TRUE) + { + Trace("ERROR: Unable to set current " + "directory to %S. Failed with error code: %ld.\n", + szwBuiltDir, + GetLastError()); + + if (!RemoveDirectoryW(szwPtr)) + { + Trace("Unexpected error: RemoveDirectoryW failed " + "with error code: %ld.\n", + GetLastError()); + } + free(szwPtr); + free(szwBuiltDir); + Fail(""); + } + + free(szwBuiltDir); + + /* find out what the current "home" directory is */ + memset(szwHomeDirAfter, 0, MAX_PATH * sizeof(WCHAR)); + + if( 0 == GetCurrentDirectoryW(MAX_PATH, szwHomeDirAfter) ) + { + Trace("Unexpected error: Unable to get current directory " + "with GetCurrentDirectoryW that returned %ld\n", + GetLastError()); + + if (!RemoveDirectoryW(szwPtr)) + { + Trace("ERROR: RemoveDirectoryW failed " + "with error code: %ld.\n", + GetLastError()); + } + free(szwPtr); + + Fail(""); + } + + /*compare the new current dir to the compiled current dir */ + if (wcsncmp(szwHomeDirBefore, szwHomeDirAfter, wcslen(szwHomeDirBefore)) != 0) + { + Trace("ERROR:The set directory \"%S\" does not " + "compare to the built directory \"%S\".\n", + szwHomeDirAfter, + szwHomeDirBefore); + + if (!RemoveDirectoryW(szwPtr)) + { + Trace("Unexpected error: RemoveDirectoryW failed " + "with error code: %ld.\n", + GetLastError()); + } + free(szwPtr); + Fail(""); + } + + /* clean up */ + if (!RemoveDirectoryW(szwPtr)) + { + free(szwPtr); + Fail("Unexpected error: RemoveDirectoryW failed " + "with error code: %ld.\n", + GetLastError()); + } + + free(szwPtr); + PAL_Terminate(); + + return PASS; +} + + diff --git a/src/pal/tests/palsuite/file_io/SetCurrentDirectoryW/test2/testinfo.dat b/src/pal/tests/palsuite/file_io/SetCurrentDirectoryW/test2/testinfo.dat new file mode 100644 index 0000000000..a739688d4d --- /dev/null +++ b/src/pal/tests/palsuite/file_io/SetCurrentDirectoryW/test2/testinfo.dat @@ -0,0 +1,12 @@ +# Licensed to the .NET Foundation under one or more agreements. +# The .NET Foundation licenses this file to you under the MIT license. +# See the LICENSE file in the project root for more information. + +Version = 1.0 +Section = file_io +Function = SetCurrentDirectoryW +Name = Positive test for SetCurrentDirectoryW (test 2) +Type = DEFAULT +EXE1 = setcurrentdirectoryw +Description += Set the current directory with ../ and verify the results. |