From 68bac59cabdaab39286ef77fd3f2341c77104e90 Mon Sep 17 00:00:00 2001 From: Michael Miller Date: Sat, 28 Mar 2020 11:41:49 -0600 Subject: [PATCH] Hacky solution for https://gitlab.com/arctic-fox/spectator/-/issues/44 Don't use a proc stub, which doesn't support arguments. --- src/spectator/mocks/stubs.cr | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/src/spectator/mocks/stubs.cr b/src/spectator/mocks/stubs.cr index ca28a4a..cc2d373 100644 --- a/src/spectator/mocks/stubs.cr +++ b/src/spectator/mocks/stubs.cr @@ -50,12 +50,9 @@ module Spectator::Mocks %} {% if body && !body.is_a?(Nop) %} - %source = ::Spectator::Source.new({{_file}}, {{_line}}) - %proc = ->{ + def {{receiver}}%method({{params.splat}}){% if definition.is_a?(TypeDeclaration) %} : {{definition.type}}{% end %} {{body.body}} - } - %ds = ::Spectator::Mocks::ProcMethodStub.new({{name.symbolize}}, %source, %proc) - ::Spectator::SpecBuilder.add_default_stub({{@type.name}}, %ds) + end {% end %} def {{receiver}}{{name}}({{params.splat}}){% if definition.is_a?(TypeDeclaration) %} : {{definition.type}}{% end %} @@ -66,8 +63,15 @@ module Spectator::Mocks if (%stub = %harness.mocks.find_stub(self, %call)) return %stub.call!(%args) { {{original}}({{args.splat}}) } end + + {% if body && !body.is_a?(Nop) %} + %method({{args.splat}}) + {% else %} + {{original}}({{args.splat}}) + {% end %} + else + {{original}}({{args.splat}}) end - {{original}}({{args.splat}}) end def {{receiver}}{{name}}({{params.splat}}){% if definition.is_a?(TypeDeclaration) %} : {{definition.type}}{% end %} @@ -78,9 +82,18 @@ module Spectator::Mocks if (%stub = %harness.mocks.find_stub(self, %call)) return %stub.call!(%args) { {{original}}({{args.splat}}) { |*%ya| yield *%ya } } end - end - {{original}}({{args.splat}}) do |*%yield_args| - yield *%yield_args + + {% if body && !body.is_a?(Nop) %} + %method({{args.splat}}) { {{original}}({{args.splat}}) { |*%ya| yield *%ya } } + {% else %} + {{original}}({{args.splat}}) do |*%yield_args| + yield *%yield_args + end + {% end %} + else + {{original}}({{args.splat}}) do |*%yield_args| + yield *%yield_args + end end end end