diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index eced25ea08c81b69137bca135cda933f8083e9a5..3bc866081ceb78deb4e7c474fe5a8bee55d30972 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -10,7 +10,7 @@ default: - docker variables: - RUBY_VERSION: '2.7' + RUBY_VERSION: '3.0' REDIS_HOST: redis services: @@ -63,7 +63,7 @@ spec:default: path: coverage/coverage.xml parallel: matrix: - - RUBY_VERSION: ['2.7', '3.0', '3.1'] + - RUBY_VERSION: ['2.7', '3.0', '3.1', '3.2'] spec:without_rails: stage: test diff --git a/lib/gitlab/experiment/rspec.rb b/lib/gitlab/experiment/rspec.rb index ef95b24506a00aa8e023b964889eaf30e50abc30..3b7882cd92f25a7d93c61f63b201e59d957e4209 100644 --- a/lib/gitlab/experiment/rspec.rb +++ b/lib/gitlab/experiment/rspec.rb @@ -28,6 +28,7 @@ module Gitlab RSpecMocks.track_gitlab_experiment_receiver(original_method, receiver) super end + ruby2_keywords :proxy_method_invoked if respond_to?(:ruby2_keywords, true) end end @@ -69,8 +70,8 @@ module Gitlab def wrapped_experiment_chain_for(klass) @__wrapped_experiment_chains ||= {} @__wrapped_experiment_chains[klass.name || klass.object_id] ||= begin - allow(klass).to receive(:new).and_wrap_original do |method, *args, &original_block| - RSpecMocks.bind_gitlab_experiment_receiver(method).call(*args).tap do |instance| + allow(klass).to receive(:new).and_wrap_original do |method, *args, **kwargs, &original_block| + RSpecMocks.bind_gitlab_experiment_receiver(method).call(*args, **kwargs).tap do |instance| wrapped = @__wrapped_experiments[instance.instance_variable_get(:@_name)] wrapped&.blocks&.each { |b| b.call(instance, wrapped) }