From 531d0fb261f428accfc0659b1232d9bf3c6ca873 Mon Sep 17 00:00:00 2001 From: Martin Jorn Rogalla Date: Thu, 26 Feb 2015 22:12:06 +0100 Subject: [PATCH 1/4] Sort will now raise error on nil object array input. Sort will now throw an error when a nil object array is given as input. See issue #3491 for more information. Signed-off-by: Martin Jorn Rogalla --- lib/jekyll/filters.rb | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/jekyll/filters.rb b/lib/jekyll/filters.rb index d9c84fe8..e71710c9 100644 --- a/lib/jekyll/filters.rb +++ b/lib/jekyll/filters.rb @@ -222,6 +222,9 @@ module Jekyll # # Returns the filtered array of objects def sort(input, property = nil, nils = "first") + if input.nil? + raise ArgumentError.new("Invalid object array given. Object array is null.") + end if property.nil? input.sort else From 0565308ce67be10530227997cabb58a55fb4f730 Mon Sep 17 00:00:00 2001 From: Martin Jorn Rogalla Date: Sun, 1 Mar 2015 09:40:32 +0100 Subject: [PATCH 2/4] Added test to check on nil input for sort filter. - Added a test to check if the sort filter will raise the correct exception on given nil input. - Improved error message and used "nil" consistently. Signed-off-by: Martin Jorn Rogalla --- lib/jekyll/filters.rb | 2 +- test/test_filters.rb | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/jekyll/filters.rb b/lib/jekyll/filters.rb index e71710c9..ffdc3b73 100644 --- a/lib/jekyll/filters.rb +++ b/lib/jekyll/filters.rb @@ -223,7 +223,7 @@ module Jekyll # Returns the filtered array of objects def sort(input, property = nil, nils = "first") if input.nil? - raise ArgumentError.new("Invalid object array given. Object array is null.") + raise ArgumentError.new("Nil object array given. Sort cannot process an empty object array.") end if property.nil? input.sort diff --git a/test/test_filters.rb b/test/test_filters.rb index eec08564..642a6114 100644 --- a/test/test_filters.rb +++ b/test/test_filters.rb @@ -280,6 +280,12 @@ class TestFilters < JekyllUnitTest end context "sort filter" do + should "raise Exception when input is nil" do + err = assert_raises ArgumentError do + @filter.sort(nil) + end + assert_equal "Nil object array given. Sort cannot process an empty object array.", err.message + end should "return sorted numbers" do assert_equal [1, 2, 2.2, 3], @filter.sort([3, 2.2, 2, 1]) end From 78af3c5018337368ee113b4b690b2b1c9ae55f2b Mon Sep 17 00:00:00 2001 From: Martin Jorn Rogalla Date: Sun, 1 Mar 2015 09:51:59 +0100 Subject: [PATCH 3/4] Improved clarity of sort nil input error message. Signed-off-by: Martin Jorn Rogalla --- lib/jekyll/filters.rb | 2 +- test/test_filters.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/jekyll/filters.rb b/lib/jekyll/filters.rb index ffdc3b73..5ca87edc 100644 --- a/lib/jekyll/filters.rb +++ b/lib/jekyll/filters.rb @@ -223,7 +223,7 @@ module Jekyll # Returns the filtered array of objects def sort(input, property = nil, nils = "first") if input.nil? - raise ArgumentError.new("Nil object array given. Sort cannot process an empty object array.") + raise ArgumentError.new("Sort: cannot sort a null object.") end if property.nil? input.sort diff --git a/test/test_filters.rb b/test/test_filters.rb index 642a6114..be8ba373 100644 --- a/test/test_filters.rb +++ b/test/test_filters.rb @@ -284,7 +284,7 @@ class TestFilters < JekyllUnitTest err = assert_raises ArgumentError do @filter.sort(nil) end - assert_equal "Nil object array given. Sort cannot process an empty object array.", err.message + assert_equal "Sort: cannot sort a null object.", err.message end should "return sorted numbers" do assert_equal [1, 2, 2.2, 3], @filter.sort([3, 2.2, 2, 1]) From 92a9582733dfee0f359e491a8fae236e91087a54 Mon Sep 17 00:00:00 2001 From: Martin Jorn Rogalla Date: Sun, 1 Mar 2015 11:16:08 +0100 Subject: [PATCH 4/4] Corrected error message as suggested by @parkr. Signed-off-by: Martin Jorn Rogalla --- lib/jekyll/filters.rb | 2 +- test/test_filters.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/jekyll/filters.rb b/lib/jekyll/filters.rb index 5ca87edc..12d4eb5a 100644 --- a/lib/jekyll/filters.rb +++ b/lib/jekyll/filters.rb @@ -223,7 +223,7 @@ module Jekyll # Returns the filtered array of objects def sort(input, property = nil, nils = "first") if input.nil? - raise ArgumentError.new("Sort: cannot sort a null object.") + raise ArgumentError.new("Cannot sort a null object.") end if property.nil? input.sort diff --git a/test/test_filters.rb b/test/test_filters.rb index be8ba373..82d31922 100644 --- a/test/test_filters.rb +++ b/test/test_filters.rb @@ -284,7 +284,7 @@ class TestFilters < JekyllUnitTest err = assert_raises ArgumentError do @filter.sort(nil) end - assert_equal "Sort: cannot sort a null object.", err.message + assert_equal "Cannot sort a null object.", err.message end should "return sorted numbers" do assert_equal [1, 2, 2.2, 3], @filter.sort([3, 2.2, 2, 1])