Do not add passed top level structure name to environment variables.
This commit is contained in:
parent
2b9eb769d6
commit
1e54436f69
@ -15,7 +15,7 @@ func TestParseString(t *testing.T) {
|
|||||||
StringData string
|
StringData string
|
||||||
}
|
}
|
||||||
|
|
||||||
os.Setenv("TESTSTRUCT_STRINGDATA", "test")
|
os.Setenv("STRINGDATA", "test")
|
||||||
|
|
||||||
s := &testStruct{}
|
s := &testStruct{}
|
||||||
err := Parse(s, nil)
|
err := Parse(s, nil)
|
||||||
@ -51,7 +51,7 @@ func TestParseBoolean(t *testing.T) {
|
|||||||
|
|
||||||
for _, testCase := range testCases {
|
for _, testCase := range testCases {
|
||||||
t.Logf("Testing: %+v", testCase)
|
t.Logf("Testing: %+v", testCase)
|
||||||
os.Setenv("TESTSTRUCT_BOOLDATA", testCase.TestData)
|
os.Setenv("BOOLDATA", testCase.TestData)
|
||||||
|
|
||||||
// If ErrorsAreCritical == false, then we should check only
|
// If ErrorsAreCritical == false, then we should check only
|
||||||
// equality of parsed data and valid data.
|
// equality of parsed data and valid data.
|
||||||
@ -82,7 +82,7 @@ func TestParseBoolean(t *testing.T) {
|
|||||||
require.Equal(t, errNotBool, err1)
|
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 {
|
for _, testCase := range testCases {
|
||||||
t.Logf("Testing: %+v", testCase)
|
t.Logf("Testing: %+v", testCase)
|
||||||
os.Setenv("TESTSTRUCT_INTDATA", testCase.TestData)
|
os.Setenv("INTDATA", testCase.TestData)
|
||||||
|
|
||||||
// If ErrorsAreCritical == false, then we should check only
|
// If ErrorsAreCritical == false, then we should check only
|
||||||
// equality of parsed data and valid data.
|
// 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 {
|
for _, testCase := range testCases {
|
||||||
t.Logf("Testing: %+v", testCase)
|
t.Logf("Testing: %+v", testCase)
|
||||||
os.Setenv("TESTSTRUCT_INTDATA", testCase.TestData)
|
os.Setenv("INTDATA", testCase.TestData)
|
||||||
|
|
||||||
// If ErrorsAreCritical == false, then we should check only
|
// If ErrorsAreCritical == false, then we should check only
|
||||||
// equality of parsed data and valid data.
|
// 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 {
|
for _, testCase := range testCases {
|
||||||
t.Logf("Testing: %+v", testCase)
|
t.Logf("Testing: %+v", testCase)
|
||||||
os.Setenv("TESTSTRUCT_INTDATA", testCase.TestData)
|
os.Setenv("INTDATA", testCase.TestData)
|
||||||
|
|
||||||
// If ErrorsAreCritical == false, then we should check only
|
// If ErrorsAreCritical == false, then we should check only
|
||||||
// equality of parsed data and valid data.
|
// 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 {
|
for _, testCase := range testCases {
|
||||||
t.Logf("Testing: %+v", testCase)
|
t.Logf("Testing: %+v", testCase)
|
||||||
os.Setenv("TESTSTRUCT_INTDATA", testCase.TestData)
|
os.Setenv("INTDATA", testCase.TestData)
|
||||||
|
|
||||||
// If ErrorsAreCritical == false, then we should check only
|
// If ErrorsAreCritical == false, then we should check only
|
||||||
// equality of parsed data and valid data.
|
// 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 {
|
for _, testCase := range testCases {
|
||||||
t.Logf("Testing: %+v", testCase)
|
t.Logf("Testing: %+v", testCase)
|
||||||
os.Setenv("TESTSTRUCT_UINTDATA", testCase.TestData)
|
os.Setenv("UINTDATA", testCase.TestData)
|
||||||
|
|
||||||
// If ErrorsAreCritical == false, then we should check only
|
// If ErrorsAreCritical == false, then we should check only
|
||||||
// equality of parsed data and valid data.
|
// 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 {
|
for _, testCase := range testCases {
|
||||||
t.Logf("Testing: %+v", testCase)
|
t.Logf("Testing: %+v", testCase)
|
||||||
os.Setenv("TESTSTRUCT_UINTDATA", testCase.TestData)
|
os.Setenv("UINTDATA", testCase.TestData)
|
||||||
|
|
||||||
// If ErrorsAreCritical == false, then we should check only
|
// If ErrorsAreCritical == false, then we should check only
|
||||||
// equality of parsed data and valid data.
|
// 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 {
|
for _, testCase := range testCases {
|
||||||
t.Logf("Testing: %+v", testCase)
|
t.Logf("Testing: %+v", testCase)
|
||||||
os.Setenv("TESTSTRUCT_UINTDATA", testCase.TestData)
|
os.Setenv("UINTDATA", testCase.TestData)
|
||||||
|
|
||||||
// If ErrorsAreCritical == false, then we should check only
|
// If ErrorsAreCritical == false, then we should check only
|
||||||
// equality of parsed data and valid data.
|
// 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 {
|
for _, testCase := range testCases {
|
||||||
t.Logf("Testing: %+v", testCase)
|
t.Logf("Testing: %+v", testCase)
|
||||||
os.Setenv("TESTSTRUCT_UINTDATA", testCase.TestData)
|
os.Setenv("UINTDATA", testCase.TestData)
|
||||||
|
|
||||||
// If ErrorsAreCritical == false, then we should check only
|
// If ErrorsAreCritical == false, then we should check only
|
||||||
// equality of parsed data and valid data.
|
// 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 {
|
for _, testCase := range testCases {
|
||||||
t.Logf("Testing: %+v", testCase)
|
t.Logf("Testing: %+v", testCase)
|
||||||
os.Setenv("TESTSTRUCT_FLOATDATA", testCase.TestData)
|
os.Setenv("FLOATDATA", testCase.TestData)
|
||||||
|
|
||||||
// If ErrorsAreCritical == false, then we should check only
|
// If ErrorsAreCritical == false, then we should check only
|
||||||
// equality of parsed data and valid data.
|
// 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 {
|
for _, testCase := range testCases {
|
||||||
t.Logf("Testing: %+v", testCase)
|
t.Logf("Testing: %+v", testCase)
|
||||||
os.Setenv("TESTSTRUCT_FLOATDATA", testCase.TestData)
|
os.Setenv("FLOATDATA", testCase.TestData)
|
||||||
|
|
||||||
// If ErrorsAreCritical == false, then we should check only
|
// If ErrorsAreCritical == false, then we should check only
|
||||||
// equality of parsed data and valid data.
|
// equality of parsed data and valid data.
|
||||||
@ -733,7 +733,7 @@ func TestParseFloat64(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
os.Unsetenv("TESTSTRUCT_FLOATDATA")
|
os.Unsetenv("FLOATDATA")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
5
sec.go
5
sec.go
@ -7,7 +7,6 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"reflect"
|
"reflect"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -75,7 +74,9 @@ func Parse(structure interface{}, config *Options) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Parse structure.
|
// 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()
|
return parseEnv()
|
||||||
}
|
}
|
||||||
|
32
sec_test.go
32
sec_test.go
@ -116,14 +116,14 @@ func unsetenv(prefix string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestParseValidData(t *testing.T) {
|
func TestParseValidData(t *testing.T) {
|
||||||
setenv("TESTSTRUCT1_")
|
setenv("")
|
||||||
setenv("TESTSTRUCT1_TESTNEST_")
|
setenv("TESTNEST_")
|
||||||
setenv("TESTSTRUCT1_TESTNESTANONYMOUS_")
|
setenv("TESTNESTANONYMOUS_")
|
||||||
setenv("TESTSTRUCT1_TESTNESTANONYMOUSPOINTER_")
|
setenv("TESTNESTANONYMOUSPOINTER_")
|
||||||
setenv("TESTSTRUCT1_TESTNESTINTERFACE_")
|
setenv("TESTNESTINTERFACE_")
|
||||||
setenv("TESTSTRUCT1_TESTNESTINTERFACEPOINTER_")
|
setenv("TESTNESTINTERFACEPOINTER_")
|
||||||
setenv("TESTSTRUCT1_TESTNESTPOINTER_")
|
setenv("TESTNESTPOINTER_")
|
||||||
setenv("TESTSTRUCT1_TESTUNEXPORTEDNEST_")
|
setenv("TESTUNEXPORTEDNEST_")
|
||||||
|
|
||||||
ts := &testStruct1{}
|
ts := &testStruct1{}
|
||||||
err := Parse(ts, nil)
|
err := Parse(ts, nil)
|
||||||
@ -134,14 +134,14 @@ func TestParseValidData(t *testing.T) {
|
|||||||
require.Nil(t, err)
|
require.Nil(t, err)
|
||||||
require.Equal(t, testBool, ts.TestBool)
|
require.Equal(t, testBool, ts.TestBool)
|
||||||
|
|
||||||
unsetenv("TESTSTRUCT1_")
|
unsetenv("")
|
||||||
unsetenv("TESTSTRUCT1_TESTNEST_")
|
unsetenv("TESTNEST_")
|
||||||
unsetenv("TESTSTRUCT1_TESTNESTANONYMOUS_")
|
unsetenv("TESTNESTANONYMOUS_")
|
||||||
unsetenv("TESTSTRUCT1_TESTNESTANONYMOUSPOINTER_")
|
unsetenv("TESTNESTANONYMOUSPOINTER_")
|
||||||
unsetenv("TESTSTRUCT1_TESTNESTINTERFACE_")
|
unsetenv("TESTNESTINTERFACE_")
|
||||||
unsetenv("TESTSTRUCT1_TESTNESTINTERFACEPOINTER_")
|
unsetenv("TESTNESTINTERFACEPOINTER_")
|
||||||
unsetenv("TESTSTRUCT1_TESTNESTPOINTER_")
|
unsetenv("TESTNESTPOINTER_")
|
||||||
unsetenv("TESTSTRUCT1_TESTUNEXPORTEDNEST_")
|
unsetenv("TESTUNEXPORTEDNEST_")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestParseNotPointerToStructurePassed(t *testing.T) {
|
func TestParseNotPointerToStructurePassed(t *testing.T) {
|
||||||
|
Loading…
Reference in New Issue
Block a user