diff --git a/lib/rake/task_arguments.rb b/lib/rake/task_arguments.rb index ecd27ab75..24abebcea 100644 --- a/lib/rake/task_arguments.rb +++ b/lib/rake/task_arguments.rb @@ -95,7 +95,7 @@ def fetch(*args, &block) end def deconstruct_keys(keys) - @hash.slice(*keys) + keys ? @hash.slice(*keys) : to_hash end protected diff --git a/test/test_rake_task_arguments.rb b/test/test_rake_task_arguments.rb index 2706827e5..371b4e737 100644 --- a/test/test_rake_task_arguments.rb +++ b/test/test_rake_task_arguments.rb @@ -58,7 +58,8 @@ def test_deconstruct_keys omit "No stable pattern matching until Ruby 3.1 (testing #{RUBY_VERSION})" if RUBY_VERSION < "3.1" ta = Rake::TaskArguments.new([:a, :b, :c], [1, 2, 3]) - assert_equal ta.deconstruct_keys([:a, :b]), { a: 1, b: 2 } + assert_equal({ a: 1, b: 2, c: 3 }, ta.deconstruct_keys(nil)) + assert_equal({ a: 1, b: 2 }, ta.deconstruct_keys([:a, :b])) end def test_enumerable_behavior