summaryrefslogtreecommitdiff
path: root/src/pal/tests/palsuite/c_runtime/getenv
diff options
context:
space:
mode:
authorJiyoung Yun <jy910.yun@samsung.com>2016-11-23 19:09:09 +0900
committerJiyoung Yun <jy910.yun@samsung.com>2016-11-23 19:09:09 +0900
commit4b4aad7217d3292650e77eec2cf4c198ea9c3b4b (patch)
tree98110734c91668dfdbb126fcc0e15ddbd93738ca /src/pal/tests/palsuite/c_runtime/getenv
parentfa45f57ed55137c75ac870356a1b8f76c84b229c (diff)
downloadcoreclr-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/c_runtime/getenv')
-rw-r--r--src/pal/tests/palsuite/c_runtime/getenv/CMakeLists.txt6
-rw-r--r--src/pal/tests/palsuite/c_runtime/getenv/test1/CMakeLists.txt19
-rw-r--r--src/pal/tests/palsuite/c_runtime/getenv/test1/test1.c78
-rw-r--r--src/pal/tests/palsuite/c_runtime/getenv/test1/testinfo.dat16
-rw-r--r--src/pal/tests/palsuite/c_runtime/getenv/test2/CMakeLists.txt19
-rw-r--r--src/pal/tests/palsuite/c_runtime/getenv/test2/test2.c101
-rw-r--r--src/pal/tests/palsuite/c_runtime/getenv/test2/testinfo.dat14
-rw-r--r--src/pal/tests/palsuite/c_runtime/getenv/test3/CMakeLists.txt19
-rw-r--r--src/pal/tests/palsuite/c_runtime/getenv/test3/test3.c75
-rw-r--r--src/pal/tests/palsuite/c_runtime/getenv/test3/testinfo.dat14
10 files changed, 361 insertions, 0 deletions
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 <palsuite.h>
+
+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 <palsuite.h>
+
+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 <palsuite.h>
+
+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.