From 1e54436f69b25bb3b2443701f1cc9fe23d3c8945 Mon Sep 17 00:00:00 2001 From: "Stanislav N. aka pztrn" Date: Wed, 18 Sep 2019 00:36:30 +0500 Subject: [PATCH] Do not add passed top level structure name to environment variables. --- parse_env_test.go | 46 +++++++++++++++++++++++----------------------- sec.go | 5 +++-- sec_test.go | 32 ++++++++++++++++---------------- 3 files changed, 42 insertions(+), 41 deletions(-) diff --git a/parse_env_test.go b/parse_env_test.go index 84b8155..847bb7b 100644 --- a/parse_env_test.go +++ b/parse_env_test.go @@ -15,7 +15,7 @@ func TestParseString(t *testing.T) { StringData string } - os.Setenv("TESTSTRUCT_STRINGDATA", "test") + os.Setenv("STRINGDATA", "test") s := &testStruct{} err := Parse(s, nil) @@ -51,7 +51,7 @@ func TestParseBoolean(t *testing.T) { for _, testCase := range testCases { t.Logf("Testing: %+v", testCase) - os.Setenv("TESTSTRUCT_BOOLDATA", testCase.TestData) + os.Setenv("BOOLDATA", testCase.TestData) // If ErrorsAreCritical == false, then we should check only // equality of parsed data and valid data. @@ -82,7 +82,7 @@ func TestParseBoolean(t *testing.T) { require.Equal(t, errNotBool, err1) } - os.Unsetenv("TESTSTRUCT_BOOLDATA") + os.Unsetenv("BOOLDATA") } } @@ -107,7 +107,7 @@ func TestParseInt8(t *testing.T) { for _, testCase := range testCases { t.Logf("Testing: %+v", testCase) - os.Setenv("TESTSTRUCT_INTDATA", testCase.TestData) + os.Setenv("INTDATA", testCase.TestData) // If ErrorsAreCritical == false, then we should check only // equality of parsed data and valid data. @@ -148,7 +148,7 @@ func TestParseInt8(t *testing.T) { } } - os.Unsetenv("TESTSTRUCT_INTDATA") + os.Unsetenv("INTDATA") } } @@ -173,7 +173,7 @@ func TestParseInt16(t *testing.T) { for _, testCase := range testCases { t.Logf("Testing: %+v", testCase) - os.Setenv("TESTSTRUCT_INTDATA", testCase.TestData) + os.Setenv("INTDATA", testCase.TestData) // If ErrorsAreCritical == false, then we should check only // equality of parsed data and valid data. @@ -214,7 +214,7 @@ func TestParseInt16(t *testing.T) { } } - os.Unsetenv("TESTSTRUCT_INTDATA") + os.Unsetenv("INTDATA") } } @@ -239,7 +239,7 @@ func TestParseInt32(t *testing.T) { for _, testCase := range testCases { t.Logf("Testing: %+v", testCase) - os.Setenv("TESTSTRUCT_INTDATA", testCase.TestData) + os.Setenv("INTDATA", testCase.TestData) // If ErrorsAreCritical == false, then we should check only // equality of parsed data and valid data. @@ -280,7 +280,7 @@ func TestParseInt32(t *testing.T) { } } - os.Unsetenv("TESTSTRUCT_INTDATA") + os.Unsetenv("INTDATA") } } @@ -305,7 +305,7 @@ func TestParseInt64(t *testing.T) { for _, testCase := range testCases { t.Logf("Testing: %+v", testCase) - os.Setenv("TESTSTRUCT_INTDATA", testCase.TestData) + os.Setenv("INTDATA", testCase.TestData) // If ErrorsAreCritical == false, then we should check only // equality of parsed data and valid data. @@ -346,7 +346,7 @@ func TestParseInt64(t *testing.T) { } } - os.Unsetenv("TESTSTRUCT_INTDATA") + os.Unsetenv("INTDATA") } } @@ -370,7 +370,7 @@ func TestParseUint8(t *testing.T) { for _, testCase := range testCases { t.Logf("Testing: %+v", testCase) - os.Setenv("TESTSTRUCT_UINTDATA", testCase.TestData) + os.Setenv("UINTDATA", testCase.TestData) // If ErrorsAreCritical == false, then we should check only // equality of parsed data and valid data. @@ -411,7 +411,7 @@ func TestParseUint8(t *testing.T) { } } - os.Unsetenv("TESTSTRUCT_UINTDATA") + os.Unsetenv("UINTDATA") } } @@ -435,7 +435,7 @@ func TestParseUint16(t *testing.T) { for _, testCase := range testCases { t.Logf("Testing: %+v", testCase) - os.Setenv("TESTSTRUCT_UINTDATA", testCase.TestData) + os.Setenv("UINTDATA", testCase.TestData) // If ErrorsAreCritical == false, then we should check only // equality of parsed data and valid data. @@ -476,7 +476,7 @@ func TestParseUint16(t *testing.T) { } } - os.Unsetenv("TESTSTRUCT_UINTDATA") + os.Unsetenv("UINTDATA") } } @@ -500,7 +500,7 @@ func TestParseUint32(t *testing.T) { for _, testCase := range testCases { t.Logf("Testing: %+v", testCase) - os.Setenv("TESTSTRUCT_UINTDATA", testCase.TestData) + os.Setenv("UINTDATA", testCase.TestData) // If ErrorsAreCritical == false, then we should check only // equality of parsed data and valid data. @@ -541,7 +541,7 @@ func TestParseUint32(t *testing.T) { } } - os.Unsetenv("TESTSTRUCT_UINTDATA") + os.Unsetenv("UINTDATA") } } @@ -565,7 +565,7 @@ func TestParseUint64(t *testing.T) { for _, testCase := range testCases { t.Logf("Testing: %+v", testCase) - os.Setenv("TESTSTRUCT_UINTDATA", testCase.TestData) + os.Setenv("UINTDATA", testCase.TestData) // If ErrorsAreCritical == false, then we should check only // equality of parsed data and valid data. @@ -606,7 +606,7 @@ func TestParseUint64(t *testing.T) { } } - os.Unsetenv("TESTSTRUCT_UINTDATA") + os.Unsetenv("UINTDATA") } } @@ -629,7 +629,7 @@ func TestParseFloat32(t *testing.T) { for _, testCase := range testCases { t.Logf("Testing: %+v", testCase) - os.Setenv("TESTSTRUCT_FLOATDATA", testCase.TestData) + os.Setenv("FLOATDATA", testCase.TestData) // If ErrorsAreCritical == false, then we should check only // equality of parsed data and valid data. @@ -670,7 +670,7 @@ func TestParseFloat32(t *testing.T) { } } - os.Unsetenv("TESTSTRUCT_FLOATDATA") + os.Unsetenv("FLOATDATA") } } @@ -692,7 +692,7 @@ func TestParseFloat64(t *testing.T) { for _, testCase := range testCases { t.Logf("Testing: %+v", testCase) - os.Setenv("TESTSTRUCT_FLOATDATA", testCase.TestData) + os.Setenv("FLOATDATA", testCase.TestData) // If ErrorsAreCritical == false, then we should check only // equality of parsed data and valid data. @@ -733,7 +733,7 @@ func TestParseFloat64(t *testing.T) { } } - os.Unsetenv("TESTSTRUCT_FLOATDATA") + os.Unsetenv("FLOATDATA") } } diff --git a/sec.go b/sec.go index f5a0a80..183e7a9 100644 --- a/sec.go +++ b/sec.go @@ -7,7 +7,6 @@ import ( "os" "reflect" "strconv" - "strings" ) var ( @@ -75,7 +74,9 @@ func Parse(structure interface{}, config *Options) error { } // Parse structure. - composeTree(value, strings.ToUpper(value.Type().Name())) + // As this is a very first function launch we should not use any + // prefixes. + composeTree(value, "") return parseEnv() } diff --git a/sec_test.go b/sec_test.go index 3ec653b..82b6ac0 100644 --- a/sec_test.go +++ b/sec_test.go @@ -116,14 +116,14 @@ func unsetenv(prefix string) { } func TestParseValidData(t *testing.T) { - setenv("TESTSTRUCT1_") - setenv("TESTSTRUCT1_TESTNEST_") - setenv("TESTSTRUCT1_TESTNESTANONYMOUS_") - setenv("TESTSTRUCT1_TESTNESTANONYMOUSPOINTER_") - setenv("TESTSTRUCT1_TESTNESTINTERFACE_") - setenv("TESTSTRUCT1_TESTNESTINTERFACEPOINTER_") - setenv("TESTSTRUCT1_TESTNESTPOINTER_") - setenv("TESTSTRUCT1_TESTUNEXPORTEDNEST_") + setenv("") + setenv("TESTNEST_") + setenv("TESTNESTANONYMOUS_") + setenv("TESTNESTANONYMOUSPOINTER_") + setenv("TESTNESTINTERFACE_") + setenv("TESTNESTINTERFACEPOINTER_") + setenv("TESTNESTPOINTER_") + setenv("TESTUNEXPORTEDNEST_") ts := &testStruct1{} err := Parse(ts, nil) @@ -134,14 +134,14 @@ func TestParseValidData(t *testing.T) { require.Nil(t, err) require.Equal(t, testBool, ts.TestBool) - unsetenv("TESTSTRUCT1_") - unsetenv("TESTSTRUCT1_TESTNEST_") - unsetenv("TESTSTRUCT1_TESTNESTANONYMOUS_") - unsetenv("TESTSTRUCT1_TESTNESTANONYMOUSPOINTER_") - unsetenv("TESTSTRUCT1_TESTNESTINTERFACE_") - unsetenv("TESTSTRUCT1_TESTNESTINTERFACEPOINTER_") - unsetenv("TESTSTRUCT1_TESTNESTPOINTER_") - unsetenv("TESTSTRUCT1_TESTUNEXPORTEDNEST_") + unsetenv("") + unsetenv("TESTNEST_") + unsetenv("TESTNESTANONYMOUS_") + unsetenv("TESTNESTANONYMOUSPOINTER_") + unsetenv("TESTNESTINTERFACE_") + unsetenv("TESTNESTINTERFACEPOINTER_") + unsetenv("TESTNESTPOINTER_") + unsetenv("TESTUNEXPORTEDNEST_") } func TestParseNotPointerToStructurePassed(t *testing.T) {