From abbd6ffd71973a7ce7bdea24218a9fb01974a9d2 Mon Sep 17 00:00:00 2001 From: Michael Miller Date: Mon, 23 Jan 2023 11:55:52 -0700 Subject: [PATCH] Fix splat argument expansion in method redefinition The constructed previous_def call was malformed for stub methods. Resolves the original issue in https://github.com/icy-arctic-fox/spectator/issues/49 --- spec/issues/github_issue_49_spec.cr | 6 ++++++ src/spectator/mocks/stubbable.cr | 8 +++----- 2 files changed, 9 insertions(+), 5 deletions(-) create mode 100644 spec/issues/github_issue_49_spec.cr diff --git a/spec/issues/github_issue_49_spec.cr b/spec/issues/github_issue_49_spec.cr new file mode 100644 index 0000000..d6a3417 --- /dev/null +++ b/spec/issues/github_issue_49_spec.cr @@ -0,0 +1,6 @@ +require "../spec_helper" + +# https://github.com/icy-arctic-fox/spectator/issues/49 +Spectator.describe "GitHub Issue #49" do + mock File +end diff --git a/src/spectator/mocks/stubbable.cr b/src/spectator/mocks/stubbable.cr index 119111d..3a14887 100644 --- a/src/spectator/mocks/stubbable.cr +++ b/src/spectator/mocks/stubbable.cr @@ -133,13 +133,12 @@ module Spectator if method.splat_index method.args.each_with_index do |arg, i| if i == method.splat_index - original += '*' if arg.internal_name && arg.internal_name.size > 0 - original += "#{arg.internal_name}, " + original += "*#{arg.internal_name}, " end original += "**#{method.double_splat}, " if method.double_splat elsif i > method.splat_index - original += "#{arg.name}: #{arg.internal_name}" + original += "#{arg.name}: #{arg.internal_name}, " else original += "#{arg.internal_name}, " end @@ -283,9 +282,8 @@ module Spectator if method.splat_index method.args.each_with_index do |arg, i| if i == method.splat_index - original += '*' if arg.internal_name && arg.internal_name.size > 0 - original += "#{arg.internal_name}, " + original += "*#{arg.internal_name}, " end original += "**#{method.double_splat}, " if method.double_splat elsif i > method.splat_index