mirror of
https://github.com/spf13/viper
synced 2025-05-06 04:07:17 +00:00
Also consider explicitly set empty dicts as leaf nodes
This commit is contained in:
parent
42406af567
commit
dd14d2c73f
2 changed files with 7 additions and 0 deletions
4
viper.go
4
viper.go
|
@ -1789,6 +1789,10 @@ func (v *Viper) flattenAndMergeMap(shadow map[string]bool, m map[string]interfac
|
||||||
shadow[strings.ToLower(fullKey)] = true
|
shadow[strings.ToLower(fullKey)] = true
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
if len(m2) == 0 {
|
||||||
|
// empty dict explicitly present in the map
|
||||||
|
shadow[strings.ToLower(fullKey)] = true
|
||||||
|
}
|
||||||
// recursively merge to shadow map
|
// recursively merge to shadow map
|
||||||
shadow = v.flattenAndMergeMap(shadow, m2, fullKey)
|
shadow = v.flattenAndMergeMap(shadow, m2, fullKey)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1825,6 +1825,7 @@ func TestEmptySection(t *testing.T) {
|
||||||
key:
|
key:
|
||||||
subkey:
|
subkey:
|
||||||
another_key:
|
another_key:
|
||||||
|
empty_dict: {}
|
||||||
`
|
`
|
||||||
|
|
||||||
v := New()
|
v := New()
|
||||||
|
@ -1837,6 +1838,7 @@ another_key:
|
||||||
assert.NotContains(t, keys, "key") // Only empty leaf nodes are returned
|
assert.NotContains(t, keys, "key") // Only empty leaf nodes are returned
|
||||||
assert.Contains(t, keys, "key.subkey")
|
assert.Contains(t, keys, "key.subkey")
|
||||||
assert.Contains(t, keys, "another_key")
|
assert.Contains(t, keys, "another_key")
|
||||||
|
assert.Contains(t, keys, "empty_dict")
|
||||||
assert.NotContains(t, keys, "is_known")
|
assert.NotContains(t, keys, "is_known")
|
||||||
assert.Contains(t, keys, "has_default")
|
assert.Contains(t, keys, "has_default")
|
||||||
|
|
||||||
|
@ -1845,6 +1847,7 @@ another_key:
|
||||||
assert.NotContains(t, vars, "key") // Only empty leaf nodes are returned
|
assert.NotContains(t, vars, "key") // Only empty leaf nodes are returned
|
||||||
assert.Contains(t, vars, "key.subkey")
|
assert.Contains(t, vars, "key.subkey")
|
||||||
assert.Contains(t, vars, "another_key")
|
assert.Contains(t, vars, "another_key")
|
||||||
|
assert.Contains(t, vars, "empty_dict")
|
||||||
assert.NotContains(t, vars, "is_known")
|
assert.NotContains(t, vars, "is_known")
|
||||||
assert.Contains(t, vars, "has_default")
|
assert.Contains(t, vars, "has_default")
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue