From 4b4aad7217d3292650e77eec2cf4c198ea9c3b4b Mon Sep 17 00:00:00 2001 From: Jiyoung Yun Date: Wed, 23 Nov 2016 19:09:09 +0900 Subject: Imported Upstream version 1.1.0 --- .../tests/palsuite/c_runtime/getenv/CMakeLists.txt | 6 ++ .../palsuite/c_runtime/getenv/test1/CMakeLists.txt | 19 ++++ .../tests/palsuite/c_runtime/getenv/test1/test1.c | 78 ++++++++++++++++ .../palsuite/c_runtime/getenv/test1/testinfo.dat | 16 ++++ .../palsuite/c_runtime/getenv/test2/CMakeLists.txt | 19 ++++ .../tests/palsuite/c_runtime/getenv/test2/test2.c | 101 +++++++++++++++++++++ .../palsuite/c_runtime/getenv/test2/testinfo.dat | 14 +++ .../palsuite/c_runtime/getenv/test3/CMakeLists.txt | 19 ++++ .../tests/palsuite/c_runtime/getenv/test3/test3.c | 75 +++++++++++++++ .../palsuite/c_runtime/getenv/test3/testinfo.dat | 14 +++ 10 files changed, 361 insertions(+) create mode 100644 src/pal/tests/palsuite/c_runtime/getenv/CMakeLists.txt create mode 100644 src/pal/tests/palsuite/c_runtime/getenv/test1/CMakeLists.txt create mode 100644 src/pal/tests/palsuite/c_runtime/getenv/test1/test1.c create mode 100644 src/pal/tests/palsuite/c_runtime/getenv/test1/testinfo.dat create mode 100644 src/pal/tests/palsuite/c_runtime/getenv/test2/CMakeLists.txt create mode 100644 src/pal/tests/palsuite/c_runtime/getenv/test2/test2.c create mode 100644 src/pal/tests/palsuite/c_runtime/getenv/test2/testinfo.dat create mode 100644 src/pal/tests/palsuite/c_runtime/getenv/test3/CMakeLists.txt create mode 100644 src/pal/tests/palsuite/c_runtime/getenv/test3/test3.c create mode 100644 src/pal/tests/palsuite/c_runtime/getenv/test3/testinfo.dat (limited to 'src/pal/tests/palsuite/c_runtime/getenv') diff --git a/src/pal/tests/palsuite/c_runtime/getenv/CMakeLists.txt b/src/pal/tests/palsuite/c_runtime/getenv/CMakeLists.txt new file mode 100644 index 0000000000..1962ade358 --- /dev/null +++ b/src/pal/tests/palsuite/c_runtime/getenv/CMakeLists.txt @@ -0,0 +1,6 @@ +cmake_minimum_required(VERSION 2.8.12.2) + +add_subdirectory(test1) +add_subdirectory(test2) +add_subdirectory(test3) + diff --git a/src/pal/tests/palsuite/c_runtime/getenv/test1/CMakeLists.txt b/src/pal/tests/palsuite/c_runtime/getenv/test1/CMakeLists.txt new file mode 100644 index 0000000000..6243c032ab --- /dev/null +++ b/src/pal/tests/palsuite/c_runtime/getenv/test1/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 2.8.12.2) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(SOURCES + test1.c +) + +add_executable(paltest_getenv_test1 + ${SOURCES} +) + +add_dependencies(paltest_getenv_test1 coreclrpal) + +target_link_libraries(paltest_getenv_test1 + pthread + m + coreclrpal +) diff --git a/src/pal/tests/palsuite/c_runtime/getenv/test1/test1.c b/src/pal/tests/palsuite/c_runtime/getenv/test1/test1.c new file mode 100644 index 0000000000..0fb9025c8f --- /dev/null +++ b/src/pal/tests/palsuite/c_runtime/getenv/test1/test1.c @@ -0,0 +1,78 @@ +// 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: test1.c +** +** Purpose: Create an environment variable and then use getenv to get +** a pointer to it. Check that the pointer is valid and that the string +** is what we expected. Also check that searching for a non-existent +** variable will cause getenv to return NULL. Also check that function +** passes when the parameter has it's casing changed (e.g upper case) +** +** +**===================================================================*/ + +#include + +int __cdecl main(int argc, char **argv) +{ + + const char* SetVariable = "PalTestingEnvironmentVariable=The value"; + const char* VariableName = "PalTestingEnvironmentVariable"; + const char* VariableValue = "The value"; + char* result; + + + if (0 != (PAL_Initialize(argc, argv))) + { + return FAIL; + } + + /* Use _putenv to set an environment variable. This ensures that the + variable we're testing on is always present. + */ + + if(_putenv(SetVariable) == -1) + { + Fail("ERROR: _putenv failed to set an environment variable that " + "getenv will be using for testing.\n"); + } + + /* Call getenv -- ensure it doesn't return NULL and the string it returns + is the value we set above. + */ + + result = getenv(VariableName); + if(result == NULL) + { + Fail("ERROR: The result of getenv on a valid Environment Variable " + "was NULL, which indicates the environment varaible was not " + "found.\n"); + } + + if(strcmp(result, VariableValue) != 0) + { + Fail("ERROR: The value obtained by getenv() was not equal to the " + "correct value of the environment variable. The correct " + "value is '%s' and the function returned '%s'.\n", + VariableValue, + result); + } + + /* Try calling getenv on an environment variable which doesn't + exist. + */ + result = getenv("SomeEnvironmentVariableThatReallyDoesNotExist"); + + if(result != NULL) + { + Fail("ERROR: Called getenv on an environment variable which " + "doesn't exist and it returned '%s' instead of NULL.\n",result); + } + + PAL_Terminate(); + return PASS; +} diff --git a/src/pal/tests/palsuite/c_runtime/getenv/test1/testinfo.dat b/src/pal/tests/palsuite/c_runtime/getenv/test1/testinfo.dat new file mode 100644 index 0000000000..b9cbf71986 --- /dev/null +++ b/src/pal/tests/palsuite/c_runtime/getenv/test1/testinfo.dat @@ -0,0 +1,16 @@ +# 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 = C Runtime +Function = getenv +Name = Test retrieval of variables correctly, and failure if they don't exist +TYPE = DEFAULT +EXE1 = test1 +Description += Create an environment variable and then use getenv to get += a pointer to it. Check that the pointer is valid and that the string += is what we expected. Also check that searching for a non-existent += variable will cause getenv to return NULL. Also check that changing += the case (upper or lower) of a variable does not effect functionality. diff --git a/src/pal/tests/palsuite/c_runtime/getenv/test2/CMakeLists.txt b/src/pal/tests/palsuite/c_runtime/getenv/test2/CMakeLists.txt new file mode 100644 index 0000000000..7a301a5ca6 --- /dev/null +++ b/src/pal/tests/palsuite/c_runtime/getenv/test2/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 2.8.12.2) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(SOURCES + test2.c +) + +add_executable(paltest_getenv_test2 + ${SOURCES} +) + +add_dependencies(paltest_getenv_test2 coreclrpal) + +target_link_libraries(paltest_getenv_test2 + pthread + m + coreclrpal +) diff --git a/src/pal/tests/palsuite/c_runtime/getenv/test2/test2.c b/src/pal/tests/palsuite/c_runtime/getenv/test2/test2.c new file mode 100644 index 0000000000..26f245fcce --- /dev/null +++ b/src/pal/tests/palsuite/c_runtime/getenv/test2/test2.c @@ -0,0 +1,101 @@ +// 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: test2.c +** +** Purpose: Create environment variables that differ only in Case, and +** verify that the BSD operating system treats the variables +** differently. +** +** +**===================================================================*/ + +#include + +int __cdecl main(int argc, char **argv) +{ +#if WIN32 + + return PASS; + +#else + + const char* FirstVariable = "PalTestingEnvironmentVariable=The value"; + const char* SecondVariable = "PALTESTINGEnvironmentVariable=Different value"; + const char* FirstVarName = "PalTestingEnvironmentVariable"; + const char* SecondVarName = "PALTESTINGEnvironmentVariable"; + const char* FirstVarValue = "The value"; + const char* SecondVarValue = "Different value"; + char* result; + + + if (0 != (PAL_Initialize(argc, argv))) + { + return FAIL; + } + + /* Use _putenv to set the environment variables. This ensures that the + variables we're testing with are always present. + */ + if(_putenv(FirstVariable) != 0) + { + Fail("ERROR: _putenv failed to set an environment variable that " + "getenv will be using for testing.\n"); + } + + if(_putenv(SecondVariable) != 0) + { + Fail("ERROR: _putenv failed to set an environment variable that " + "getenv will be using for testing.\n"); + } + + + /* Call getenv -- ensure it doesn't return NULL and the string it returns + is the value we set above. Also make sure that each environment variable, + differing only by case, returns it's own value. + */ + + result = getenv(FirstVarName); + if(result == NULL) + { + Fail("ERROR: The result of getenv on a valid Environment Variable " + "was NULL, which indicates the environment varaible was not " + "found.\n"); + } + + if(strcmp(result, FirstVarValue) != 0) + { + Fail("ERROR: The value obtained by getenv() was not equal to the " + "correct value of the environment variable. The correct " + "value is '%s' and the function returned '%s'.\n", + FirstVarValue, + result); + } + + + result = getenv(SecondVarName); + if(result == NULL) + { + Fail("ERROR: The result of getenv on a valid Environment Variable " + "was NULL, which indicates the environment varaible was not " + "found.\n"); + } + + if(strcmp(result, SecondVarValue) != 0) + { + Fail("ERROR: The value obtained by getenv() was not equal to the " + "correct value of the environment variable. The correct " + "value is '%s' and the function returned '%s'.\n", + SecondVarValue, + result); + } + + + PAL_Terminate(); + return PASS; + +#endif +} diff --git a/src/pal/tests/palsuite/c_runtime/getenv/test2/testinfo.dat b/src/pal/tests/palsuite/c_runtime/getenv/test2/testinfo.dat new file mode 100644 index 0000000000..90a4ac5aff --- /dev/null +++ b/src/pal/tests/palsuite/c_runtime/getenv/test2/testinfo.dat @@ -0,0 +1,14 @@ +# 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 = C Runtime +Function = getenv +Name = Test retrieval of variables differing only by case. +TYPE = DEFAULT +EXE1 = test2 +Description += Check that environment variables differing only by their += case are interpreted as separate variables by the BSD Operationg += System. diff --git a/src/pal/tests/palsuite/c_runtime/getenv/test3/CMakeLists.txt b/src/pal/tests/palsuite/c_runtime/getenv/test3/CMakeLists.txt new file mode 100644 index 0000000000..2cbe472221 --- /dev/null +++ b/src/pal/tests/palsuite/c_runtime/getenv/test3/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 2.8.12.2) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(SOURCES + test3.c +) + +add_executable(paltest_getenv_test3 + ${SOURCES} +) + +add_dependencies(paltest_getenv_test3 coreclrpal) + +target_link_libraries(paltest_getenv_test3 + pthread + m + coreclrpal +) diff --git a/src/pal/tests/palsuite/c_runtime/getenv/test3/test3.c b/src/pal/tests/palsuite/c_runtime/getenv/test3/test3.c new file mode 100644 index 0000000000..1eefd9d40c --- /dev/null +++ b/src/pal/tests/palsuite/c_runtime/getenv/test3/test3.c @@ -0,0 +1,75 @@ +// 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: test3.c +** +** Purpose: Create an environment variable and try to retrieve +** it using the same name but with different case. This +** is to show that the Win32 representation of getenv +** is case insensitive. +** +** +**===================================================================*/ + +#include + +int __cdecl main(int argc, char **argv) +{ +#if WIN32 + + const char* FirstVariable = "PalTestingEnvironmentVariable=The value"; + const char* ModifiedName = "PALTESTINGEnvironmentVariable"; + const char* FirstVarValue = "The value"; + char* result; + + + if (0 != (PAL_Initialize(argc, argv))) + { + return FAIL; + } + + /* Use _putenv to set an environment variable. This ensures that the + variable we're testing on is always present. + */ + + if(_putenv(FirstVariable) != 0) + { + Fail("ERROR: _putenv failed to set an environment variable that " + "getenv will be using for testing.\n"); + } + + + /* Call getenv -- ensure it doesn't return NULL and the string it returns + is the value we set above. Also make sure that each environment variable, + differing only by case, doesn't affect the return value. + */ + + result = getenv(ModifiedName); + if(result == NULL) + { + Fail("ERROR: The result of getenv on a valid Environment Variable " + "was NULL, which indicates the environment varaible was not " + "found.\n"); + } + + if(strcmp(result, FirstVarValue) != 0) + { + Fail("ERROR: The value obtained by getenv() was not equal to the " + "correct value of the environment variable. The correct " + "value is '%s' and the function returned '%s'.\n", + FirstVarValue, + result); + } + + + PAL_Terminate(); + return PASS; + +#else + return PASS; + +#endif +} diff --git a/src/pal/tests/palsuite/c_runtime/getenv/test3/testinfo.dat b/src/pal/tests/palsuite/c_runtime/getenv/test3/testinfo.dat new file mode 100644 index 0000000000..6e12fc4385 --- /dev/null +++ b/src/pal/tests/palsuite/c_runtime/getenv/test3/testinfo.dat @@ -0,0 +1,14 @@ +# 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 = C Runtime +Function = getenv +Name = Test retrieval of variables differing only by case. +TYPE = DEFAULT +EXE1 = test3 +Description += Check that environment variables differing only by their += case are interpreted as the same variables in the WIN32 += platform. -- cgit v1.2.3