summaryrefslogtreecommitdiffstats
path: root/tpl
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2018-07-01 20:34:02 +0200
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2018-07-01 20:34:02 +0200
commitf8212d20009c4b5cc6e1ec733d09531eb6525d9f (patch)
treeb6176bb32da6002bbed2a0fee6c78bf8fd4f00ab /tpl
parent78e8a744b34e885e8169bf0a8bb64c73288e555a (diff)
tpl/collections: Return en empty slice in after instead of error
When the given index is out of bounds. So it can safely be used with `with` etc. without extra length checking. Fixes #4894
Diffstat (limited to 'tpl')
-rw-r--r--tpl/collections/collections.go2
-rw-r--r--tpl/collections/collections_test.go7
2 files changed, 5 insertions, 4 deletions
diff --git a/tpl/collections/collections.go b/tpl/collections/collections.go
index d1b97677f..dd418d7d2 100644
--- a/tpl/collections/collections.go
+++ b/tpl/collections/collections.go
@@ -74,7 +74,7 @@ func (ns *Namespace) After(index interface{}, seq interface{}) (interface{}, err
}
if indexv >= seqv.Len() {
- return nil, errors.New("no items left")
+ return seqv.Slice(0, 0).Interface(), nil
}
return seqv.Slice(indexv, seqv.Len()).Interface(), nil
diff --git a/tpl/collections/collections_test.go b/tpl/collections/collections_test.go
index ac2c2fe63..c3e88f36f 100644
--- a/tpl/collections/collections_test.go
+++ b/tpl/collections/collections_test.go
@@ -49,12 +49,13 @@ func TestAfter(t *testing.T) {
expect interface{}
}{
{int(2), []string{"a", "b", "c", "d"}, []string{"c", "d"}},
- {int32(3), []string{"a", "b"}, false},
+ {int32(3), []string{"a", "b"}, []string{}},
{int64(2), []int{100, 200, 300}, []int{300}},
- {100, []int{100, 200}, false},
+ {100, []int{100, 200}, []int{}},
{"1", []int{100, 200, 300}, []int{200, 300}},
{int64(-1), []int{100, 200, 300}, false},
{"noint", []int{100, 200, 300}, false},
+ {2, []string{}, []string{}},
{1, nil, false},
{nil, []int{100}, false},
{1, t, false},
@@ -70,7 +71,7 @@ func TestAfter(t *testing.T) {
}
require.NoError(t, err, errMsg)
- assert.Equal(t, test.expect, result, errMsg)
+ require.Equal(t, test.expect, result, errMsg)
}
}