From 0e75af74db30259ec355a7b79a1e257d5fe00eef Mon Sep 17 00:00:00 2001 From: Baibhav Vatsa Date: Fri, 11 Oct 2019 13:15:39 -0500 Subject: [PATCH] tpl: Last now accepts 0 as limit Modified the if conditional because of which last threw an error if 0 was passed as limit. The function now returns an empty slice if it is called with 0 as limit. The behavior of first and last is now the same when 0 is passed as limit. Also added tests to test the new behavior. Fixes #6419 --- tpl/collections/collections.go | 2 +- tpl/collections/collections_test.go | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/tpl/collections/collections.go b/tpl/collections/collections.go index eb6ecb9bb..95079436f 100644 --- a/tpl/collections/collections.go +++ b/tpl/collections/collections.go @@ -378,7 +378,7 @@ func (ns *Namespace) Last(limit interface{}, seq interface{}) (interface{}, erro return nil, err } - if limitv < 1 { + if limitv < 0 { return nil, errors.New("can't return negative/empty count of items from sequence") } diff --git a/tpl/collections/collections_test.go b/tpl/collections/collections_test.go index 781f44e0a..2c68a7766 100644 --- a/tpl/collections/collections_test.go +++ b/tpl/collections/collections_test.go @@ -495,6 +495,8 @@ func TestLast(t *testing.T) { {int64(2), []int{100, 200, 300}, []int{200, 300}}, {100, []int{100, 200}, []int{100, 200}}, {"1", []int{100, 200, 300}, []int{300}}, + {"0", []int{100, 200, 300}, []int{}}, + {"0", []string{"a", "b", "c"}, []string{}}, // errors {int64(-1), []int{100, 200, 300}, false}, {"noint", []int{100, 200, 300}, false},