common/maps: Do not return error on params dot access on incompatible types

This error was introduced in 0.56 and has shown some site breakage in the wild.

Fixes #6121
This commit is contained in:
Bjørn Erik Pedersen
2019-07-28 12:31:32 +02:00
parent 93d02aabe6
commit e393c6290e
3 changed files with 62 additions and 3 deletions

View File

@@ -16,8 +16,6 @@ package maps
import (
"strings"
"github.com/pkg/errors"
"github.com/spf13/cast"
)
@@ -72,7 +70,7 @@ func traverseNestedParams(keySegments []string, lookupFn func(key string) interf
v, key, owner := traverseParams(rest, m)
return v, key, owner, nil
default:
return nil, "", nil, errors.Errorf("unsupported Params type: %T", result)
return nil, "", nil, nil
}
}

View File

@@ -22,10 +22,14 @@ import (
func TestGetNestedParam(t *testing.T) {
m := map[string]interface{}{
"string": "value",
"first": 1,
"with_underscore": 2,
"nested": map[string]interface{}{
"color": "blue",
"nestednested": map[string]interface{}{
"color": "green",
},
},
}
@@ -41,5 +45,7 @@ func TestGetNestedParam(t *testing.T) {
assert.Equal(1, must("First", "_", m))
assert.Equal(2, must("with_underscore", "_", m))
assert.Equal("blue", must("nested_color", "_", m))
assert.Equal("green", must("nested.nestednested.color", ".", m))
assert.Nil(must("string.name", ".", m))
}