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/SetCurrentDirectoryA/test2/setcurrentdirectorya.c | |
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/SetCurrentDirectoryA/test2/setcurrentdirectorya.c')
-rw-r--r-- | src/pal/tests/palsuite/file_io/SetCurrentDirectoryA/test2/setcurrentdirectorya.c | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/src/pal/tests/palsuite/file_io/SetCurrentDirectoryA/test2/setcurrentdirectorya.c b/src/pal/tests/palsuite/file_io/SetCurrentDirectoryA/test2/setcurrentdirectorya.c new file mode 100644 index 0000000000..415dbbf045 --- /dev/null +++ b/src/pal/tests/palsuite/file_io/SetCurrentDirectoryA/test2/setcurrentdirectorya.c @@ -0,0 +1,142 @@ +// 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: SetCurrentDirectoryA.c (test 2) +** +** Purpose: Tests the PAL implementation of the SetCurrentDirectoryA 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_DIR+1]; + char szHomeDirBefore[_MAX_DIR+1]; + char szHomeDirAfter[_MAX_DIR+1]; + WCHAR* szwPtr = NULL; + + + if (0 != PAL_Initialize(argc,argv)) + { + return FAIL; + } + + /* create a temp directory off the current directory */ + szwPtr = convert((LPSTR)szDirName); + + if (CreateDirectoryA(szDirName, NULL) != TRUE) + { + free(szwPtr); + Fail("Unexpected error: CreateDirectoryW failed " + "with error code: %ld.\n", + GetLastError()); + } + + /* find out what the current "home" directory is */ + memset(szHomeDirBefore, 0, (_MAX_DIR+1)); + + if( 0 == GetCurrentDirectoryA((_MAX_DIR+1), szHomeDirBefore) ) + { + Trace("Unexpected error: Unable to get current directory " + "with GetCurrentDirectoryA 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_DIR+1)); +#if WIN32 + sprintf(szBuiltDir,"%s\\..\\", szDirName); +#else + sprintf(szBuiltDir,"%s/../", szDirName); +#endif + + + /* set the current directory to the temp directory */ + if (SetCurrentDirectoryA(szBuiltDir) != TRUE) + { + Trace("ERROR: Unable to set current " + "directory to %s. Failed with error code: %ld.\n", + szBuiltDir, + GetLastError()); + + if (!RemoveDirectoryW(szwPtr)) + { + Trace("SetCurrentDirectoryA: ERROR -> RemoveDirectoryW failed " + "with error code: %ld.\n", + GetLastError()); + } + free(szwPtr); + Fail(""); + } + + /* find out what the current "home" directory is */ + memset(szHomeDirAfter, 0, (_MAX_DIR+1)); + + if( 0 == GetCurrentDirectoryA((_MAX_DIR+1), szHomeDirAfter) ) + { + Trace("Unexpected error: Unable to get current directory " + "with GetCurrentDirectoryA that returned %ld\n", + GetLastError()); + + if (!RemoveDirectoryW(szwPtr)) + { + Trace("Unexpected error: RemoveDirectoryW failed " + "with error code: %ld.\n", + GetLastError()); + } + free(szwPtr); + + Fail(""); + } + + /*compare the new current dir to the compiled current dir */ + if (strncmp(szHomeDirBefore, szHomeDirAfter, strlen(szHomeDirBefore)) != 0) + { + Trace("ERROR: The set directory \"%s\" does not " + "compare to the built directory \"%s\".\n", + szHomeDirAfter, + szHomeDirBefore); + + 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; +} + + |