summaryrefslogtreecommitdiff
path: root/src/pal/tests/palsuite/c_runtime/getenv/test1/test1.cpp
blob: 0fb9025c8f2195522cb416af2176727700bd7360 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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;
}